Жүйедегі ұлғайтылған жүктемелерге қалай төтеп беруге болады: біз Қара жұмаға кең ауқымды дайындық туралы айтамыз

Эй Хабр!

2017 жылы Қара жұмада жүктеме бір жарым есеге артты, ал серверлеріміз өз шегінде болды. Жыл ішінде клиенттердің саны айтарлықтай өсті және мұқият алдын-ала дайындықсыз платформа 2018 жылғы жүктемелерге төтеп бере алмайтыны белгілі болды.

Біз алдымызға барынша өршіл мақсат қойдық: біз кез келген, тіпті ең күшті, белсенділік серпілісіне толық дайын болғымыз келді және жыл бойына жаңа қуаттарды алдын ала іске қоса бастадық.

Біздің техникалық директор Андрей Чиж (chizh_andrey) 2018 жылғы Қара жұмаға қалай дайындалғанымызды, құлап қалмас үшін қандай шаралар қабылдағанымызды және, әрине, осындай мұқият дайындықтың нәтижелерін айтады.

Жүйедегі ұлғайтылған жүктемелерге қалай төтеп беруге болады: біз Қара жұмаға кең ауқымды дайындық туралы айтамыз

Бүгін мен 2018 жылғы Қара жұмаға дайындық туралы айтқым келеді. Неліктен негізгі сатылымдардың көпшілігі артта қалған кезде? Біз ауқымды шаралардан бір жыл бұрын дайындала бастадық және сынақ пен қателік арқылы оңтайлы шешімді таптық. Ыстық мезгілдер туралы алдын ала қамқорлық жасауды және ең сәтсіз сәтте пайда болуы мүмкін алаяқтардың алдын алуды ұсынамыз.
Материал осындай қорлардан максималды пайданы сығуды қалайтындардың барлығына пайдалы болады, өйткені Бұл жерде мәселенің техникалық жағы маркетингтік жағынан кем түспейді.

Үлкен сатылымдардағы трафиктің ерекшеліктері

Танымал пікірге қарамастан, «Қара жұма» жылына бір күн ғана емес, тұтас апта дерлік: алғашқы жеңілдік ұсыныстары сатылымға 7-8 күн қалғанда келеді. Веб-сайт трафигі апта бойы бірқалыпты өсе бастайды, жұмада шыңына жетеді және сенбіде дүкеннің әдеттегі деңгейіне күрт төмендейді.

Жүйедегі ұлғайтылған жүктемелерге қалай төтеп беруге болады: біз Қара жұмаға кең ауқымды дайындық туралы айтамыз

Мұны ескеру маңызды: интернет-дүкендер жүйедегі кез келген «баяулауларға» әсіресе сезімтал болады. Сонымен қатар, біздің электрондық пошта ақпараттық бюллетеньімізде жіберілулер санының айтарлықтай өсуі байқалды.

Қара жұмадан апатсыз өту біз үшін стратегиялық маңызды, өйткені... Веб-сайттар мен дүкен ақпараттық бюллетеньдерінің ең маңызды функционалдығы платформаның жұмысына байланысты, атап айтқанда:

  • Өнімнің ұсыныстарын қадағалау және шығару,
  • Қатысты материалдарды шығару (мысалы, көрсеткілер, логотиптер, белгішелер және басқа да көрнекі элементтер сияқты ұсыныс блоктарының дизайнының суреттері),
  • Қажетті өлшемдегі өнім кескіндерін ұсыну (осы мақсаттар үшін бізде «ImageResizer» бар - дүкен серверінен кескінді жүктеп алатын, оны қажетті өлшемге дейін қысатын және кэштеу серверлері арқылы әрбір өнім үшін қажетті өлшемдегі кескіндерді шығаратын ішкі жүйе. әрбір ұсыныс блогы).

Шын мәнінде, 2019 жылғы Қара жұма кезінде қызметке жүктеме 40%-ға өсті, яғни. Retail Rocket жүйесі интернет-дүкен сайттарында бақылайтын және өңдейтін оқиғалардың саны секундына 5-тен 8 мың сұранысқа дейін өсті. Неғұрлым ауыр жүктемелерге дайындалғандықтан, мұндай асқынудан оңай аман қалдық.

Жүйедегі ұлғайтылған жүктемелерге қалай төтеп беруге болады: біз Қара жұмаға кең ауқымды дайындық туралы айтамыз

Жалпы оқыту

Қара жұма - бұл барлық бөлшек сауда және электрондық коммерция үшін бос уақыт. Қазіргі уақытта пайдаланушылардың саны мен олардың белсенділігі айтарлықтай өсіп келеді, сондықтан біз, әдеттегідей, осы қарбалас уақытқа мұқият дайындалдық. Бізде тек Ресейде ғана емес, сонымен қатар Еуропада да көптеген интернет-дүкендер бар екенін қосайық, мұнда толқулар әлдеқайда жоғары және біз бразилиялық сериядан да нашар құмарлық деңгейін аламыз. Артқан жүктемелерге толық дайын болу үшін не істеу керек?

Серверлермен жұмыс

Біріншіден, сервер қуатын арттыру үшін нақты не қажет екенін анықтау керек болды. Тамыз айында біз Black Friday үшін арнайы жаңа серверлерге тапсырыс бере бастадық - барлығы 10 қосымша машина қостық. Қараша айында олар толығымен шайқаста болды.

Сонымен қатар, кейбір құрастыру машиналары Қолданба серверлері ретінде пайдалану үшін қайта орнатылды. Біз оларды бірден әртүрлі функцияларды қолдануға дайындадық: ұсыныстарды шығару үшін де, ImageResizer қызметі үшін де, жүк түріне байланысты олардың әрқайсысы осы рөлдердің бірі үшін пайдаланылуы мүмкін. Қалыпты режимде Application және ImageResizer серверлерінің нақты анықталған функциялары бар: біріншісі шығарылым ұсыныстары, екіншісі хаттар үшін кескіндер және онлайн сауда веб-сайттарындағы ұсыныс блоктарымен қамтамасыз етеді. Қара жұмаға дайындық кезінде жүктеп алу түріне байланысты олардың арасындағы трафикті теңестіру үшін барлық қос мақсатты серверлерді жасау туралы шешім қабылданды.

Содан кейін біз Кафкаға (Apache Kafka) екі үлкен сервер қостық және 5 қуатты машинадан тұратын кластерді алдық. Өкінішке орай, бәрі біз қалағандай бірқалыпты болмады: деректерді синхрондау процесі кезінде екі жаңа машина желі арнасының бүкіл енін алып жатты, сондықтан бізге қосу процесін жылдам және қауіпсіз түрде қалай орындау керектігін анықтауға тура келді. бүкіл инфрақұрылым. Бұл мәселені шешу үшін біздің әкімшілеріміз демалыс күндерін ерлікпен құрбан етуге мәжбүр болды.

Деректермен жұмыс істеу

Серверлерден басқа, біз жүктемені жеңілдету үшін файлдарды оңтайландыруды шештік және біз үшін үлкен қадам статикалық файлдарды аудару болды. Бұрын серверлерде орналастырылған барлық статикалық файлдар S3 + Cloudfront жүйесіне жылжытылды. Біз мұны көптен бері жасағымыз келді, өйткені сервердегі жүктеме шекті мәндерге жақын болды, енді тамаша мүмкіндік туды.

Қара жұмаға бір апта қалғанда біз кескінді кэштеу уақытын 3 күнге дейін ұлғайттық, осылайша ImageResizer бұзылса, бұрын кэштелген кескіндер cdn ішінен алынады. Бұл сонымен қатар серверлерімізге жүктемені азайтты, өйткені кескін неғұрлым ұзақ сақталса, өлшемді өзгертуге ресурстарды жұмсау қажет емес.

Соңғысы, бірақ кем дегенде: Қара жұмаға 5 күн қалғанда, кез келген жаңа функционалдылықты енгізуге, сондай-ақ инфрақұрылыммен кез келген жұмысқа мораторий жарияланды - барлық назар күшейтілген жүктемелерді жеңуге бағытталған.

Қиын жағдайларға жауап беру жоспарлары

Дайындық қаншалықты сапалы болса да, факап әрқашан мүмкін. Біз ықтимал сыни жағдайларға 3 әрекет ету жоспарын әзірледік:

  • жүктемені азайту,
  • кейбір қызметтерді өшіру,
  • қызметті толық өшіру.

А жоспары: жүктемені азайту. Жүктеменің жоғарылауына байланысты серверлеріміз қолайлы жауап беру уақытынан асып кетсе, оны іске қосу керек еді. Бұл жағдайда біз трафиктің бір бөлігін Amazon серверлеріне ауыстыру арқылы жүктемені біртіндеп азайту механизмдерін дайындадық, олар жай ғана барлық сұрауларға «200 OK» деп жауап беріп, бос жауап береді. Біз бұл қызмет сапасының нашарлауы екенін түсіндік, бірақ қызметтің мүлдем жұмыс істемеуі немесе трафиктің шамамен 10% үшін ұсыныстарды көрсетпеуінің арасындағы таңдау анық.

B жоспары: қызметтерді өшіру. Қызметтің ішінара нашарлауы. Мысалы, кейбір мәліметтер базасы мен байланыс арналарын босату үшін жеке ұсыныстарды есептеу жылдамдығын төмендету. Қалыпты режимде ұсыныстар нақты уақыт режимінде есептеледі, әрбір келуші үшін интернет-дүкеннің әртүрлі нұсқасын жасайды, бірақ жүктеменің жоғарылауы жағдайында жылдамдықты азайту басқа негізгі қызметтерге жұмысын жалғастыруға мүмкіндік береді.

С жоспары: Армагеддон жағдайында. Толық жүйе ақаулығы орын алса, біз өз клиенттерімізден қауіпсіз ажыратуға мүмкіндік беретін жоспар дайындадық. Дүкен сатып алушылар ұсыныстарды көруді тоқтатады, интернет-дүкеннің өнімділігі ешбір жағдайда зардап шекпейді. Бұл әрекетті орындау үшін, жаңа пайдаланушылар қызметпен өзара әрекеттесуді тоқтататындай интеграциялық файлды қалпына келтіруіміз керек. Яғни, біз негізгі бақылау кодымызды өшірер едік, қызмет деректерді жинауды және ұсыныстарды есептеуді тоқтатады және пайдаланушы тек ұсыныс блоктары жоқ бетті көреді. Интеграция файлын бұрын алғандардың барлығы үшін біз DNS жазбасын Amazon және 200 OK түтікшесіне ауыстыру опциясын ұсындық.

Нәтижелері

Біз қосымша құрастыру машиналарын пайдалануды қажет етпей-ақ бүкіл жүктемені көтердік. Ал алдын ала дайындықтың арқасында бізге әзірленген жауап беру жоспарларының ешқайсысы қажет болмады. Бірақ атқарылған жұмыстың бәрі - бұл күтпеген және үлкен трафик ағынымен күресуге көмектесетін баға жетпес тәжірибе.
2017 жылғыдай қызметке жүктеме 40%-ға, ал қара жұмада интернет-дүкендердегі қолданушылар саны 60%-ға артты. Барлық қиындықтар мен қателіктер дайындық кезеңінде болды, бұл бізді және біздің клиенттерді күтпеген жағдайлардан құтқарды.

Қара жұмамен қалай күресіп жатырсыз? Критикалық жүктемелерге қалай дайындаласыз?

Ақпарат көзі: www.habr.com

пікір қалдыру