Paano makatiis ng tumaas na pagkarga sa system: pinag-uusapan natin ang malakihang paghahanda para sa Black Friday

Hoy Habr!

Noong 2017, noong Black Friday, tumaas ang load ng halos isa at kalahating beses, at ang aming mga server ay nasa kanilang limitasyon. Sa paglipas ng taon, ang bilang ng mga kliyente ay lumago nang malaki, at naging malinaw na kung walang maingat na paunang paghahanda, ang platform ay maaaring hindi makatiis sa mga pagkarga ng 2018.

Itinakda namin ang pinakamaaambisyong layunin na posible: gusto naming maging ganap na handa para sa anuman, kahit na ang pinakamalakas, mga pagdagsa ng aktibidad at nagsimulang maglunsad ng mga bagong kapasidad nang maaga sa buong taon.

Ang aming CTO Andrey Chizh (chizh_andrey) ay nagsasabi kung paano kami naghanda para sa Black Friday 2018, kung anong mga hakbang ang aming ginawa upang maiwasan ang pagkahulog, at, siyempre, ang mga resulta ng gayong maingat na paghahanda.

Paano makatiis ng tumaas na pagkarga sa system: pinag-uusapan natin ang malakihang paghahanda para sa Black Friday

Ngayon gusto kong pag-usapan ang tungkol sa mga paghahanda para sa Black Friday 2018. Bakit ngayon, kapag karamihan sa mga pangunahing benta ay nasa likod natin? Nagsimula kaming maghanda mga isang taon bago ang malalaking kaganapan, at sa pamamagitan ng pagsubok at pagkakamali ay natagpuan namin ang pinakamainam na solusyon. Inirerekomenda namin na alagaan mo ang mga mainit na panahon nang maaga at maiwasan ang mga scam na maaaring lumitaw sa pinaka hindi angkop na sandali.
Ang materyal ay magiging kapaki-pakinabang sa lahat na gustong pisilin ang maximum na kita mula sa naturang mga stock, dahil Ang teknikal na bahagi ng isyu ay hindi mababa sa bahagi ng marketing dito.

Mga tampok ng trapiko sa malalaking benta

Taliwas sa popular na paniniwala, ang Black Friday ay hindi lamang isang araw sa isang taon, ngunit halos isang buong linggo: ang mga unang alok na diskwento ay dumarating 7-8 araw bago ang pagbebenta. Nagsisimulang lumaki nang maayos ang trapiko sa website sa buong linggo, umabot sa pinakamataas sa Biyernes at bumaba nang husto tuwing Sabado sa mga regular na antas ng tindahan.

Paano makatiis ng tumaas na pagkarga sa system: pinag-uusapan natin ang malakihang paghahanda para sa Black Friday

Mahalaga itong isaalang-alang: ang mga online na tindahan ay nagiging sensitibo lalo na sa anumang "mga pagbagal" sa system. Bilang karagdagan, ang aming email newsletter line ay nakaranas din ng makabuluhang pagtaas sa bilang ng mga isinumite.

Madiskarteng mahalaga para sa atin na dumaan sa Black Friday nang walang pag-crash, dahil... Ang pinakamahalagang pag-andar ng mga website at mga newsletter ng tindahan ay nakasalalay sa pagpapatakbo ng platform, lalo na:

  • Pagsubaybay at pagbibigay ng mga rekomendasyon sa produkto,
  • Pag-isyu ng mga nauugnay na materyales (halimbawa, mga larawan ng disenyo ng mga bloke ng rekomendasyon, tulad ng mga arrow, logo, icon at iba pang visual na elemento),
  • Pagbibigay ng mga larawan ng produkto na may kinakailangang laki (para sa mga layuning ito mayroon kaming "ImageResizer" - isang subsystem na nagda-download ng imahe mula sa server ng tindahan, pini-compress ito sa kinakailangang laki at, sa pamamagitan ng mga server ng pag-cache, gumagawa ng mga larawan ng kinakailangang laki para sa bawat produkto sa bawat bloke ng rekomendasyon).

Sa katunayan, noong Black Friday 2019, tumaas ng 40% ang load sa serbisyo, i.e. ang bilang ng mga kaganapan na sinusubaybayan at pinoproseso ng sistema ng Retail Rocket sa mga site ng online na tindahan ay tumaas mula 5 hanggang 8 libong kahilingan bawat segundo. Dahil sa katotohanang naghahanda kami para sa mas mabibigat na load, madali kaming nakaligtas sa ganoong pag-alon.

Paano makatiis ng tumaas na pagkarga sa system: pinag-uusapan natin ang malakihang paghahanda para sa Black Friday

Pangkalahatang pagsasanay

Ang Black Friday ay isang abalang oras para sa lahat ng retail at e-commerce sa partikular. Ang bilang ng mga user at ang kanilang aktibidad sa oras na ito ay lumalaki nang malaki, kaya kami, gaya ng dati, ay lubusang naghanda para sa abalang oras na ito. Idagdag natin dito ang katotohanan na marami tayong mga online na tindahan na konektado hindi lamang sa Russia, kundi pati na rin sa Europa, kung saan ang kaguluhan ay mas mataas, at nakakakuha tayo ng antas ng pagnanasa na mas malala kaysa sa serye ng Brazil. Ano ang kailangang gawin upang maging ganap na handa para sa tumaas na load?

Nagtatrabaho sa mga server

Una, ito ay kinakailangan upang malaman kung ano ang eksaktong kailangan namin upang madagdagan ang kapangyarihan ng server. Noong Agosto na, nagsimula kaming mag-order ng mga bagong server partikular para sa Black Friday - sa kabuuan ay nagdagdag kami ng 10 karagdagang machine. Noong Nobyembre ay ganap na silang nasa labanan.

Kasabay nito, ang ilan sa mga build machine ay muling na-install para magamit bilang mga server ng Application. Agad naming inihanda ang mga ito na gumamit ng iba't ibang function: para sa parehong pag-isyu ng mga rekomendasyon at para sa serbisyo ng ImageResizer, upang, depende sa uri ng pag-load, ang bawat isa sa kanila ay magagamit para sa isa sa mga tungkuling ito. Sa normal na mode, ang Application at ImageResizer server ay may malinaw na tinukoy na mga function: ang dating mga rekomendasyon sa isyu, ang huli ay nagbibigay ng mga larawan para sa mga titik at mga block ng rekomendasyon sa mga online shopping website. Bilang paghahanda para sa Black Friday, napagpasyahan na gawin ang lahat ng dual-purpose server upang balansehin ang trapiko sa pagitan ng mga ito depende sa uri ng pag-download.

Pagkatapos ay nagdagdag kami ng dalawang malalaking server para sa Kafka (Apache Kafka) at nakakuha ng isang kumpol ng 5 malalakas na makina. Sa kasamaang palad, ang lahat ay hindi naging maayos tulad ng gusto namin: sa panahon ng proseso ng pag-synchronize ng data, dalawang bagong makina ang sumakop sa buong lapad ng channel ng network, at kailangan naming agad na malaman kung paano isasagawa ang proseso ng pagdaragdag nang mabilis at ligtas para sa buong imprastraktura. Upang malutas ang isyung ito, ang aming mga administrador ay kailangang buong tapang na isakripisyo ang kanilang mga katapusan ng linggo.

Paggawa gamit ang data

Bilang karagdagan sa mga server, nagpasya kaming i-optimize ang mga file upang gumaan ang pagkarga at isang malaking hakbang para sa amin ay ang pagsasalin ng mga static na file. Ang lahat ng mga static na file na dating naka-host sa mga server ay inilipat sa S3 + Cloudfront. Matagal na naming gustong gawin ito, dahil ang pag-load sa server ay malapit sa mga halaga ng limitasyon, at ngayon ay lumitaw ang isang magandang pagkakataon.

Isang linggo bago ang Black Friday, dinagdagan namin ang oras ng pag-cache ng larawan sa 3 araw, upang kung mag-crash ang ImageResizer, ang mga dating naka-cache na larawan ay makukuha mula sa cdn. Binawasan din nito ang pag-load sa aming mga server, dahil habang mas matagal ang pag-iimbak ng imahe, mas madalas na kailangan naming gumastos ng mga mapagkukunan sa pagbabago ng laki.

At ang huling ngunit hindi bababa sa: 5 araw bago ang Black Friday, isang moratorium ang inihayag sa pag-deploy ng anumang bagong pag-andar, pati na rin sa anumang gawain sa imprastraktura - ang lahat ng atensyon ay naglalayong makayanan ang tumaas na pagkarga.

Mga plano para sa pagtugon sa mahihirap na sitwasyon

Gaano man kataas ang kalidad ng paghahanda, laging posible ang fakaps. At nakabuo kami ng 3 plano sa pagtugon para sa mga posibleng kritikal na sitwasyon:

  • pagbabawas ng load,
  • hindi pagpapagana ng ilang serbisyo,
  • kumpletong pagsasara ng serbisyo.

Plan A: Bawasan ang load. Dapat ay na-activate kung, dahil sa pagtaas ng load, ang aming mga server ay lumampas sa mga katanggap-tanggap na timing ng pagtugon. Sa kasong ito, naghanda kami ng mga mekanismo para sa unti-unting pagbabawas ng load sa pamamagitan ng paglipat ng bahagi ng trapiko sa mga server ng Amazon, na tutugon lang sa lahat ng kahilingan gamit ang "200 OK" at magbibigay ng walang laman na tugon. Naunawaan namin na ito ay isang pagkasira ng kalidad ng serbisyo, ngunit ang pagpili sa pagitan ng katotohanan na ang serbisyo ay hindi gumagana o hindi nagpapakita ng mga rekomendasyon para sa humigit-kumulang 10% ng trapiko.

Plan B: Huwag paganahin ang mga serbisyo. Ipinahiwatig na bahagyang pagkasira ng serbisyo. Halimbawa, ang pagbabawas ng bilis ng pagkalkula ng mga personal na rekomendasyon upang mai-unload ang ilang mga database at mga channel ng komunikasyon. Sa normal na mode, ang mga rekomendasyon ay kinakalkula sa real-time, na lumilikha ng ibang bersyon ng online na tindahan para sa bawat bisita, ngunit sa ilalim ng mga kondisyon ng tumaas na pagkarga, ang pagbabawas ng bilis ay nagbibigay-daan sa iba pang mga pangunahing serbisyo na magpatuloy sa pagtatrabaho.

Plano C: sa kaso ng Armagedon. Kung nangyari ang isang kumpletong pagkabigo ng system, naghanda kami ng isang plano na magbibigay-daan sa aming ligtas na madiskonekta mula sa aming mga customer. Ang mga mamimili ng tindahan ay titigil lamang na makakita ng mga rekomendasyon; ang pagganap ng online na tindahan ay hindi magdurusa sa anumang paraan. Upang gawin ito, kailangan naming i-reset ang aming file sa pagsasama upang ang mga bagong user ay huminto sa pakikipag-ugnayan sa serbisyo. Iyon ay, hindi namin paganahin ang aming pangunahing tracking code, ang serbisyo ay hihinto sa pagkolekta ng data at pagkalkula ng mga rekomendasyon, at ang user ay makakakita lamang ng isang pahina nang walang mga block ng rekomendasyon. Para sa lahat ng dati nang nakatanggap ng integration file, nagbigay kami ng opsyon na ilipat ang DNS record sa Amazon at ang 200 OK stub.

Mga resulta ng

Hinawakan namin ang buong load kahit na hindi na kailangan pang gumamit ng mga karagdagang build machine. At salamat sa maagang paghahanda, hindi namin kailangan ang alinman sa mga binuong plano sa pagtugon. Ngunit ang lahat ng gawaing ginawa ay napakahalagang karanasan na tutulong sa amin na makayanan ang pinaka hindi inaasahang at malalaking pagdagsa ng trapiko.
Tulad noong 2017, ang pag-load sa serbisyo ay tumaas ng 40%, at ang bilang ng mga gumagamit sa mga online na tindahan ay tumaas ng 60% noong Black Friday. Ang lahat ng mga paghihirap at pagkakamali ay nangyari sa panahon ng paghahanda, na nagligtas sa amin at sa aming mga kliyente mula sa mga hindi inaasahang sitwasyon.

Paano mo kinakaharap ang Black Friday? Paano ka naghahanda para sa mga kritikal na pagkarga?

Pinagmulan: www.habr.com

Magdagdag ng komento