نحوه مقاومت در برابر بارهای زیاد روی سیستم: ما در مورد آماده سازی در مقیاس بزرگ برای جمعه سیاه صحبت می کنیم

هی هابر!

در سال 2017، در جمعه سیاه، بار تقریباً یک و نیم برابر افزایش یافت و سرورهای ما در حد مجاز بودند. در طول سال، تعداد مشتریان به طور قابل توجهی افزایش یافته است و مشخص شد که بدون آماده سازی اولیه دقیق، این پلت فرم ممکن است به سادگی بارهای سال 2018 را تحمل نکند.

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

CTO ما آندری چیژ (chizh_andrey) می گوید که چگونه برای بلک فرایدی 2018 آماده شدیم، چه اقداماتی برای جلوگیری از سقوط انجام دادیم، و البته نتایج این آمادگی دقیق.

نحوه مقاومت در برابر بارهای زیاد روی سیستم: ما در مورد آماده سازی در مقیاس بزرگ برای جمعه سیاه صحبت می کنیم

امروز می‌خواهم در مورد آمادگی‌ها برای جمعه سیاه 2018 صحبت کنم. چرا اکنون، وقتی که بیشتر فروش‌های عمده پشت سر ما هستند؟ ما حدود یک سال قبل از رویدادهای بزرگ شروع به آماده سازی کردیم و از طریق آزمون و خطا راه حل بهینه را پیدا کردیم. توصیه می کنیم از قبل مراقب فصول گرم سال باشید و از کلاهبرداری هایی که ممکن است در نامناسب ترین لحظه ظاهر شوند، جلوگیری کنید.
این مواد برای همه کسانی که می خواهند حداکثر سود را از چنین سهامی فشار دهند مفید خواهد بود، زیرا جنبه فنی موضوع در اینجا کمتر از جنبه بازاریابی نیست.

ویژگی های ترافیک در فروش های بزرگ

برخلاف تصور رایج، جمعه سیاه فقط یک روز در سال نیست، بلکه تقریباً یک هفته کامل است: اولین پیشنهادهای تخفیف 7 تا 8 روز قبل از فروش می رسد. ترافیک وب سایت به آرامی در طول هفته شروع به رشد می کند، در روز جمعه به اوج خود می رسد و در روز شنبه به شدت کاهش می یابد و به سطوح معمولی فروشگاه می رسد.

نحوه مقاومت در برابر بارهای زیاد روی سیستم: ما در مورد آماده سازی در مقیاس بزرگ برای جمعه سیاه صحبت می کنیم

این مهم است که در نظر گرفته شود: فروشگاه های آنلاین به ویژه نسبت به هرگونه "کاهش سرعت" در سیستم حساس می شوند. علاوه بر این، خط خبرنامه ایمیل ما نیز افزایش قابل توجهی در تعداد ارسال‌ها داشته است.

از نظر استراتژیک برای ما مهم است که جمعه سیاه را بدون تصادف پشت سر بگذاریم، زیرا... مهمترین عملکرد وب سایت ها و خبرنامه های فروشگاهی به عملکرد پلتفرم بستگی دارد، یعنی:

  • پیگیری و صدور توصیه های محصول،
  • صدور مواد مرتبط (به عنوان مثال، تصاویر طراحی بلوک های توصیه، مانند فلش، آرم، نمادها و سایر عناصر بصری)،
  • ارائه تصاویر محصول با اندازه مورد نیاز (برای این منظور ما "ImageResizer" را داریم - یک زیرسیستم که یک تصویر را از سرور فروشگاه دانلود می کند، آن را به اندازه مورد نیاز فشرده می کند و از طریق سرورهای کش، تصاویری با اندازه مورد نیاز برای هر محصول تولید می کند. هر بلوک توصیه).

در واقع، در جمعه سیاه 2019، بار سرویس تا 40٪ افزایش یافته است. تعداد رویدادهایی که سیستم راکت خرده فروشی در سایت های فروشگاه آنلاین ردیابی و پردازش می کند از 5 به 8 هزار درخواست در ثانیه افزایش یافته است. با توجه به اینکه برای بارهای جدی تری آماده می شدیم، از چنین موجی به راحتی جان سالم به در بردیم.

نحوه مقاومت در برابر بارهای زیاد روی سیستم: ما در مورد آماده سازی در مقیاس بزرگ برای جمعه سیاه صحبت می کنیم

آمادگی عمومی

جمعه سیاه زمان شلوغی برای تمام خرده فروشی ها و به ویژه تجارت الکترونیک است. تعداد کاربران و فعالیت آنها در این زمان به طور قابل توجهی در حال افزایش است، بنابراین ما، مانند همیشه، به طور کامل برای این زمان شلوغ آماده شده ایم. بیایید در اینجا این واقعیت را اضافه کنیم که ما فروشگاه های آنلاین زیادی نه تنها در روسیه، بلکه در اروپا نیز متصل داریم، جایی که هیجان بسیار بالاتر است، و سطح شور و اشتیاق ما بدتر از سریال های برزیلی است. برای آمادگی کامل برای افزایش بار چه باید کرد؟

کار با سرورها

ابتدا لازم بود که مشخص شود برای افزایش قدرت سرور دقیقاً به چه چیزی نیاز داریم. قبلاً در ماه آگوست، سفارش سرورهای جدید را به طور خاص برای جمعه سیاه شروع کردیم - در مجموع 10 دستگاه اضافی اضافه کردیم. تا نوامبر آنها کاملاً در نبرد بودند.

در همان زمان، برخی از ماشین‌های ساخت مجدداً برای استفاده به عنوان سرورهای برنامه نصب شدند. ما بلافاصله آنها را برای استفاده از توابع مختلف آماده کردیم: هم برای صدور توصیه ها و هم برای سرویس ImageResizer، به طوری که بسته به نوع بار، هر یک از آنها می تواند برای یکی از این نقش ها استفاده شود. در حالت عادی، سرورهای Application و ImageResizer عملکردهای مشخصی دارند: اولی توصیه‌هایی را صادر می‌کند، دومی تصاویری را برای نامه‌ها و بلوک‌های توصیه در وب‌سایت‌های خرید آنلاین ارائه می‌کند. در آماده سازی برای جمعه سیاه، تصمیم گرفته شد که تمامی سرورهای دو منظوره ساخته شوند تا بسته به نوع دانلود، ترافیک بین آنها متعادل شود.

سپس دو سرور بزرگ برای کافکا (آپاچی کافکا) اضافه کردیم و خوشه ای متشکل از 5 ماشین قدرتمند به دست آوردیم. متأسفانه، همه چیز آنطور که ما می‌خواستیم هموار پیش نرفت: در طول فرآیند همگام‌سازی داده‌ها، دو ماشین جدید کل عرض کانال شبکه را اشغال کردند و ما مجبور شدیم فوراً چگونگی انجام سریع و ایمن فرآیند افزودن را برای کل زیرساخت برای حل این مشکل، مدیران ما باید با شجاعت تعطیلات آخر هفته خود را قربانی می کردند.

کار با داده ها

علاوه بر سرورها، تصمیم گرفتیم فایل ها را برای کاهش بار بهینه سازی کنیم و یک قدم بزرگ برای ما ترجمه فایل های استاتیک بود. تمام فایل‌های ثابتی که قبلاً روی سرورها میزبانی می‌شدند به S3 + Cloudfront منتقل شدند. از زمانی که بار روی سرور به مقادیر حدی نزدیک بود، مدتها بود که می خواستیم این کار را انجام دهیم و اکنون یک فرصت عالی پیش آمده است.

یک هفته قبل از جمعه سیاه، زمان ذخیره سازی تصویر را به 3 روز افزایش دادیم، به طوری که اگر ImageResizer خراب شد، تصاویری که قبلا در حافظه پنهان شده بودند از cdn بازیابی شوند. همچنین بار روی سرورهای ما را کاهش داد، زیرا هر چه تصویر طولانی‌تر ذخیره شود، کمتر نیاز به صرف منابع برای تغییر اندازه داریم.

و آخرین اما نه کم اهمیت: 5 روز قبل از جمعه سیاه، مهلت قانونی برای استقرار هر گونه عملکرد جدید و همچنین هر گونه کار با زیرساخت اعلام شد - تمام توجه به مقابله با افزایش بارها معطوف شده است.

برنامه ریزی برای پاسخگویی به شرایط دشوار

مهم نیست که چقدر کیفیت تهیه شده است، فکاپ همیشه امکان پذیر است. و ما 3 طرح واکنش برای شرایط بحرانی احتمالی ایجاد کرده ایم:

  • کاهش بار،
  • غیرفعال کردن برخی از خدمات،
  • خاموش شدن کامل سرویس

طرح A: کاهش بار. اگر به دلیل افزایش بار، سرورهای ما فراتر از زمان‌بندی پاسخ‌های قابل قبول رفتند، باید فعال می‌شد. در این مورد، ما مکانیسم هایی را برای کاهش تدریجی بار با تغییر بخشی از ترافیک به سرورهای آمازون آماده کرده ایم که به سادگی به تمام درخواست ها با "200 OK" پاسخ می دهند و پاسخ خالی می دهند. ما فهمیدیم که این کاهش کیفیت خدمات است، اما انتخاب بین این واقعیت که سرویس اصلا کار نمی کند یا توصیه هایی برای تقریباً 10٪ از ترافیک نشان نمی دهد واضح است.

طرح B: خدمات را غیرفعال کنید. تنزل جزئی ضمنی سرویس. به عنوان مثال، کاهش سرعت محاسبه توصیه های شخصی به منظور تخلیه برخی از پایگاه های داده و کانال های ارتباطی. در حالت عادی، توصیه‌ها در زمان واقعی محاسبه می‌شوند و نسخه متفاوتی از فروشگاه آنلاین را برای هر بازدیدکننده ایجاد می‌کنند، اما در شرایط افزایش بار، کاهش سرعت به سایر خدمات اصلی اجازه می‌دهد به کار خود ادامه دهند.

طرح ج: در صورت بروز آرماگدون. اگر یک خرابی کامل سیستم رخ دهد، ما طرحی را آماده کرده ایم که به ما امکان می دهد به طور ایمن از مشتریان خود جدا شویم. خریداران فروشگاه به سادگی از دیدن توصیه ها خودداری می کنند؛ عملکرد فروشگاه آنلاین به هیچ وجه آسیب نخواهد دید. برای انجام این کار، ما باید فایل یکپارچه سازی خود را بازنشانی کنیم تا کاربران جدید تعامل با سرویس را متوقف کنند. یعنی ما کد رهگیری اصلی خود را غیرفعال می کنیم، سرویس جمع آوری داده ها و محاسبه توصیه ها را متوقف می کند و کاربر به سادگی صفحه ای را بدون بلوک های توصیه می بیند. برای همه کسانی که قبلاً یک فایل یکپارچه‌سازی دریافت کرده‌اند، گزینه تغییر رکورد DNS به آمازون و خرد 200 OK را ارائه کرده‌ایم.

نمایش نتایج: از

ما کل بار را حتی بدون نیاز به استفاده از ماشین آلات ساخت اضافی اداره کردیم. و به لطف آماده سازی قبلی، ما به هیچ یک از طرح های پاسخ توسعه یافته نیاز نداشتیم. اما تمام کارهای انجام شده تجربه ارزشمندی است که به ما کمک می کند تا با غیرمنتظره ترین و عظیم ترین هجوم ترافیک مقابله کنیم.
همانطور که در سال 2017، بار سرویس تا 40 درصد افزایش یافت و تعداد کاربران فروشگاه های آنلاین در جمعه سیاه 60 درصد افزایش یافت. تمام مشکلات و اشتباهات در دوران آماده سازی رخ داد که ما و مشتریانمان را از شرایط پیش بینی نشده نجات داد.

چگونه با جمعه سیاه کنار می آیید؟ چگونه برای بارهای بحرانی آماده می شوید؟

منبع: www.habr.com

اضافه کردن نظر