Kā izturēt palielinātas sistēmas slodzes: mēs runājam par liela mēroga gatavoÅ”anos Melnajai piektdienai

Čau Habr!

2017. gadā Melnās piektdienas laikā slodze pieauga gandrÄ«z pusotru reizi, un mÅ«su serveri bija pie sava limita. Gada laikā klientu skaits ir ievērojami pieaudzis, un kļuva skaidrs, ka bez rÅ«pÄ«gas iepriekŔējas sagatavoÅ”anās platforma var vienkārÅ”i neizturēt 2018. gada slodzes.

Mēs izvirzījām pēc iespējas ambiciozāko mērķi: vēlējāmies būt pilnībā gatavi jebkuram, pat visspēcīgākajam, aktivitātes uzplūdam un jau laikus sākām uzsākt jaunas jaudas visa gada garumā.

MÅ«su tehnoloÄ£iju vadÄ«tājs Andrejs Čižs (chizh_andrey) stāsta, kā mēs gatavojāmies 2018. gada Melnajai piektdienai, kādus pasākumus veicām, lai izvairÄ«tos no kritieniem, un, protams, Ŕādas rÅ«pÄ«gas sagatavoÅ”anās rezultāti.

Kā izturēt palielinātas sistēmas slodzes: mēs runājam par liela mēroga gatavoÅ”anos Melnajai piektdienai

Å odien es vēlos runāt par gatavoÅ”anos Melnajai piektdienai 2018. Kāpēc tagad, kad lielākā daļa lielāko izpārdoÅ”anas ir aiz muguras? Sākām gatavoties apmēram gadu pirms liela mēroga pasākumiem, un ar izmēģinājumu un kļūdu palÄ«dzÄ«bu atradām optimālo risinājumu. Iesakām jau laikus parÅ«pēties par karstajiem gadalaikiem un nepieļaut krāpniecÄ«bu, kas var parādÄ«ties visnepiemērotākajā brÄ«dÄ«.
Materiāls noderēs ikvienam, kurÅ” vēlas no Ŕādiem krājumiem izspiest maksimālu peļņu, jo Problēmas tehniskā puse Å”eit nav zemāka par mārketinga pusi.

Trafika iezīmes lielos izpārdoŔanas gadījumos

Pretēji izplatÄ«tajam uzskatam, Melnā piektdiena nav tikai viena diena gadā, bet gandrÄ«z vesela nedēļa: pirmie atlaižu piedāvājumi pienāk 7-8 dienas pirms izpārdoÅ”anas. Vietnes apmeklējums sāk vienmērÄ«gi augt visas nedēļas garumā, sasniedz maksimumu piektdien un diezgan strauji pazeminās sestdien lÄ«dz veikala parastajam lÄ«menim.

Kā izturēt palielinātas sistēmas slodzes: mēs runājam par liela mēroga gatavoÅ”anos Melnajai piektdienai

Tas ir svarÄ«gi ņemt vērā: tieÅ”saistes veikali kļūst Ä«paÅ”i jutÄ«gi pret jebkādu sistēmas ā€œpalēninājumuā€. Turklāt mÅ«su e-pasta informatÄ«vā izdevuma lÄ«nija arÄ« piedzÄ«voja ievērojamu iesniegumu skaita pieaugumu.

Mums ir stratēģiski svarīgi Melno piektdienu aizvadīt bez avārijām, jo... Svarīgākā vietņu un veikalu informatīvo izdevumu funkcionalitāte ir atkarīga no platformas darbības, proti:

  • produktu ieteikumu izsekoÅ”ana un izsniegÅ”ana,
  • SaistÄ«tu materiālu izdoÅ”ana (piemēram, ieteikumu bloku dizaina attēli, piemēram, bultiņas, logotipi, ikonas un citi vizuālie elementi),
  • NepiecieÅ”amā izmēra produktu attēlu nodroÅ”ināŔana (Å”iem nolÅ«kiem mums ir ā€œImageResizerā€ - apakÅ”sistēma, kas lejupielādē attēlu no veikala servera, saspiež to lÄ«dz vajadzÄ«gajam izmēram un, izmantojot keÅ”atmiņas serverus, izveido vajadzÄ«gā izmēra attēlus katram produktam iekŔā. katrs ieteikumu bloks).

Faktiski 2019. gada Melnās piektdienas laikā pakalpojuma slodze pieauga par 40%, t.i. notikumu skaits, ko Retail Rocket sistēma izseko un apstrādā tieÅ”saistes veikalu vietnēs, ir pieaudzis no 5 lÄ«dz 8 tÅ«kstoÅ”iem pieprasÄ«jumu sekundē. Pateicoties tam, ka gatavojāmies nopietnākām slodzēm, Ŕādu uzplÅ«du pārdzÄ«vojām viegli.

Kā izturēt palielinātas sistēmas slodzes: mēs runājam par liela mēroga gatavoÅ”anos Melnajai piektdienai

Vispārējā apmācība

Melnā piektdiena ir aizņemts laiks visai mazumtirdzniecÄ«bai un jo Ä«paÅ”i e-komercijai. Lietotāju skaits un viņu aktivitāte Å”ajā laikā ievērojami pieaug, tāpēc mēs, kā vienmēr, rÅ«pÄ«gi gatavojāmies Å”im saspringtajam laikam. PiebildÄ«sim Å”eit faktu, ka mums ir daudz interneta veikalu, kas ir savienoti ne tikai Krievijā, bet arÄ« Eiropā, kur uztraukums ir daudz lielāks, un mēs iegÅ«stam sliktāku kaislÄ«bu lÄ«meni nekā BrazÄ«lijas seriāli. Kas jādara, lai bÅ«tu pilnÄ«bā sagatavots palielinātām slodzēm?

Darbs ar serveriem

Pirmkārt, bija nepiecieÅ”ams noskaidrot, kas tieÅ”i mums ir nepiecieÅ”ams, lai palielinātu servera jaudu. Jau augustā sākām pasÅ«tÄ«t jaunus serverus tieÅ”i Melnajai piektdienai ā€“ kopā pievienojām 10 papildu iekārtas. LÄ«dz novembrim viņi bija pilnÄ«bā kaujā.

Tajā paŔā laikā dažas bÅ«vmaŔīnas tika atkārtoti instalētas, lai tās izmantotu kā lietojumprogrammu serverus. Uzreiz sagatavojām viņus dažādu funkciju izmantoÅ”anai: gan ieteikumu izdoÅ”anai, gan ImageResizer servisam, lai atkarÄ«bā no slodzes veida katru no tām varētu izmantot kādai no Ŕīm lomām. Parastā režīmā lietojumprogrammu un ImageResizer serveriem ir skaidri noteiktas funkcijas: pirmie izdod ieteikumus, otrie nodroÅ”ina burtu attēlus un ieteikumu blokus tieÅ”saistes iepirkÅ”anās vietnēs. Gatavojoties Melnajai piektdienai, tika nolemts izveidot visus divējāda lietojuma serverus, lai lÄ«dzsvarotu trafiku starp tiem atkarÄ«bā no lejupielādes veida.

Pēc tam mēs pievienojām divus lielus serverus Kafka (Apache Kafka) un ieguvām 5 jaudÄ«gu maŔīnu kopu. Diemžēl viss negāja tik gludi, kā gribētos: datu sinhronizācijas procesa laikā divas jaunas maŔīnas aizņēma visu tÄ«kla kanāla platumu, un steidzami nācās izdomāt, kā ātri un droÅ”i veikt pievienoÅ”anas procesu. visa infrastruktÅ«ra. Lai atrisinātu Å”o problēmu, mÅ«su administratoriem bija drosmÄ«gi jāziedo savas nedēļas nogales.

Darbs ar datiem

Papildus serveriem mēs nolēmām optimizēt failus, lai atvieglotu slodzi, un liels solis mums bija statisko failu tulkoÅ”ana. Visi statiskie faili, kas iepriekÅ” tika mitināti serveros, tika pārvietoti uz S3 + Cloudfront. Mēs to vēlējāmies izdarÄ«t jau sen, jo servera slodze bija tuvu robežvērtÄ«bām, un tagad ir radusies lieliska iespēja.

Nedēļu pirms Melnās piektdienas mēs palielinājām attēlu keÅ”atmiņas laiku lÄ«dz 3 dienām, lai, ja ImageResizer avarētu, iepriekÅ” keÅ”atmiņā saglabātie attēli tiktu izgÅ«ti no cdn. Tas arÄ« samazināja mÅ«su serveru slodzi, jo jo ilgāk attēls tiek glabāts, jo retāk mums ir jātērē resursi izmēru maiņai.

Un visbeidzot: 5 dienas pirms Melnās piektdienas tika izsludināts moratorijs jebkuras jaunas funkcionalitātes ievieÅ”anai, kā arÄ« jebkuram darbam ar infrastruktÅ«ru ā€“ visa uzmanÄ«ba ir vērsta uz to, lai tiktu galā ar palielinātām slodzēm.

Plāni, kā reaģēt uz sarežģītām situācijām

NeatkarÄ«gi no tā, cik kvalitatÄ«va ir sagatavotÄ«ba, fakaps vienmēr ir iespējams. Mēs esam izstrādājuÅ”i 3 reaģēŔanas plānus iespējamām kritiskām situācijām:

  • slodzes samazināŔana,
  • dažu pakalpojumu atspējoÅ”ana,
  • pilnÄ«ga pakalpojuma izslēgÅ”ana.

Plāns A: samaziniet slodzi. Bija jāaktivizē, ja slodzes pieauguma dēļ mÅ«su serveri pārsniedza pieņemamo atbildes laiku. Å ajā gadÄ«jumā esam sagatavojuÅ”i mehānismus, kā pakāpeniski samazināt slodzi, daļu trafika pārslēdzot uz Amazon serveriem, kas uz visiem pieprasÄ«jumiem vienkārÅ”i atbildētu ar ā€œ200 OKā€ un sniegtu tukÅ”u atbildi. Sapratām, ka tā ir pakalpojuma kvalitātes pasliktināŔanās, taču izvēle starp to, ka pakalpojums nedarbojas vispār vai nerāda ieteikumus aptuveni 10% no plÅ«smas, ir acÄ«mredzama.

Plāns B: pakalpojumu atspējoÅ”ana. NetieÅ”a daļēja pakalpojuma degradācija. Piemēram, personÄ«go ieteikumu aprēķināŔanas ātruma samazināŔana, lai izlādētu dažas datu bāzes un sakaru kanālus. Parastā režīmā ieteikumi tiek aprēķināti reāllaikā, izveidojot katram apmeklētājam savu interneta veikala versiju, bet paaugstinātas slodzes apstākļos ātruma samazināŔana ļauj turpināt darbu citiem pamatpakalpojumiem.

C plāns: Armagedona gadÄ«jumā. Ja notiek pilnÄ«ga sistēmas kļūme, esam sagatavojuÅ”i plānu, kas ļaus mums droÅ”i atslēgties no klientiem. Veikala pircēji vienkārÅ”i pārstās redzēt ieteikumus, interneta veikala darbÄ«ba nekādā veidā necietÄ«s. Lai to izdarÄ«tu, mums ir jāatiestata mÅ«su integrācijas fails, lai jaunie lietotāji pārtrauktu mijiedarbÄ«bu ar pakalpojumu. Tas nozÄ«mē, ka mēs atspējotu mÅ«su galveno izsekoÅ”anas kodu, pakalpojums pārtrauks datu vākÅ”anu un ieteikumu aprēķināŔanu, un lietotājs vienkārÅ”i redzētu lapu bez ieteikumu blokiem. Visiem tiem, kuri iepriekÅ” ir saņēmuÅ”i integrācijas failu, esam nodroÅ”inājuÅ”i iespēju pārslēgt DNS ierakstu uz Amazon un stub 200 OK.

Rezultāti

Mēs tikām galā ar visu kravu pat bez nepiecieÅ”amÄ«bas izmantot papildu iekārtas. Un, pateicoties iepriekŔējai sagatavoÅ”anai, mums nebija vajadzÄ«gs neviens no izstrādātajiem reaģēŔanas plāniem. Taču viss paveiktais ir nenovērtējama pieredze, kas mums palÄ«dzēs tikt galā ar visnegaidÄ«tākajiem un milzÄ«gākajiem satiksmes pieplÅ«dumiem.
Tāpat kā 2017. gadā, arÄ« Melnajā piektdienā pakalpojuma slodze pieauga par 40%, interneta veikalos lietotāju skaits pieauga par 60%. Visas grÅ«tÄ«bas un kļūdas radās sagatavoÅ”anās periodā, kas mÅ«s un mÅ«su klientus paglāba no neparedzētām situācijām.

Kā tu tiec galā ar Melno piektdienu? Kā jūs gatavojaties kritiskām slodzēm?

Avots: www.habr.com

Pievieno komentāru