Tizimdagi ortib borayotgan yuklarga qanday bardosh berish kerak: biz qora jumaga keng ko'lamli tayyorgarlik haqida gapiramiz

Hey Xabr!

2017 yilda qora juma kuni yuk deyarli bir yarim baravar oshdi va bizning serverlarimiz o'z chegarasida edi. Yil davomida mijozlar soni sezilarli darajada oshdi va oldindan puxta tayyorgarlik ko'rmasdan, platforma 2018 yilgi yuklarga bardosh bera olmasligi aniq bo'ldi.

Biz o'z oldimizga mumkin bo'lgan eng ulug'vor maqsadni qo'ydik: biz har qanday, hatto eng kuchli faollik ko'tarilishiga to'liq tayyor bo'lishni xohladik va yil davomida yangi quvvatlarni ishga tushirishni boshladik.

Bizning texnik direktorimiz Andrey Chij (chizh_andrey) 2018-yilgi “Qora juma”ga qanday tayyorgarlik ko‘rganimiz, yiqilib tushmaslik uchun qanday choralar ko‘rganimiz va, albatta, bunday puxta tayyorgarlik natijalari haqida gapirib beradi.

Tizimdagi ortib borayotgan yuklarga qanday bardosh berish kerak: biz qora jumaga keng ko'lamli tayyorgarlik haqida gapiramiz

Bugun men Black Friday 2018ga tayyorgarlik haqida gapirmoqchiman. Nega endi, asosiy savdolarning aksariyati ortda qolganda? Biz keng miqyosli tadbirlardan taxminan bir yil oldin tayyorgarlik ko'rishni boshladik va sinov va xato orqali biz eng maqbul echimni topdik. Issiq mavsumlar haqida oldindan g'amxo'rlik qilishingizni va eng mos bo'lmagan paytda paydo bo'lishi mumkin bo'lgan firibgarliklarning oldini olishingizni tavsiya qilamiz.
Materiallar bunday aktsiyalardan maksimal foyda olishni istagan har bir kishi uchun foydali bo'ladi, chunki Bu yerda masalaning texnik tomoni marketing tomonidan qolishmaydi.

Katta sotuvlarda trafikning xususiyatlari

Ommabop e'tiqoddan farqli o'laroq, qora juma yiliga bir kun emas, balki deyarli butun hafta: birinchi chegirma takliflari sotuvdan 7-8 kun oldin keladi. Veb-sayt trafiki hafta davomida muammosiz o'sishni boshlaydi, juma kuni o'zining eng yuqori cho'qqisiga chiqadi va shanba kuni do'konning odatiy darajasiga keskin pasayadi.

Tizimdagi ortib borayotgan yuklarga qanday bardosh berish kerak: biz qora jumaga keng ko'lamli tayyorgarlik haqida gapiramiz

Buni hisobga olish muhim: onlayn-do'konlar tizimdagi har qanday "sekinlashuv" ga ayniqsa sezgir bo'ladi. Bundan tashqari, bizning elektron pochta xabarlarimiz qatorida ham yuborilganlar soni sezilarli darajada oshdi.

Qora juma kunini avariyalarsiz o‘tkazish biz uchun strategik jihatdan muhim, chunki... Veb-saytlar va do'kon xabarnomalarining eng muhim funksionalligi platformaning ishlashiga bog'liq, xususan:

  • Mahsulotni kuzatish va tavsiyalar berish,
  • Tegishli materiallarni chiqarish (masalan, strelkalar, logotiplar, piktogrammalar va boshqa vizual elementlar kabi tavsiyalar bloklari dizayni tasvirlari),
  • Kerakli o'lchamdagi mahsulot tasvirlarini taqdim etish (bu maqsadlar uchun bizda "ImageResizer" mavjud - do'kon serveridan rasmni yuklab oladigan, uni kerakli hajmga siqib chiqaradigan va serverlarni keshlash orqali har bir mahsulot uchun kerakli o'lchamdagi rasmlarni ishlab chiqaradigan quyi tizim. har bir tavsiya bloki).

Haqiqatan ham, 2019 yilgi Black Friday davomida xizmatga yuklanish 40% ga oshdi, ya'ni. Retail Rocket tizimi onlayn-do'kon saytlarida kuzatadigan va qayta ishlaydigan voqealar soni sekundiga 5 dan 8 ming so'rovgacha oshdi. Biz jiddiyroq yuklarga tayyorgarlik ko'rganimiz sababli, biz bunday ko'tarilishdan osongina omon qoldik.

Tizimdagi ortib borayotgan yuklarga qanday bardosh berish kerak: biz qora jumaga keng ko'lamli tayyorgarlik haqida gapiramiz

Umumiy tayyorgarlik

Qora juma - barcha chakana savdo va elektron tijorat uchun band bo'lgan vaqt. Hozirgi vaqtda foydalanuvchilar soni va ularning faolligi sezilarli darajada o'sib bormoqda, shuning uchun biz, har doimgidek, ushbu band vaqtga puxta tayyorgarlik ko'rdik. Keling, bizda nafaqat Rossiyada, balki hayajon ancha yuqori bo'lgan Evropada ham ko'plab onlayn-do'konlarimiz borligini qo'shamiz va biz Braziliya seriyasidan ham yomonroq ehtiros darajasini olamiz. Ko'tarilgan yuklarga to'liq tayyor bo'lish uchun nima qilish kerak?

Serverlar bilan ishlash

Birinchidan, server quvvatini oshirish uchun aynan nima kerakligini aniqlash kerak edi. Avgust oyida biz Black Friday uchun yangi serverlarga buyurtma berishni boshladik - jami 10 ta qo'shimcha mashina qo'shdik. Noyabrga kelib ular to'liq jangga kirishdilar.

Shu bilan birga, ba'zi qurilish mashinalari Ilova serverlari sifatida foydalanish uchun qayta o'rnatildi. Biz ularni darhol turli funktsiyalardan foydalanishga tayyorladik: tavsiyalar berish uchun ham, ImageResizer xizmati uchun ham yuk turiga qarab, ularning har biri ushbu rollardan biri uchun ishlatilishi mumkin. Oddiy rejimda Application va ImageResizer serverlari aniq belgilangan funktsiyalarga ega: birinchisi tavsiyalar, ikkinchisi xatlar uchun tasvirlar va onlayn xarid qilish veb-saytlarida tavsiya bloklari. Qora jumaga tayyorgarlik ko'rish jarayonida yuklash turiga qarab ular orasidagi trafikni muvozanatlash uchun barcha ikki maqsadli serverlarni yaratishga qaror qilindi.

Keyin biz Kafka (Apache Kafka) uchun ikkita katta server qo'shdik va 5 ta kuchli mashinalar klasterini oldik. Afsuski, hamma narsa biz xohlagandek silliq kechmadi: ma'lumotlarni sinxronlashtirish jarayonida ikkita yangi mashina tarmoq kanalining butun kengligini egalladi va biz zudlik bilan qo'shish jarayonini tez va xavfsiz tarzda qanday amalga oshirishni aniqlashimiz kerak edi. butun infratuzilma. Ushbu muammoni hal qilish uchun bizning ma'murlarimiz dam olish kunlarini jasorat bilan qurbon qilishlari kerak edi.

Ma'lumotlar bilan ishlash

Serverlarga qo'shimcha ravishda biz yukni engillashtirish uchun fayllarni optimallashtirishga qaror qildik va biz uchun katta qadam statik fayllarni tarjima qilish edi. Ilgari serverlarda joylashtirilgan barcha statik fayllar S3 + Cloudfront-ga ko'chirildi. Biz buni uzoq vaqtdan beri qilishni xohladik, chunki serverdagi yuk chegara qiymatlariga yaqin edi va endi ajoyib imkoniyat paydo bo'ldi.

Qora juma kunidan bir hafta oldin biz tasvirni keshlash vaqtini 3 kungacha oshirdik, shunda ImageResizer ishdan chiqsa, avval keshlangan tasvirlar CD-dan olinadi. Shuningdek, bu bizning serverlarimizdagi yukni kamaytirdi, chunki tasvir qancha uzoq vaqt saqlansa, o'lchamini o'zgartirish uchun resurslarni kamroq sarflashimiz kerak bo'ladi.

Va nihoyat, lekin eng muhimi: Qora juma kunidan 5 kun oldin har qanday yangi funksiyalarni, shuningdek, infratuzilma bilan bog'liq har qanday ishlarga moratoriy e'lon qilindi - barcha e'tibor ortib borayotgan yuklarni engishga qaratilgan.

Qiyin vaziyatlarga javob berish rejalari

Tayyorgarlik qanchalik sifatli bo'lmasin, fakaplar har doim mumkin. Va biz mumkin bo'lgan tanqidiy vaziyatlar uchun 3 ta javob rejasini ishlab chiqdik:

  • yukni kamaytirish,
  • ba'zi xizmatlarni o'chirib qo'yish,
  • xizmatni to'liq o'chirish.

Reja A: yukni kamaytirish. Agar yukning ko'tarilishi tufayli serverlarimiz qabul qilinadigan javob vaqtlaridan oshib ketgan bo'lsa, faollashtirilgan bo'lishi kerak edi. Bunday holda, biz trafikning bir qismini Amazon serverlariga o'tkazish orqali yukni bosqichma-bosqich kamaytirish mexanizmlarini tayyorladik, bu esa barcha so'rovlarga "200 OK" bilan javob beradi va bo'sh javob beradi. Biz bu xizmat sifatining pasayishi ekanligini tushundik, ammo xizmat umuman ishlamasligi yoki trafikning taxminan 10% uchun tavsiyalar ko'rsatilmasligi o'rtasidagi tanlov aniq.

B rejasi: xizmatlarni o'chirib qo'ying. Xizmatning qisman degradatsiyasi nazarda tutilgan. Masalan, ba'zi ma'lumotlar bazalari va aloqa kanallarini tushirish uchun shaxsiy tavsiyalarni hisoblash tezligini kamaytirish. Oddiy rejimda tavsiyalar real vaqt rejimida hisoblab chiqiladi, har bir tashrif buyuruvchi uchun onlayn-do'konning boshqa versiyasi yaratiladi, lekin yuk ortishi sharoitida tezlikni pasaytirish boshqa asosiy xizmatlarning ishlashda davom etishiga imkon beradi.

C rejasi: Armageddon bo'lsa. Agar tizimda to'liq ishlamay qolsa, biz mijozlarimizdan xavfsiz ravishda uzilib qolishimizga imkon beradigan rejani tayyorladik. Do'kon xaridorlari shunchaki tavsiyalarni ko'rishni to'xtatadilar, onlayn-do'konning ishlashi hech qanday tarzda yomonlashmaydi. Buning uchun yangi foydalanuvchilar xizmat bilan o'zaro aloqani to'xtatib qo'yishi uchun biz integratsiya faylimizni qayta o'rnatishimiz kerak edi. Ya'ni, biz asosiy kuzatuv kodimizni o'chirib qo'yamiz, xizmat ma'lumotlarni to'plashni va tavsiyalarni hisoblashni to'xtatadi va foydalanuvchi shunchaki tavsiya bloklarisiz sahifani ko'radi. Ilgari integratsiya faylini olganlar uchun biz DNS yozuvini Amazon va 200 OK stubiga almashtirish imkoniyatini taqdim etdik.

natijalar

Biz qo'shimcha qurilish mashinalarini ishlatmasdan ham butun yukni bajardik. Oldindan tayyorgarlik tufayli bizga ishlab chiqilgan javob rejalarining hech biri kerak emas edi. Ammo bajarilgan barcha ishlar bebaho tajriba bo'lib, u bizga eng kutilmagan va katta trafik oqimini engishga yordam beradi.
2017-yilda bo‘lgani kabi, xizmatga yuklanish 40 foizga, qora juma kuni esa internet-do‘konlardagi foydalanuvchilar soni 60 foizga oshdi. Tayyorgarlik davrida barcha qiyinchiliklar va xatolar yuz berdi, bu bizni va mijozlarimizni kutilmagan vaziyatlardan qutqardi.

Qora juma bilan qanday kurashyapsiz? Kritik yuklarga qanday tayyorlanasiz?

Manba: www.habr.com

a Izoh qo'shish