فروشگاه اینترنتی · ۱۴۰۵

انتقال یک فروشگاه پرفروش از ووکامرس

برای فروشگاهی که سال‌ها با ووکامرس کار می‌کرد، از پایگاه داده تا سرور فروشگاه تازه‌ای ساختم. بعد سفارش‌ها و حساب‌های مشتریان را به آن منتقل کردم.

۲۸ از ۲۸ نسخهٔ در حال اجرا

تعداد نسخه‌ها و زمان‌ها از همان تمرین است؛ ترافیکِ نشان‌داده‌شده فقط نمایشی است.

۶۵٬۵۲۱

سفارش به‌همراه سوابق خرید منتقل شد

حدود ۸۸٬۰۰۰

حساب مشتری منتقل‌شده

۱۱٬۶۹۷

سفارش پرداخت‌شده روی پلتفرم تازه، از راه‌اندازی در ۲۳ شهریور ۱۴۰۵

۳۳۲

سفارش پرداخت‌شده در شلوغ‌ترین روز تا امروز

۰

درخواست ناموفق در آزمون بار با ۱۰٬۰۰۰ خریدار شبیه‌سازی‌شده

آمار تا ۱۴ آبان ۱۴۰۵

انتقال

حساب‌های مشتریان، سفارش‌های قبلی و خریدهای مهمان را منتقل کردم. ۱٬۶۹۶ مشتری در سایت قبلی سبد خرید تکراری داشتند. سبدها را ادغام کردم و همهٔ اقلام پرداخت‌شده حفظ شدند.

پلتفرم

فروشگاه و پنل مدیریت را با Next.js ساختم و برای ورود، سرویس جدا گذاشتم. بک‌اند Strapi از PostgreSQL و Redis استفاده می‌کند. مشتریان می‌توانند با دو درگاه بانکی، سرویس خرید اقساطی یا کیف پول فروشگاه پرداخت کنند.

موجودی انبار و قیمت‌ها

موجودی فروشگاه با نرم‌افزار حسابداری همگام می‌شود. از ۵٬۳۷۸ بار اجرا، ۹۸٫۵٪ موفق بود. قیمت‌ها هم حدوداً هر پنج دقیقه با نرخ تتر به‌روز می‌شوند. اگر دریافت نرخ ناموفق باشد، قیمت‌ها ثابت می‌مانند.

سرعت فروشگاه و آزمون بار

در یک آزمون، زمان نمایش محتوای اصلی فهرست محصولات روی گوشی از ۶٫۵ به حدود ۱٫۵ ثانیه رسید و حجم جاوااسکریپت بار اول ۳۵٪ کمتر شد. پیش از راه‌اندازی، رفتار ۱۰٬۰۰۰ خریدار هم‌زمان را شبیه‌سازی کردم. هیچ‌یک از ۳۸۱ هزار درخواست خطا نداد و ۹۵٪ درخواست‌ها در کمتر از ۲۴۱ میلی‌ثانیه پاسخ گرفتند.

زمان نمایش محصولات روی گوشی

این مقایسه زمان نمایش محتوای اصلی را در یک آزمون نشان می‌دهد.

قبل۰٫۰ثانیه
بعد۰٫۰ثانیه

نگهداری

فروشگاه روی Docker Swarm اجرا می‌شود و از هر سرویس چند نمونه در حال اجراست. در یک تمرین، نیمی از ۲۸ نمونهٔ فروشگاه را متوقف کردم و ظرفیت کامل در ۸ ثانیه برگشت. انتشار به روش blue-green را هم پیش از انتشار عمومی در محیط آزمایشی بررسی کردم.

ابزارها

Next.js · React · Strapi · PostgreSQL · Redis · BullMQ · Docker Swarm · Sentry

برای همکاری دربارهٔ پروژه‌تان بنویسید.

yazdannaderi@hotmail.com