Ä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 (
Å 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.
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.
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