ProHoster > Blogs > AdministrÄcija > HighLoad++, JevgeÅijs Kuzovļevs (EcommPay IT): ko darÄ«t, ja minÅ«te dÄ«kstÄves maksÄ 100000 XNUMX USD
HighLoad++, JevgeÅijs Kuzovļevs (EcommPay IT): ko darÄ«t, ja minÅ«te dÄ«kstÄves maksÄ 100000 XNUMX USD
Visi runÄ par izstrÄdes un testÄÅ”anas procesiem, personÄla apmÄcÄ«bu, motivÄcijas paaugstinÄÅ”anu, taÄu ar Å”iem procesiem nepietiek, kad servisa dÄ«kstÄves minÅ«te maksÄ milzÄ«gas naudas summas. Ko darÄ«t, veicot finanÅ”u darÄ«jumus saskaÅÄ ar stingru SLA? KÄ palielinÄt savu sistÄmu uzticamÄ«bu un kļūdu toleranci, izstrÄdi un testÄÅ”anu izslÄdzot no vienÄdojuma?
NÄkamÄ HighLoad++ konference notiks 6. gada 7. un 2020. aprÄ«lÄ« SanktpÄterburgÄ. SÄ«kÄka informÄcija un biļetes uz saite. 9. novembrÄ« 18:00. HighLoad++ Maskava 2018, Deli + Kolkata halle. TÄzes un prezentÄcija.
JevgeÅijs Kuzovļevs (turpmÄk ā EK): - Draugi, sveiki! Mani sauc Kuzovļevs JevgeÅijs. Esmu no uzÅÄmuma EcommPay, konkrÄta nodaļa ir uzÅÄmumu grupas IT nodaļa EcommPay IT. Un Å”odien mÄs runÄsim par dÄ«kstÄvÄm - par to, kÄ no tÄm izvairÄ«ties, par to, kÄ samazinÄt to sekas, ja no tÄ nav iespÄjams izvairÄ«ties. TÄma ir norÄdÄ«ta Å”Ädi: āKo darÄ«t, ja dÄ«kstÄves minÅ«te maksÄ 100 000 USDā? Raugoties nÄkotnÄ, mÅ«su skaitļi ir salÄ«dzinÄmi.
Ko dara EcommPay IT?
Kas mÄs esam? KÄpÄc es stÄvu Å”eit jÅ«su priekÅ”Ä? KÄpÄc man ir tiesÄ«bas tev Å”eit kaut ko pastÄstÄ«t? Un par ko mÄs Å”eit runÄsim sÄ«kÄk?
EcommPay uzÅÄmumu grupa ir starptautisks ieguvÄjs. MÄs apstrÄdÄjam maksÄjumus visÄ pasaulÄ - KrievijÄ, EiropÄ, DienvidaustrumÄzijÄ (VisÄ pasaulÄ). Mums ir 9 biroji, kopÄ strÄdÄ 500 darbinieki, no kuriem aptuveni nedaudz mazÄk kÄ puse ir IT speciÄlisti. Visu, ko darÄm, visu, no kÄ pelnÄm naudu, darÄ«jÄm paÅ”i.
Visus savus produktus (un to mums ir diezgan daudz - mÅ«su lielo IT produktu lÄ«nijÄ mums ir aptuveni 16 dažÄdi komponenti) mÄs rakstÄ«jÄm paÅ”i; MÄs paÅ”i rakstÄm, paÅ”i attÄ«stÄmies. Un Å”obrÄ«d mÄs veicam apmÄram miljonu darÄ«jumu dienÄ (iespÄjams, ka miljons ir pareizais veids). MÄs esam diezgan jauns uzÅÄmums ā mums ir tikai kÄdi seÅ”i gadi.
Pirms 6 gadiem tas bija tÄds startup, kad puiÅ”i nÄca kopÄ ar biznesu. ViÅus vienoja ideja (nebija nekÄ cita kÄ ideja), un mÄs skrÄjÄm. KÄ jebkurÅ” startup, mÄs skrÄjÄm ÄtrÄk... Mums Ätrums bija svarÄ«gÄks par kvalitÄti.
KÄdÄ brÄ«dÄ« mÄs apstÄjÄmies: sapratÄm, ka vairs nevaram dzÄ«vot tÄdÄ ÄtrumÄ un ar tÄdu kvalitÄti, un mums vispirms jÄkoncentrÄjas uz kvalitÄti. Å obrÄ«d mÄs nolÄmÄm izveidot jaunu platformu, kas bÅ«tu pareiza, mÄrogojama un uzticama. ViÅi sÄka rakstÄ«t Å”o platformu (sÄka investÄt, izstrÄdÄt attÄ«stÄ«bu, testÄt), bet kÄdÄ brÄ«dÄ« saprata, ka izstrÄde un testÄÅ”ana neļauj sasniegt jaunu pakalpojumu kvalitÄtes lÄ«meni.
JÅ«s izgatavojat jaunu produktu, laižat to ražoÅ”anÄ, bet tik un tÄ kaut kas kaut kur noies greizi. Un Å”odien mÄs runÄsim par to, kÄ sasniegt jaunu kvalitÄtes lÄ«meni (kÄ mÄs to paveicÄm, par mÅ«su pieredzi), izstrÄdi un testÄÅ”anu izslÄdzot no vienÄdojuma; mÄs runÄsim par to, kas ir pieejams darbÄ«bai - kÄda darbÄ«ba pati par sevi var, ko tÄ var piedÄvÄt testÄÅ”anai, lai ietekmÄtu kvalitÄti.
DÄ«kstÄves. DarbÄ«bas bauŔļi.
VienmÄr galvenais stÅ«rakmens, par ko mÄs Å”odien runÄsim, ir dÄ«kstÄves. BriesmÄ«gs vÄrds. Ja mums ir dÄ«kstÄve, mums viss ir slikti. MÄs skrienam pacelt, admini tur serveri - nedod Dievs, lai tas nenokristu, kÄ saka tajÄ dziesmÄ. Par to mÄs Å”odien runÄsim.
Kad mÄs sÄkÄm mainÄ«t savas pieejas, mÄs izveidojÄm 4 bauŔļus. Man tie ir parÄdÄ«ti slaidos:
Å ie bauŔļi ir pavisam vienkÄrÅ”i:
Ätri identificÄjiet problÄmu.
AtbrÄ«vojieties no tÄ vÄl ÄtrÄk.
PalÄ«dziet izprast iemeslu (vÄlÄk izstrÄdÄtÄjiem).
Un standartizÄt pieejas.
VÄlos vÄrst jÅ«su uzmanÄ«bu uz punktu Nr.2. MÄs atbrÄ«vojamies no problÄmas, nevis risinÄm to. LÄmums ir sekundÄrs. Mums primÄrais ir, lai lietotÄjs bÅ«tu pasargÄts no Ŕīs problÄmas. TÄ pastÄvÄs kaut kÄdÄ izolÄtÄ vidÄ, bet Å”ai videi ar to nebÅ«s nekÄda kontakta. PatiesÄ«bÄ mÄs iziesim cauri Ŕīm ÄetrÄm problÄmu grupÄm (dažas sÄ«kÄk, dažas mazÄk), pastÄstÄ«Å”u, ko lietojam, kÄda mums ir atbilstoÅ”a pieredze risinÄjumos.
ProblÄmu novÄrÅ”ana: kad tÄs notiek un ko ar tÄm darÄ«t?
Bet mÄs sÄksim no ierindas, sÄksim ar punktu Nr.2 - kÄ Ätri tikt vaÄ¼Ä no problÄmas? Ir problÄma - mums tÄ ir jÄnovÄrÅ”. "Kas mums bÅ«tu jÄdara Å”ajÄ sakarÄ?" - galvenais jautÄjums. Un, kad sÄkÄm domÄt par to, kÄ novÄrst problÄmu, mÄs izstrÄdÄjÄm dažas prasÄ«bas, kas jÄievÄro, veicot problÄmu novÄrÅ”anu.
Lai formulÄtu Ŕīs prasÄ«bas, mÄs nolÄmÄm uzdot sev jautÄjumu: āKad mums rodas problÄmasā? Un problÄmas, kÄ izrÄdÄ«jÄs, rodas Äetros gadÄ«jumos:
Aparatūras kļūme.
ÄrÄjie pakalpojumi neizdevÄs.
ProgrammatÅ«ras versijas maiÅa (tÄ pati izvietoÅ”ana).
SprÄdzienbÄ«stamas slodzes pieaugums.
MÄs nerunÄsim par pirmajiem diviem. AparatÅ«ras darbÄ«bas traucÄjumus var atrisinÄt pavisam vienkÄrÅ”i: jums viss ir jÄdublÄ. Ja tie ir diski, tie ir jÄsamontÄ RAID; ja tas ir serveris, serveris ir jÄdublÄ; ja jums ir tÄ«kla infrastruktÅ«ra, jums ir jÄpiegÄdÄ otra tÄ«kla infrastruktÅ«ras kopija, tas ir, jÅ«s to paÅemat un dublÄt to. Un, ja kaut kas neizdodas, pÄrslÄdzieties uz rezerves jaudu. Å eit ir grÅ«ti pateikt kaut ko vairÄk.
Otrais ir ÄrÄjo pakalpojumu kļūme. LielÄkajai daļai sistÄma nemaz nav problÄma, bet ne mums. TÄ kÄ mÄs apstrÄdÄjam maksÄjumus, mÄs esam agregators, kas atrodas starp lietotÄju (kurÅ” ievada savus kartes datus) un bankÄm, maksÄjumu sistÄmÄm (Visa, MasterCard, Mira u.c.). MÅ«su ÄrÄjie pakalpojumi (maksÄjumu sistÄmas, bankas) mÄdz neizdoties. Ne mÄs, ne jÅ«s (ja jums ir Å”Ädi pakalpojumi) to nevaram ietekmÄt.
Ko tad darÄ«t? Å eit ir divas iespÄjas. PirmkÄrt, ja varat, jums vajadzÄtu kaut kÄdÄ veidÄ dublÄt Å”o pakalpojumu. PiemÄram, ja mÄs varam, mÄs pÄrsÅ«tÄm trafiku no viena pakalpojuma uz citu: piemÄram, kartes tika apstrÄdÄtas caur Sberbank, Sberbank ir problÄmas - mÄs pÄrsÅ«tÄm trafiku [nosacÄ«ti] uz Raiffeisen. Otra lieta, ko mÄs varam darÄ«t, ir ļoti Ätri pamanÄ«t ÄrÄjo pakalpojumu kļūmi, un tÄpÄc nÄkamajÄ ziÅojuma daÄ¼Ä mÄs runÄsim par reakcijas Ätrumu.
Faktiski no Ŕīm ÄetrÄm mÄs varam Ä«paÅ”i ietekmÄt programmatÅ«ras versiju maiÅu - veikt darbÄ«bas, kas novedÄ«s pie situÄcijas uzlaboÅ”anÄs izvietoÅ”anas kontekstÄ un sprÄdzienbÄ«stamas slodzes pieauguma kontekstÄ. PatiesÄ«bÄ mÄs to darÄ«jÄm. Å eit atkal neliela piezÄ«me...
Ja jums ir mÄkonis, vairÄkas no Ŕīm ÄetrÄm problÄmÄm tiek atrisinÄtas nekavÄjoties. Ja atrodaties Microsoft Azhur, Ozone mÄkoÅos vai izmantojat mÅ«su mÄkoÅus no Yandex vai Mail, tad vismaz aparatÅ«ras darbÄ«bas traucÄjumi kļūst par viÅu problÄmu, un aparatÅ«ras darbÄ«bas traucÄjumu kontekstÄ viss nekavÄjoties kļūst kÄrtÄ«bÄ.
MÄs esam nedaudz netradicionÄls uzÅÄmums. Å eit visi runÄ par āKubernetsā, par mÄkoÅiem - mums nav ne āKubernetsā, ne mÄkoÅu. Bet mums daudzos datu centros ir aparatÅ«ras plaukti, un mÄs esam spiesti dzÄ«vot no Ŕīs aparatÅ«ras, esam spiesti par to visu atbildÄt. TÄpÄc mÄs runÄsim Å”ajÄ kontekstÄ. TÄtad, par problÄmÄm. Pirmie divi tika izÅemti no iekavÄm.
ProgrammatÅ«ras versijas maiÅa. BÄzes
MÅ«su izstrÄdÄtÄjiem nav piekļuves produkcijai. KÄpÄc ir tÄ, ka? Mums ir tikai PCI DSS sertifikÄts, un mÅ«su izstrÄdÄtÄjiem vienkÄrÅ”i nav tiesÄ«bu iekļūt āproduktÄā. Tas tÄ, punkts. Pavisam. TÄpÄc izstrÄdes atbildÄ«ba beidzas tieÅ”i tajÄ brÄ«dÄ«, kad izstrÄde iesniedz bÅ«vÄjumu izlaiÅ”anai.
MÅ«su otrais pamats, kas mums ir un kas arÄ« mums ļoti palÄ«dz, ir unikÄlu nedokumentÄtu zinÄÅ”anu trÅ«kums. Es ceru, ka tas pats attiecas uz jums. Jo, ja tas tÄ nav, jums bÅ«s problÄmas. ProblÄmas radÄ«sies tad, kad Ŕīs unikÄlÄs, nedokumentÄtÄs zinÄÅ”anas nebÅ«s Ä«stajÄ laikÄ un Ä«stajÄ vietÄ. PieÅemsim, ka jums ir viena persona, kas zina, kÄ izvietot konkrÄtu komponentu - cilvÄka nav, viÅÅ” ir atvaļinÄjumÄ vai slims - tas ir, jums ir problÄmas.
Un treÅ”ais pamats, pie kura esam nonÄkuÅ”i. MÄs nonÄcÄm pie tÄ caur sÄpÄm, asinÄ«m, asarÄm ā nonÄcÄm pie secinÄjuma, ka jebkurÄ mÅ«su bÅ«vniecÄ«bÄ ir kļūdas, pat ja tÄ ir bez kļūdÄm. MÄs paÅ”i to nolÄmÄm: kad mÄs kaut ko izvietojam, kad kaut ko ievietojam ražoÅ”anÄ, mums ir bÅ«vÄts ar kļūdÄm. MÄs esam izveidojuÅ”i prasÄ«bas, kurÄm mÅ«su sistÄmai ir jÄatbilst.
PrasÄ«bas programmatÅ«ras versijas maiÅai
Ir trīs prasības:
Mums Ätri jÄatceļ izvietoÅ”ana.
Mums ir jÄsamazina neveiksmÄ«gas izvietoÅ”anas ietekme.
Un mums ir jÄspÄj Ätri izvietot paralÄli.
TieÅ”i tÄdÄ secÄ«bÄ! KÄpÄc? Jo, pirmkÄrt, izvietojot jaunu versiju, Ätrums nav svarÄ«gs, bet ir svarÄ«gi, lai jÅ«s, ja kaut kas noiet greizi, Ätri atvilktu atpakaļ un radÄ«tu minimÄlu ietekmi. Bet, ja jums ir versiju komplekts ražoÅ”anÄ, par kuru izrÄdÄs, ka ir kļūda (no zila gaisa, nebija izvietoÅ”anas, bet ir kļūda) - jums ir svarÄ«gs turpmÄkÄs izvietoÅ”anas Ätrums. Ko mÄs esam darÄ«juÅ”i, lai izpildÄ«tu Ŕīs prasÄ«bas? MÄs izmantojÄm Å”Ädu metodiku:
Tas ir diezgan labi zinÄms, mÄs nekad to neesam izgudrojuÅ”i - tas ir Blue/Green izvietojums. Kas tas ir? Katrai serveru grupai, kurÄ ir instalÄtas jÅ«su lietojumprogrammas, ir jÄbÅ«t kopijai. Kopija ir āsiltaā: tajÄ nav trafika, taÄu jebkurÄ brÄ«dÄ« Å”o trafiku var nosÅ«tÄ«t uz Å”o kopiju. Å ajÄ kopijÄ ir ietverta iepriekÅ”ÄjÄ versija. IzvietoÅ”anas laikÄ kods tiek izvÄrsts neaktÄ«vÄ kopijÄ. PÄc tam daļu trafika (vai visu) pÄrslÄdzat uz jauno versiju. TÄdÄjÄdi, lai mainÄ«tu satiksmes plÅ«smu no vecÄs versijas uz jauno, ir jÄveic tikai viena darbÄ«ba: jÄmaina balansÄtÄjs augÅ”tecÄ, jÄmaina virziens - no viena augÅ”tecÄ uz otru. Tas ir ļoti Ärti un atrisina Ätras pÄrslÄgÅ”anas un Ätras atgrieÅ”anas problÄmu.
Å eit risinÄjums otrajam jautÄjumam ir minimizÄÅ”ana: jÅ«s varat nosÅ«tÄ«t tikai daļu trafika uz jaunu rindu, uz rindu ar jaunu kodu (lai tas bÅ«tu, piemÄram, 2%). Un Å”ie 2% nav 100%! Ja neveiksmÄ«gas izvietoÅ”anas dÄļ zaudÄjÄt 100% trafika, tas ir biedÄjoÅ”i; ja zaudÄjÄt 2% trafika, tas ir nepatÄ«kami, taÄu tas nav biedÄjoÅ”i. TurklÄt lietotÄji to, visticamÄk, pat nepamanÄ«s, jo dažos gadÄ«jumos (ne visos) tas pats lietotÄjs, nospiežot F5, tiks pÄrcelts uz citu, darba versiju.
Zila/zaļa izvietoÅ”ana. MarÅ”rutÄÅ”ana
TomÄr ne viss ir tik vienkÄrÅ”i āBlue/Green deployā... Visas mÅ«su sastÄvdaļas var iedalÄ«t trÄ«s grupÄs:
Ŕī ir priekÅ”gals (maksÄjumu lapas, kuras redz mÅ«su klienti);
apstrÄdes kodols;
adapteris darbam ar maksÄjumu sistÄmÄm (bankas, MasterCard, Visa...).
Un Å”eit ir nianse - nianse slÄpjas marÅ”rutÄ starp lÄ«nijÄm. Ja jÅ«s vienkÄrÅ”i pÄrslÄdzat 100% satiksmes, jums nebÅ«s Å”o problÄmu. Bet, ja vÄlaties mainÄ«t 2%, jÅ«s sÄkat uzdot jautÄjumus: "KÄ to izdarÄ«t?" VienkÄrÅ”ÄkÄ lieta ir tieÅ”i uz priekÅ”u: jÅ«s varat iestatÄ«t Round Robin nginx pÄc nejauŔības principa, un jums ir 2% pa kreisi, 98% pa labi. Bet tas ne vienmÄr ir piemÄrots.
PiemÄram, mÅ«su gadÄ«jumÄ lietotÄjs mijiedarbojas ar sistÄmu ar vairÄk nekÄ vienu pieprasÄ«jumu. Tas ir normÄli: 2, 3, 4, 5 pieprasÄ«jumi ā jÅ«su sistÄmas var bÅ«t vienÄdas. Un, ja jums ir svarÄ«gi, lai visi lietotÄja pieprasÄ«jumi nonÄk tajÄ paÅ”Ä rindÄ, kurÄ tika saÅemts pirmais pieprasÄ«jums, vai (otrais punkts) pÄc pÄrslÄgÅ”anas visi lietotÄja pieprasÄ«jumi nonÄk jaunajÄ rindÄ (viÅÅ” varÄja sÄkt strÄdÄt agrÄk ar sistÄma, pirms slÄdža), - tad Å”is nejauÅ”ais sadalÄ«jums jums nav piemÄrots. Tad ir Å”Ädas iespÄjas:
PirmÄ iespÄja, visvienkÄrÅ”ÄkÄ, ir balstÄ«ta uz klienta pamata parametriem (IP Hash). Jums ir IP, un jÅ«s to sadalÄt no labÄs puses uz kreiso pÄc IP adreses. Tad jums derÄs otrais manis aprakstÄ«tais gadÄ«jums, kad izvietoÅ”ana notika, lietotÄjs jau varÄja sÄkt strÄdÄt ar jÅ«su sistÄmu, un no izvietoÅ”anas brīža visi pieprasÄ«jumi tiks pÄrsÅ«tÄ«ti uz jaunu rindu (teiksim, uz to paÅ”u).
Ja kÄda iemesla dÄļ tas jums nav piemÄrots un jums ir jÄnosÅ«ta pieprasÄ«jumi uz rindu, kurÄ tika saÅemts lietotÄja sÄkotnÄjais, sÄkotnÄjais pieprasÄ«jums, jums ir divas iespÄjas...
PirmÄ iespÄja: jÅ«s varat iegÄdÄties maksas nginx+. Ir Sticky sesiju mehÄnisms, kas pÄc lietotÄja sÄkotnÄjÄ pieprasÄ«juma pieŔķir lietotÄjam sesiju un saista to ar vienu vai otru augÅ”pusi. Visi turpmÄkie lietotÄju pieprasÄ«jumi sesijas laikÄ tiks nosÅ«tÄ«ti uz to paÅ”u augÅ”Äjo straumi, kurÄ tika publicÄta sesija.
Tas mums nederÄja, jo mums jau bija regulÄrs nginx. PÄrslÄgÅ”anÄs uz nginx+ nav tÄ, ka tÄ ir dÄrga, tikai tas, ka mums tas bija nedaudz sÄpÄ«gi un ne pÄrÄk pareizi. PiemÄram, āSticks Sessionsā mums nederÄja tÄ vienkÄrÅ”Ä iemesla dÄļ, ka āSticks Sessionsā neļauj marÅ”rutÄt, pamatojoties uz āVai nu-vaiā. Tur jÅ«s varat norÄdÄ«t, ko mÄs āSticks Sessionsā darÄm, piemÄram, pÄc IP adreses vai pÄc IP adreses un sÄ«kfailiem vai pÄc parametra, bet āVai nu-vaiā tur ir sarežģītÄk.
TÄpÄc mÄs nonÄcÄm pie ceturtÄ varianta. MÄs lietojÄm nginx uz steroÄ«diem (tas ir openresty) - tas ir tas pats nginx, kas papildus atbalsta pÄdÄjo skriptu iekļauÅ”anu. Varat uzrakstÄ«t pÄdÄjo skriptu, pieŔķirt tam āatvÄrto atpÅ«tuā, un Å”is pÄdÄjais skripts tiks izpildÄ«ts, kad tiks saÅemts lietotÄja pieprasÄ«jums.
Un mÄs faktiski uzrakstÄ«jÄm Å”Ädu skriptu, iestatÄ«jÄm sev āopenrestiā, un Å”ajÄ skriptÄ mÄs Ŕķirojam 6 dažÄdus parametrus pÄc savienojuma āOrā. AtkarÄ«bÄ no viena vai otra parametra klÄtbÅ«tnes mÄs zinÄm, ka lietotÄjs ir nonÄcis vienÄ vai otrÄ lapÄ, vienÄ vai otrÄ rindiÅÄ.
Zila/zaļa izvietoŔana. PriekŔrocības un trūkumi
Protams, droÅ”i vien varÄja to padarÄ«t nedaudz vienkÄrÅ”Äku (izmantot tos paÅ”us āSticky Sessionsā), taÄu mums ir arÄ« tÄda nianse, ka viena darÄ«juma vienas apstrÄdes ietvaros ar mums mijiedarbojas ne tikai lietotÄjs... Bet maksÄjumu sistÄmas arÄ« mijiedarbojas ar mums: pÄc darÄ«juma apstrÄdes (nosÅ«tot pieprasÄ«jumu maksÄjumu sistÄmai), mÄs saÅemam atteikumu.
Un teiksim, ja mÅ«su Ä·ÄdÄ mÄs varam pÄrsÅ«tÄ«t lietotÄja IP adresi visos pieprasÄ«jumos un sadalÄ«t lietotÄjus pÄc IP adreses, tad mÄs neteiksim to paÅ”u "Visa": "VÄ«zi, mÄs esam tÄds retro uzÅÄmums, mums Ŕķiet bÅ«t starptautiskam (vietnÄ un KrievijÄ)... LÅ«dzu, norÄdiet mums lietotÄja IP adresi papildu laukÄ, jÅ«su protokols ir standartizÄtsā! Skaidrs, ka viÅi nepiekritÄ«s.
TÄpÄc tas mums nederÄja - mÄs veicÄm openresty. AttiecÄ«gi ar marÅ”rutÄÅ”anu mÄs saÅÄmÄm kaut ko lÄ«dzÄ«gu:
AttiecÄ«gi zilajai/zaļajai izvietoÅ”anai ir manis minÄtÄs priekÅ”rocÄ«bas un trÅ«kumi.
Divi trūkumi:
jums ir jÄraizÄjas ar marÅ”rutÄÅ”anu;
otrs galvenais trūkums ir izdevumi.
Vajag divreiz vairÄk serveru, vajag divreiz vairÄk operatÄ«vo resursu, vajag divreiz vairÄk pūļu, lai uzturÄtu visu Å”o zoodÄrzu.
Starp citu, starp priekÅ”rocÄ«bÄm ir vÄl viena lieta, ko iepriekÅ” neminÄju: jums ir rezerve slodzes pieauguma gadÄ«jumÄ. Ja jums ir straujÅ” slodzes pieaugums, jums ir liels lietotÄju skaits, tad vienkÄrÅ”i iekļaujiet otro rindu izplatÄ«jumÄ no 50 lÄ«dz 50 ā un jÅ«su klasterÄ« uzreiz bÅ«s x2 serveri, lÄ«dz atrisinÄsit problÄmu, ka jums ir vairÄk serveru.
KÄ veikt Ätru izvietoÅ”anu?
MÄs runÄjÄm par to, kÄ atrisinÄt minimizÄcijas un Ätras atcelÅ”anas problÄmu, taÄu paliek jautÄjums: "KÄ Ätri izvietot?"
Å eit tas ir Ä«si un vienkÄrÅ”i.
Jums ir jÄbÅ«t kompaktdisku sistÄmai (nepÄrtraukta piegÄde) - jÅ«s nevarat dzÄ«vot bez tÄs. Ja jums ir viens serveris, varat to izvietot manuÄli. Mums, protams, ir aptuveni pusotrs tÅ«kstotis serveru un pusotrs tÅ«kstotis rokturu ā mÄs varam ierÄ«kot Ŕīs telpas lieluma nodaļu, lai tikai to izvietotu.
IzvietoÅ”anai jÄbÅ«t paralÄlai. Ja jÅ«su izvietoÅ”ana ir secÄ«ga, tad viss ir slikti. Viens serveris ir normÄls, jÅ«s visu dienu izvietosit pusotru tÅ«kstoti serveru.
Atkal, paÄtrinÄjumam tas, iespÄjams, vairs nav vajadzÄ«gs. IzvÄrÅ”anas laikÄ projekts parasti tiek uzbÅ«vÄts. Jums ir tÄ«mekļa projekts, ir priekÅ”gala daļa (jÅ«s tur veidojat tÄ«mekļa pakotni, kompilÄjat npm - kaut kas lÄ«dzÄ«gs), un Å”is process principÄ ir Ä«slaicÄ«gs - 5 minÅ«tes, bet Ŕīs 5 minÅ«tes var esi kritisks. TÄpÄc, piemÄram, mÄs to nedarÄm: mÄs noÅÄmÄm Ŕīs 5 minÅ«tes, izvietojam artefaktus.
Kas ir artefakts? Artefakts ir samontÄta konstrukcija, kurÄ visas montÄžas daļas jau ir pabeigtas. MÄs glabÄjam Å”o artefaktu artefaktu krÄtuvÄ. VienÄ reizÄ mÄs izmantojÄm divas Å”Ädas krÄtuves ā tas bija Nexus un tagad jFrog Artifactory. SÄkotnÄji izmantojÄm āNexusā, jo sÄkÄm praktizÄt Å”o pieeju Java lietojumprogrammÄs (tas bija labi piemÄrots). Tad viÅi tur ievietoja dažas PHP rakstÄ«tÄs lietojumprogrammas; un āNexusā vairs nebija piemÄrots, un tÄpÄc mÄs izvÄlÄjÄmies jFrog Artefactory, kas var artificÄt gandrÄ«z visu. MÄs pat esam nonÄkuÅ”i pie tÄ, ka Å”ajÄ artefaktu krÄtuvÄ mÄs glabÄjam paÅ”i savas binÄrÄs pakotnes, kuras apkopojam serveriem.
SprÄdzienbÄ«stamas slodzes pieaugums
MÄs runÄjÄm par programmatÅ«ras versijas maiÅu. NÄkamÄ lieta, kas mums ir, ir sprÄdzienbÄ«stams slodzes pieaugums. Å eit es droÅ”i vien domÄju ar sprÄdzienbÄ«stamu slodzes pieaugumu, kas nav gluži pareizais...
UzrakstÄ«jÄm jaunu sistÄmu - tÄ ir uz servisu orientÄta, moderna, skaista, visur strÄdnieki, visur rindas, visur asinhronija. Un Å”ÄdÄs sistÄmÄs dati var plÅ«st caur dažÄdÄm plÅ«smÄm. Pirmajam darÄ«jumam var izmantot 1., 3., 10. strÄdnieku, otrajam darÄ«jumam - 2., 4., 5.. Un Å”odien, pieÅemsim, no rÄ«ta jums ir datu plÅ«sma, kas izmanto pirmos trÄ«s darbiniekus, un vakarÄ tÄ krasi mainÄs, un viss izmanto pÄrÄjos trÄ«s darbiniekus.
Un Å”eit izrÄdÄs, ka jums ir kaut kÄ jÄmÄro darbinieki, jums ir kaut kÄ jÄmÄro savi pakalpojumi, bet tajÄ paÅ”Ä laikÄ jÄnovÄrÅ” resursu uzpÅ«Å”anÄs.
MÄs esam definÄjuÅ”i savas prasÄ«bas. Å Ä«s prasÄ«bas ir pavisam vienkÄrÅ”as: lai bÅ«tu Servisa atklÄÅ”ana, parametru noteikÅ”ana ā viss ir standarts Å”Ädu mÄrogojamu sistÄmu veidoÅ”anai, izÅemot vienu punktu ā resursu nolietojumu. TeicÄm, ka neesam gatavi amortizÄt resursus, lai serveri silda gaisu. MÄs paÅÄmÄm "Consul", mÄs paÅÄmÄm "Nomad", kas pÄrvalda mÅ«su strÄdniekus.
KÄpÄc tÄ mums ir problÄma? Nedaudz atkÄpsimies. Tagad mums ir aptuveni 70 maksÄjumu sistÄmas. No rÄ«ta satiksme iet caur Sberbanku, tad Sberbank krita, piemÄram, un mÄs to pÄrslÄdzam uz citu maksÄjumu sistÄmu. Pirms Sberbank mums bija 100 strÄdnieku, un pÄc tam mums krasi jÄpalielina 100 strÄdnieku skaits citai maksÄjumu sistÄmai. Un vÄlams, lai tas viss notiktu bez cilvÄka lÄ«dzdalÄ«bas. Jo, ja ir cilvÄku lÄ«dzdalÄ«ba, tur 24/7 jÄsÄž inženierim, kuram tas tikai jÄdara, jo tÄdas kļūmes, kad aiz muguras ir 70 sistÄmas, notiek regulÄri.
TÄpÄc mÄs apskatÄ«jÄm Nomad, kuram ir atvÄrts IP, un uzrakstÄ«jÄm savu lietu Scale-Nomad - ScaleNo, kas veic aptuveni sekojoÅ”o: uzrauga rindas pieaugumu un samazina vai palielina darbinieku skaitu atkarÄ«bÄ no dinamikas. no rindas. Kad mÄs to izdarÄ«jÄm, mÄs domÄjÄm: "VarbÅ«t mÄs to varam atvÄrt pirmkoda?" Tad viÅi paskatÄ«jÄs uz viÅu ā viÅa bija vienkÄrÅ”a kÄ divas kapeikas.
PagaidÄm mÄs neesam to atvÄrtÄ pirmkoda veidÄ, bet, ja pÄkÅ”Åi pÄc ziÅojuma, pÄc tam, kad sapratÄt, ka jums ir vajadzÄ«ga tÄda lieta, jums to vajag, mani kontakti ir pÄdÄjÄ slaidÄ - lÅ«dzu, rakstiet man. Ja bÅ«s vismaz 3-5 cilvÄki, mÄs to sponsorÄsim.
KÄ tas strÄdÄ? PaskatÄ«simies! Skatoties uz priekÅ”u: kreisajÄ pusÄ ir mÅ«su uzraudzÄ«bas daļa: Ŕī ir viena rinda, augÅ”pusÄ ir notikumu apstrÄdes laiks, vidÅ« ir darÄ«jumu skaits, apakÅ”Ä ir darbinieku skaits.
Ja paskatÄs, Å”ajÄ attÄlÄ ir kļūme. AugÅ”ÄjÄ diagrammÄ viena no diagrammÄm avarÄja 45 sekunžu laikÄ - viena no maksÄjumu sistÄmÄm nokrita. TÅ«lÄ«t 2 minÅ«Å”u laikÄ tika ievesta satiksme un rinda sÄka augt uz citu norÄÄ·inu sistÄmu, kurÄ nebija neviena strÄdnieka (resursus neizmantojÄm - tieÅ”i otrÄdi, resursu utilizÄjÄm pareizi). MÄs negribÄjÄm sildÄ«t - bija minimÄls skaits, apmÄram 5-10 strÄdnieku, bet viÅi netika galÄ.
PÄdÄjÄ grafikÄ redzams ākuprisā, kas nozÄ«mÄ tikai to, ka āSkalenoā Å”o summu dubultoja. Un tad, kad grafiks nedaudz nokritÄs, viÅÅ” to nedaudz samazinÄja - strÄdnieku skaits tika mainÄ«ts automÄtiski. TÄ Å”Ä« lieta darbojas. MÄs runÄjÄm par 2. punktu - "KÄ Ätri atbrÄ«voties no iemesliem."
UzraudzÄ«ba. KÄ Ätri noteikt problÄmu?
Tagad pirmais punkts ir "KÄ Ätri noteikt problÄmu?" UzraudzÄ«ba! Mums ir Ätri jÄsaprot dažas lietas. KÄdas lietas mums vajadzÄtu Ätri saprast?
Trīs lietas!
Mums Ätri jÄsaprot un jÄsaprot mÅ«su paÅ”u resursu darbÄ«ba.
Mums Ätri jÄsaprot kļūmes un jÄuzrauga to sistÄmu darbÄ«ba, kas ir Ärpus mums.
TreÅ”ais punkts ir loÄ£isko kļūdu noteikÅ”ana. Tas ir tad, kad sistÄma darbojas jÅ«su labÄ, viss ir normÄli pÄc visiem rÄdÄ«tÄjiem, bet kaut kas noiet greizi.
Es droÅ”i vien jums neko tik forÅ”u Å”eit nestÄstÄ«Å”u. Es bÅ«Å”u kapteinis acÄ«mredzamais. MÄs meklÄjÄm to, kas bija tirgÅ«. Mums ir "jautrs zoodÄrzs". Å Äds zoodÄrzs mums tagad ir:
MÄs izmantojam Zabbix, lai uzraudzÄ«tu aparatÅ«ru, lai uzraudzÄ«tu galvenos serveru rÄdÄ«tÄjus. DatubÄzÄm izmantojam Okmeter. MÄs izmantojam "Grafana" un "Prometheus" visiem pÄrÄjiem rÄdÄ«tÄjiem, kas neatbilst pirmajiem diviem, daži ar "Grafana" un "Prometheus", un daži ar "Grafana" ar "Influx" un Telegraf.
Pirms gada vÄlÄjÄmies izmantot New Relic. ForÅ”a lieta, tÄ var visu. Bet, cik viÅa var visu, viÅa ir tik dÄrga. Kad mÄs izaugÄm lÄ«dz 1,5 tÅ«kstoÅ”iem serveru, pie mums pienÄca pÄrdevÄjs un teica: "SlÄgsim lÄ«gumu uz nÄkamo gadu." MÄs paskatÄ«jÄmies uz cenu un teicÄm, ka nÄ, mÄs to nedarÄ«sim. Tagad mÄs atsakÄmies no New Relic, mums ir palikuÅ”i apmÄram 15 serveri, kas atrodas New Relic uzraudzÄ«bÄ. Cena izrÄdÄ«jÄs absolÅ«ti mežonÄ«ga.
Un ir viens rÄ«ks, ko mÄs paÅ”i ieviesÄm - tas ir atkļūdotÄjs. SÄkumÄ mÄs to nosaucÄm par āBaggerā, bet tad garÄm gÄja angļu valodas skolotÄja, mežonÄ«gi smÄjÄs un pÄrdÄvÄja to par āDebaggerā. Kas tas ir? Å is ir rÄ«ks, kas faktiski 15ā30 sekunžu laikÄ katrÄ komponentÄ, piemÄram, sistÄmas āmelnajÄ kastÄā, veic komponenta vispÄrÄjÄs veiktspÄjas testus.
PiemÄram, ja ir ÄrÄja lapa (maksÄjumu lapa), viÅÅ” to vienkÄrÅ”i atver un apskata, kÄ tai vajadzÄtu izskatÄ«ties. Ja tas tiek apstrÄdÄts, viÅÅ” nosÅ«ta testa ādarÄ«jumuā un pÄrliecinÄs, ka Å”is ādarÄ«jumsā tiek saÅemts. Ja tÄ ir saistÄ«ba ar maksÄjumu sistÄmÄm, mÄs attiecÄ«gi aktivizÄjam testa pieprasÄ«jumu, kur varam, un pÄrliecinÄmies, ka ar mums viss ir kÄrtÄ«bÄ.
KÄdi rÄdÄ«tÄji ir svarÄ«gi monitoringam?
Ko mÄs galvenokÄrt uzraugÄm? KÄdi rÄdÄ«tÄji mums ir svarÄ«gi?
Reakcijas laiks / RPS frontÄs ir ļoti svarÄ«gs rÄdÄ«tÄjs. ViÅÅ” uzreiz atbild, ka ar tevi kaut kas nav kÄrtÄ«bÄ.
ApstrÄdÄto ziÅojumu skaits visÄs rindÄs.
StrÄdnieku skaits.
Pamata pareizÄ«bas rÄdÄ«tÄji.
PÄdÄjais punkts ir ābiznesaā, ābiznesaā metrika. Ja vÄlaties pÄrraudzÄ«t vienu un to paÅ”u, jums ir jÄdefinÄ viens vai divi rÄdÄ«tÄji, kas jums ir galvenie rÄdÄ«tÄji. MÅ«su metrika ir caurlaidspÄja (tÄ ir veiksmÄ«go darÄ«jumu skaita attiecÄ«ba pret kopÄjo darÄ«jumu plÅ«smu). Ja tajÄ kaut kas mainÄs ar 5-10-15 minÅ«Å”u intervÄlu, tas nozÄ«mÄ, ka mums ir problÄmas (ja tas radikÄli mainÄs).
KÄ tas mums izskatÄs, ir piemÄrs vienam no mÅ«su dÄļiem:
KreisajÄ pusÄ ir 6 grafiki, tas ir atbilstoÅ”i rindÄm - strÄdnieku skaits un ziÅojumu skaits rindÄs. LabajÄ pusÄ ā RPS, RTS. TÄlÄk ir norÄdÄ«ta tÄ pati ābiznesaā metrika. Un ābiznesaā metrikÄ mÄs uzreiz varam redzÄt, ka divos vidÄjos grafikos kaut kas nogÄja greizi... Å Ä« ir vÄl viena sistÄma, kas stÄv aiz mums un ir kritusi.
Otra lieta, kas mums bija jÄdara, bija uzraudzÄ«t ÄrÄjo maksÄjumu sistÄmu kritumu. Å eit mÄs paÅÄmÄm OpenTracing - mehÄnismu, standartu, paradigmu, kas ļauj izsekot izplatÄ«tajÄm sistÄmÄm; un tas tika nedaudz mainÄ«ts. Standarta OpenTracing paradigma saka, ka mÄs izveidojam izsekoÅ”anu katram atseviŔķam pieprasÄ«jumam. Mums tas nebija vajadzÄ«gs, un mÄs to iekļÄvÄm kopsavilkumÄ, apkopojuma izsekojamÄ«bÄ. MÄs izveidojÄm rÄ«ku, kas ļauj mums izsekot aiz mums esoÅ”o sistÄmu Ätrumam.
GrafikÄ redzams, ka viena no maksÄjumu sistÄmÄm sÄka reaÄ£Ät 3 sekunžu laikÄ ā mums ir problÄmas. TurklÄt Ŕī lieta reaÄ£Äs, kad sÄksies problÄmas, ar intervÄlu 20-30 sekundes.
Un treÅ”Ä pastÄvoÅ”o uzraudzÄ«bas kļūdu klase ir loÄ£iskÄ uzraudzÄ«ba.
GodÄ«gi sakot, es nezinÄju, ko uzzÄ«mÄt uz Ŕī slaida, jo mÄs jau ilgu laiku meklÄjÄm tirgÅ« kaut ko, kas mums bÅ«tu piemÄrots. Neko neatradÄm, tÄpÄc nÄcÄs darÄ«t paÅ”iem.
Ko es domÄju ar loÄ£isko uzraudzÄ«bu? IedomÄjieties: jÅ«s izveidojat sev sistÄmu (piemÄram, Tinder klonu); jÅ«s to izdarÄ«jÄt, palaidÄt to. VeiksmÄ«gais menedžeris Vasja Pupkins ielika to savÄ telefonÄ, ierauga tur meiteni, viÅai patÄ«k... un lÄ«dzÄ«gs meitenei nepienÄk - lÄ«dzÄ«gs nonÄk apsargam MihaļiÄam no tÄ paÅ”a biznesa centra. PÄrvaldnieks nokÄpj lejÄ un tad brÄ«nÄs: "KÄpÄc Å”is apsargs MihaļiÄs viÅam tik patÄ«kami smaida?"
Å ÄdÄs situÄcijÄs... Mums Ŕī situÄcija izklausÄs nedaudz savÄdÄk, jo (es rakstÄ«ju) tas ir reputÄcijas zaudÄjums, kas pastarpinÄti noved pie finansiÄliem zaudÄjumiem. MÅ«su situÄcija ir pretÄja: mÄs varam ciest tieÅ”us finansiÄlus zaudÄjumus - piemÄram, ja mÄs veicÄm darÄ«jumu kÄ veiksmÄ«gu, bet tas bija neveiksmÄ«gs (vai otrÄdi). Man bija jÄraksta savs rÄ«ks, kas izseko veiksmÄ«go darÄ«jumu skaitu laika gaitÄ, izmantojot biznesa rÄdÄ«tÄjus. TirgÅ« neko neatradu! TieÅ”i Å”o ideju es gribÄju nodot. TirgÅ« nav nekÄ, kas atrisinÄtu Å”Äda veida problÄmu.
Tas bija par to, kÄ Ätri noteikt problÄmu.
KÄ noteikt izvietoÅ”anas iemeslus
TreÅ”Ä problÄmu grupa, ko mÄs risinÄm, ir pÄc tam, kad esam identificÄjuÅ”i problÄmu, pÄc tam, kad esam no tÄs atbrÄ«vojuÅ”ies, bÅ«tu labi saprast attÄ«stÄ«bas, pÄrbaudes iemeslu un kaut ko darÄ«t lietas labÄ. AttiecÄ«gi ir jÄizmeklÄ, jÄpaceļ baļķi.
Ja mÄs runÄjam par baļķiem (galvenais iemesls ir baļķi), lielÄkÄ daļa mÅ«su baļķu atrodas ELK Stack - gandrÄ«z visiem ir vienÄdi. Dažam varbÅ«t ELK nav, bet ja žurnÄlus rakstÄ«si gigabaitos, tad agri vai vÄlu nonÄksi ELK. MÄs tos rakstÄm terabaitos.
Å eit ir problÄma. IzlabojÄm, izlabojÄm lietotÄjam kļūdu, sÄkÄm izrakt, kas tur ir, iekÄpÄm KibanÄ, ievadÄ«jÄm tur darÄ«juma ID un dabÅ«jÄm tÄdu kÄju lupatiÅu (daudz rÄda). Un Å”ajÄ kÄju lupatÄ pilnÄ«gi nekas nav skaidrs. KÄpÄc? JÄ, jo nav skaidrs, kura daļa pieder kÄdam strÄdniekam, kura daļa pieder kurai komponentei. Un tajÄ brÄ«dÄ« mÄs sapratÄm, ka mums ir vajadzÄ«ga izsekoÅ”ana ā tas pats OpenTracing, par kuru es runÄju.
MÄs to domÄjÄm pirms gada, pievÄrsÄm uzmanÄ«bu tirgum, un tur bija divi instrumenti - āZipkinā un āJaegerā. āJagerā patiesÄ«bÄ ir tÄds ideoloÄ£isks mantinieks, āZipkinaā ideoloÄ£iskais pÄctecis. ZipkinÄ viss ir labi, izÅemot to, ka tas neprot apkopot, neprot iekļaut baļķus trasÄ, tikai laika izsekoÅ”anu. Un "Jager" to atbalstÄ«ja.
ApskatÄ«jÄm āJagerā: var instrumentÄt aplikÄcijas, var rakstÄ«t Api (api standarts PHP tajÄ laikÄ gan netika apstiprinÄts - tas bija pirms gada, bet tagad jau apstiprinÄts), bet tur nebija absolÅ«ti neviens klients. āLabi,ā mÄs nodomÄjÄm un uzrakstÄ«jÄm savu klientu. Ko mÄs saÅÄmÄm? Aptuveni Å”Ädi tas izskatÄs:
JÄgerÄ katram ziÅojumam tiek izveidoti laidumi. Tas ir, kad lietotÄjs atver sistÄmu, viÅÅ” redz vienu vai divus blokus katram ienÄkoÅ”ajam pieprasÄ«jumam (1-2-3 - lietotÄja ienÄkoÅ”o pieprasÄ«jumu skaits, bloku skaits). Lai lietotÄjiem bÅ«tu vieglÄk, žurnÄliem un laika pÄdÄm pievienojÄm atzÄ«mes. AttiecÄ«gi kļūdas gadÄ«jumÄ mÅ«su lietojumprogramma atzÄ«mÄs žurnÄlu ar atbilstoÅ”u Error tagu. Varat filtrÄt pÄc kļūdas taga, un tiks parÄdÄ«ti tikai tie diapazoni, kuros ir Å”is bloks ar kļūdu. LÅ«k, kÄ tas izskatÄs, ja paplaÅ”inÄm diapazonu:
Sprauduma iekÅ”pusÄ ir pÄdu kopums. Å ajÄ gadÄ«jumÄ tie ir trÄ«s testa pÄdas, un treÅ”Ä trase norÄda, ka ir radusies kļūda. TajÄ paÅ”Ä laikÄ Å”eit mÄs redzam laika izsekoÅ”anu: augÅ”pusÄ ir laika skala, un mÄs redzam, kÄdÄ laika intervÄlÄ tika reÄ£istrÄts Å”is vai cits žurnÄls.
AttiecÄ«gi mums viss gÄja labi. MÄs rakstÄ«jÄm paÅ”i savu paplaÅ”inÄjumu, un mÄs to izmantojÄm atvÄrtÄ koda vietÄ. Ja vÄlaties strÄdÄt ar izsekoÅ”anu, ja vÄlaties strÄdÄt ar āJagerā PHP, ir mÅ«su paplaÅ”inÄjums, laipni lÅ«dzam izmantot, kÄ saka:
Mums ir Å”is paplaÅ”inÄjums - tas ir OpenTracing Api klients, tas ir izveidots kÄ php paplaÅ”inÄjums, tas ir, jums tas bÅ«s jÄsamontÄ un jÄinstalÄ sistÄmÄ. Pirms gada nekas nebija savÄdÄk. Tagad ir citi klienti, kas ir kÄ komponenti. Tas ir atkarÄ«gs no jums: vai nu jÅ«s izsÅ«knÄjat komponentus ar komponistu, vai arÄ« izmantojat paplaÅ”inÄjumu.
Korporatīvie standarti
MÄs runÄjÄm par trim bauŔļiem. Ceturtais bauslis ir standartizÄt pieejas. Par ko ir runa? Tas ir par Å”o:
KÄpÄc Å”eit ir vÄrds "korporatÄ«vs"? Ne jau tÄpÄc, ka esam liels vai birokrÄtisks uzÅÄmums, nÄ! Es gribÄju lietot vÄrdu ākorporatÄ«vsā kontekstÄ, ka katram uzÅÄmumam, katram produktam ir jÄbÅ«t saviem standartiem, arÄ« jums. KÄdi standarti mums ir?
Mums ir izvietoÅ”anas noteikumi. MÄs bez viÅa nekur nekustamies, nevaram. MÄs izvietojam apmÄram 60 reizes nedÄļÄ, tas ir, mÄs izvietojam gandrÄ«z pastÄvÄ«gi. TajÄ paÅ”Ä laikÄ mums, piemÄram, izvietoÅ”anas noteikumos ir noteikts tabu par izvietoÅ”anu piektdien - principÄ mÄs neizvietojam.
Mums ir nepiecieÅ”ama dokumentÄcija. Neviens jauns komponents nenonÄk ražoÅ”anÄ, ja tam nav dokumentÄcijas, pat ja tas ir dzimis mÅ«su RnD speciÄlistu aizgaldÄ. MÄs no viÅiem pieprasÄm izvietoÅ”anas instrukcijas, uzraudzÄ«bas karti un aptuvenu aprakstu (tÄ, kÄ programmÄtÄji var rakstÄ«t), kÄ Å”is komponents darbojas, kÄ to novÄrst.
MÄs atrisinÄm nevis problÄmas cÄloni, bet gan problÄmu ā to, ko es jau teicu. Mums ir svarÄ«gi aizsargÄt lietotÄju no problÄmÄm.
Mums ir atļaujas. PiemÄram, mÄs neuzskatÄm par dÄ«kstÄvi, ja divu minÅ«Å”u laikÄ esam zaudÄjuÅ”i 2% satiksmes. Tas bÅ«tÄ«bÄ nav iekļauts mÅ«su statistikÄ. Ja tas ir vairÄk procentuÄli vai Ä«slaicÄ«gs, mÄs jau skaitÄm.
Un mÄs vienmÄr rakstÄm pÄcnÄves ziÅas. Lai kas ar mums notiktu, jebkura situÄcija, kad kÄds ražoÅ”anÄ nenormÄli uzvedÄs, tiks atspoguļots pÄcnÄves darbÄ. PÄcnÄves ir dokuments, kurÄ jÅ«s ierakstÄt, kas ar jums notika, detalizÄtu laiku, to, ko jÅ«s darÄ«jÄt, lai to labotu, un (tas ir obligÄts bloks!), ko jÅ«s darÄ«sit, lai tas nenotiktu nÄkotnÄ. Tas ir obligÄts un nepiecieÅ”ams turpmÄkai analÄ«zei.
Kas tiek uzskatÄ«ts par dÄ«kstÄvi?
Pie kÄ tas viss noveda?
Tas noveda pie tÄ, ka (mums bija zinÄmas problÄmas ar stabilitÄti, tas nederÄja ne klientiem, ne mums) pÄdÄjo 6 mÄneÅ”u laikÄ mÅ«su stabilitÄtes rÄdÄ«tÄjs bija 99,97. MÄs varam teikt, ka tas nav ļoti daudz. JÄ, mums ir uz ko tiekties. No Ŕī rÄdÄ«tÄja apmÄram puse ir stabilitÄte it kÄ nevis mÅ«su, bet mÅ«su tÄ«mekļa lietojumprogrammas ugunsmÅ«ra, kas stÄv mÅ«su priekÅ”Ä un tiek izmantots kÄ pakalpojums, stabilitÄte, bet klientiem tas ir vienalga.
MÄs iemÄcÄ«jÄmies gulÄt naktÄ«. Beidzot! Pirms seÅ”iem mÄneÅ”iem mÄs nevarÄjÄm. Un par Å”o piezÄ«mi ar rezultÄtiem es vÄlÄtos izdarÄ«t vienu piezÄ«mi. Vakar vakarÄ bija brÄ«niŔķīgs ziÅojums par kodolreaktora vadÄ«bas sistÄmu. Ja cilvÄki, kas uzrakstÄ«ja Å”o sistÄmu, mani dzird, lÅ«dzu, aizmirstiet par to, ko es teicu par ā2% nav dÄ«kstÄveā. Jums 2% ir dÄ«kstÄve, pat ja uz divÄm minÅ«tÄm!
Tas ir viss! JÅ«su jautÄjumi.
Par balansÄtÄjiem un datu bÄzes migrÄciju
KlausÄ«tÄju jautÄjums (turpmÄk ā B): ā Labvakar. Liels paldies par Å”Ädu administratora ziÅojumu! ÄŖss jautÄjums par jÅ«su balansieriem. JÅ«s minÄjÄt, ka jums ir WAF, tas ir, cik es saprotu, jÅ«s izmantojat kaut kÄdu ÄrÄjo balansieri...
EK: ā NÄ, mÄs izmantojam savus pakalpojumus kÄ balansÄtÄju. Å ajÄ gadÄ«jumÄ WAF mums ir tikai un vienÄ«gi DDoS aizsardzÄ«bas rÄ«ks.
In: ā Vai varat pateikt dažus vÄrdus par balansieriem?
EK: ā KÄ jau teicu, Ŕī ir atvÄrtÄ režīma serveru grupa. Tagad mums ir 5 rezerves grupas, kas reaÄ£Ä tikai... tas ir, serveris, kas darbojas tikai openresty, tas tikai nodroÅ”ina trafiku. AttiecÄ«gi, lai saprastu, cik daudz mÄs turam: tagad mums ir regulÄra vairÄku simtu megabitu satiksmes plÅ«sma. ViÅi tiek galÄ, jÅ«tas labi, pat nenoslogo sevi.
In: ā ArÄ« vienkÄrÅ”s jautÄjums. Å eit ir zilÄ/zaÄ¼Ä izvietoÅ”ana. Ko jÅ«s darÄt, piemÄram, ar datu bÄzu migrÄciju?
EK: - Labs jautÄjums! Paskatieties, zilÄ/zaÄ¼Ä izvietoÅ”anÄ katrai rindai ir atseviŔķas rindas. Tas ir, ja mÄs runÄjam par notikumu rindÄm, kas tiek pÄrsÅ«tÄ«tas no darbinieka uz darbinieku, zilajai lÄ«nijai un zaļajai lÄ«nijai ir atseviŔķas rindas. Ja mÄs runÄjam par paÅ”u datu bÄzi, tad mÄs to apzinÄti saÅ”aurinÄjÄm, cik varÄjÄm, praktiski visu pÄrvietojÄm rindÄs, datu bÄzÄ mÄs glabÄjam tikai darÄ«jumu kaudzi. Un mÅ«su darÄ«jumu steks ir vienÄds visÄm lÄ«nijÄm. Ar datubÄzi Å”ajÄ kontekstÄ: mÄs to nedalÄm zilÄ un zaÄ¼Ä krÄsÄ, jo abÄm koda versijÄm ir jÄzina, kas notiek ar darÄ«jumu.
Draugi, man ir arÄ« neliela balva, ar ko jÅ«s pamudinÄt ā grÄmata. Un man tas bÅ«tu jÄpieŔķir par labÄko jautÄjumu.
In: - Sveiki. Paldies par ziÅojumu. JautÄjums ir Å”Äds. JÅ«s uzraugÄt maksÄjumus, jÅ«s uzraugÄt pakalpojumus, ar kuriem jÅ«s sazinÄties... Bet kÄ jÅ«s uzraugÄt, lai cilvÄks kaut kÄdÄ veidÄ nonÄca jÅ«su maksÄjumu lapÄ, veica maksÄjumu un projekts viÅam ieskaitÄ«ja naudu? Tas ir, kÄ jÅ«s pÄrraugÄt, vai tirgotÄjs ir pieejams un ir pieÅÄmis jÅ«su atzvanÄ«Å”anu?
EK: ā āTirgotÄjsā mums Å”ajÄ gadÄ«jumÄ ir tieÅ”i tÄds pats ÄrÄjais pakalpojums kÄ maksÄjumu sistÄma. MÄs uzraugÄm tirgotÄja reakcijas Ätrumu.
Par datu bÄzes Å”ifrÄÅ”anu
In: - Sveiki. Man ir nedaudz saistÄ«ts jautÄjums. Jums ir PCI DSS sensitÄ«vi dati. Es gribÄju uzzinÄt, kÄ jÅ«s glabÄjat PAN rindÄs, uz kurÄm ir jÄpÄrsÅ«ta? Vai jÅ«s izmantojat kÄdu Å”ifrÄÅ”anu? Un tas noved pie otrÄ jautÄjuma: saskaÅÄ ar PCI DSS ir nepiecieÅ”ams periodiski atkÄrtoti Å”ifrÄt datubÄzi izmaiÅu gadÄ«jumÄ (administratoru atlaiÅ”ana utt.) - kas Å”ajÄ gadÄ«jumÄ notiek ar pieejamÄ«bu?
EK: - BrÄ«niŔķīgs jautÄjums! PirmkÄrt, mÄs neglabÄjam PAN rindÄs. Mums principÄ nav tiesÄ«bu nekur glabÄt PAN skaidrÄ formÄ, tÄpÄc mÄs izmantojam Ä«paÅ”u pakalpojumu (mÄs to saucam par "Kademon") - tas ir pakalpojums, kas dara tikai vienu: tas saÅem ziÅojumu kÄ ievadi un nosÅ«ta izdod Å”ifrÄtu ziÅojumu. Un mÄs visu glabÄjam ar Å”o Å”ifrÄto ziÅojumu. AttiecÄ«gi mÅ«su atslÄgas garums ir mazÄks par kilobaitu, tÄpÄc tas ir nopietni un uzticami.
In: ā Vai jums tagad vajag 2 kilobaitus?
EK: ā Å Ä·iet, ka tieÅ”i vakar bija 256... Nu kur tad vÄl?!
AttiecÄ«gi Å”is ir pirmais. Un, otrkÄrt, esoÅ”ais risinÄjums atbalsta atkÄrtotas Å”ifrÄÅ”anas procedÅ«ru - ir divi ākeksā (atslÄgas) pÄri, kas dod āklÄjusā, kas Å”ifrÄ (atslÄga ir atslÄgas, dek ir atslÄgu atvasinÄjumi, kas Å”ifrÄ) . Un, ja procedÅ«ra tiek uzsÄkta (tas notiek regulÄri, no 3 mÄneÅ”iem lÄ«dz Ā± dažiem), mÄs lejupielÄdÄjam jaunu "kÅ«ku" pÄri un atkÄrtoti Å”ifrÄjam datus. Mums ir atseviŔķi pakalpojumi, kas izÅem visus datus un Å”ifrÄ tos jaunÄ veidÄ; Dati tiek glabÄti blakus atslÄgas identifikatoram, ar kuru tie ir Å”ifrÄti. AttiecÄ«gi, tiklÄ«dz mÄs Å”ifrÄjam datus ar jaunÄm atslÄgÄm, mÄs dzÄÅ”am veco atslÄgu.
DažkÄrt maksÄjumi ir jÄveic manuÄli...
In: ā Tas ir, ja par kÄdu darbÄ«bu ir saÅemta atmaksa, vai jÅ«s joprojÄm atÅ”ifrÄsit to ar veco atslÄgu?
EK: - JÄ.
In: ā Tad vÄl viens mazs jautÄjums. Ja notiek kÄda veida kļūme, kritiens vai incidents, darÄ«jums ir jÄveic manuÄli. Ir tÄda situÄcija.
EK: - JÄ, dažreiz.
In: ā No kurienes jÅ«s iegÅ«stat Å”os datus? Vai arÄ« jÅ«s pats dodaties uz Å”o noliktavu?
EK: ā NÄ, nu, protams, mums ir sava veida back-office sistÄma, kurÄ ir mÅ«su atbalsta saskarne. Ja mÄs nezinÄm, kÄdÄ statusÄ ir darÄ«jums (piemÄram, lÄ«dz maksÄjumu sistÄma atbildÄja ar taimautu), mÄs nezinÄm a priori, tas ir, mÄs pieŔķiram galÄ«go statusu tikai ar pilnu pÄrliecÄ«bu. Å ajÄ gadÄ«jumÄ darÄ«jumam pieŔķiram Ä«paÅ”u statusu manuÄlai apstrÄdei. No rÄ«ta, nÄkamajÄ dienÄ, tiklÄ«dz atbalsts saÅem informÄciju, ka Å”Ädi un tÄdi darÄ«jumi paliek maksÄjumu sistÄmÄ, viÅi tos manuÄli apstrÄdÄ Å”ajÄ interfeisÄ.
In: ā Man ir pÄris jautÄjumi. Viens no tiem ir PCI DSS zonas turpinÄjums: kÄ reÄ£istrÄt to Ä·Ädi? Å is jautÄjums ir tÄpÄc, ka izstrÄdÄtÄjs varÄja ierakstÄ«t žurnÄlos jebko! Otrais jautÄjums: kÄ ieviest labojumfailus? Viena iespÄja ir izmantot rokturus datu bÄzÄ, taÄu var bÅ«t bezmaksas labojumi ā kÄda ir procedÅ«ra? Un treÅ”ais jautÄjums, iespÄjams, ir saistÄ«ts ar RTO, RPO. JÅ«su pieejamÄ«ba bija 99,97, gandrÄ«z Äetri deviÅi, bet, kÄ es saprotu, jums ir otrs datu centrs, treÅ”ais datu centrs un piektais datu centrs... KÄ jÅ«s tos sinhronizÄjat, pavairojat un viss pÄrÄjais?
EK: - SÄksim ar pirmo. Vai pirmais jautÄjums bija par baļķiem? Kad mÄs rakstÄm žurnÄlus, mums ir slÄnis, kas maskÄ visus sensitÄ«vos datus. ViÅa skatÄs uz masku un papildu laukiem. AttiecÄ«gi mÅ«su žurnÄlos ir jau maskÄti dati un PCI DSS Ä·Äde. Å is ir viens no testÄÅ”anas nodaļas pastÄvÄ«gajiem uzdevumiem. ViÅiem ir jÄpÄrbauda katrs uzdevums, tostarp žurnÄli, ko viÅi raksta, un tas ir viens no parastajiem uzdevumiem koda pÄrskatÄ«Å”anas laikÄ, lai kontrolÄtu, vai izstrÄdÄtÄjs kaut ko nav pierakstÄ«jis. TurpmÄkÄs pÄrbaudes informÄcijas droŔības departaments veic regulÄri apmÄram reizi nedÄļÄ: selektÄ«vi tiek Åemti pÄdÄjÄs dienas žurnÄli un tie tiek palaisti caur Ä«paÅ”u skeneri-analizatoru no testa serveriem, lai visu pÄrbaudÄ«tu.
Par karstajiem labojumiem. Tas ir iekļauts mÅ«su izvietoÅ”anas noteikumos. Mums ir atseviŔķa klauzula par labojumfailiem. MÄs uzskatÄm, ka labojumfailus izvietojam visu diennakti, kad tas ir nepiecieÅ”ams. TiklÄ«dz versija ir samontÄta, tiklÄ«dz tÄ ir palaista, tiklÄ«dz mums ir artefakts, mums ir sistÄmas administrators, kurÅ” dežurÄ uz atbalsta dienesta zvanu, un viÅÅ” to izvieto brÄ«dÄ«, kad tas ir nepiecieÅ”ams.
ApmÄram "Äetri deviÅi". TagadÄjais skaitlis patieÅ”Äm ir sasniegts, un mÄs to centÄmies sasniegt citÄ datu centrÄ. Tagad mums ir otrs datu centrs, un mÄs sÄkam izveidot marÅ”rutu starp tiem, un jautÄjums par starpdatu centru replikÄciju patieÅ”Äm ir nenozÄ«mÄ«gs jautÄjums. MÄs mÄÄ£inÄjÄm to atrisinÄt vienÄ reizÄ, izmantojot dažÄdus lÄ«dzekļus: mÄs mÄÄ£inÄjÄm izmantot to paÅ”u "Tarantula" - tas mums neizdevÄs, es jums tÅ«lÄ«t pateikÅ”u. TÄpÄc mÄs saÅÄmÄm "sens" pasÅ«tÄ«jumu manuÄli. Faktiski katra mÅ«su sistÄmas lietojumprogramma asinhroni veic nepiecieÅ”amo sinhronizÄciju starp datu centriem.
In: - Ja jums bija otrais, kÄpÄc jÅ«s nesaÅÄmÄt treÅ”o? Jo nevienam vÄl nav saŔķÄluÅ”Äs smadzenes...
EK: ā Bet mums nav Ŕķelto smadzeÅu. TÄ kÄ katru lietojumprogrammu vada multimasters, mums nav nozÄ«mes, kurÄ centrÄ pieprasÄ«jums tika nosÅ«tÄ«ts. MÄs esam gatavi tam, ka gadÄ«jumÄ, ja kÄds no mÅ«su datu centriem neizdosies (mÄs paļaujamies uz to) un lietotÄja pieprasÄ«juma vidÅ« pÄrslÄdzas uz otro datu centru, mÄs esam gatavi zaudÄt Å”o lietotÄju, patieÅ”Äm; bet tÄs bÅ«s vienÄ«bas, absolÅ«tÄs vienÄ«bas.
In: - Labvakar. Paldies par ziÅojumu. JÅ«s runÄjÄt par savu atkļūdotÄju, kas ražo dažus testa darÄ«jumus. Bet pastÄsti par testa darÄ«jumiem! Cik dziļi tas iet?
EK: ā Tas iziet cauri visam komponenta ciklam. Komponentam nav atŔķirÄ«bas starp testa darÄ«jumu un ražoÅ”anas darÄ«jumu. Bet no loÄ£iskÄ viedokļa Å”is vienkÄrÅ”i ir atseviŔķs projekts sistÄmÄ, kurÄ tiek palaisti tikai testa darÄ«jumi.
In: -Kur tu to nogriezi? Šeit Core nosūtīja...
EK: ā MÄs esam aiz āKorā Å”ajÄ gadÄ«jumÄ par testa darÄ«jumiem... Mums ir tÄda lieta kÄ marÅ”rutÄÅ”ana: āKorā zina, uz kuru maksÄjumu sistÄmu sÅ«tÄ«t - mÄs sÅ«tÄm uz viltus maksÄjumu sistÄmu, kas vienkÄrÅ”i dod http signÄlu un tas ir viss.
In: ā Sakiet, lÅ«dzu, vai jÅ«su pieteikums bija rakstÄ«ts vienÄ milzÄ«gÄ monolÄ«tÄ, vai arÄ« jÅ«s to sagriezÄt kÄdos servisos vai pat mikropakalpojumos?
EK: ā Mums, protams, nav monolÄ«ta, mums ir uz servisu orientÄta aplikÄcija. MÄs jokojam, ka mÅ«su serviss ir no monolÄ«tiem ā tie tieÅ”Äm ir diezgan lieli. GrÅ«ti to nosaukt par mikropakalpojumiem, taÄu tie ir pakalpojumi, kuros darbojas sadalÄ«to iekÄrtu darbinieki.
Ja pakalpojums serverÄ« ir apdraudÄts...
In: ā Tad man ir nÄkamais jautÄjums. Pat ja tas bÅ«tu monolÄ«ts, jÅ«s tik un tÄ teicÄt, ka jums ir daudz Å”o tÅ«lÄ«tÄjo serveru, tie visi pamatÄ apstrÄdÄ datus, un jautÄjums ir Å”Äds: āKÄda tÅ«lÄ«tÄjÄ servera vai lietojumprogrammas kompromitÄÅ”anas gadÄ«jumÄ jebkura atseviŔķa saite. , vai viÅiem ir kÄda veida piekļuves kontrole? KurÅ” no viÅiem ko var darÄ«t? Ar ko man jÄsazinÄs, lai iegÅ«tu kÄdu informÄciju?
EK: - JÄ noteikti. DroŔības prasÄ«bas ir diezgan nopietnas. PirmkÄrt, mums ir atvÄrta datu kustÄ«ba, un ostas ir tikai tÄs, caur kurÄm mÄs iepriekÅ” paredzam satiksmes kustÄ«bu. Ja komponents sazinÄs ar datu bÄzi (teiksim, ar Muskul), izmantojot 5-4-3-2, tam bÅ«s atvÄrts tikai 5-4-3-2, un citas ostas un citi satiksmes virzieni nebÅ«s pieejami. TurklÄt jums ir jÄsaprot, ka mÅ«su ražoÅ”anÄ ir aptuveni 10 dažÄdas droŔības cilpas. Un pat tad, ja aplikÄcija bÅ«tu kaut kÄdÄ veidÄ apdraudÄta, nedod Dievs, uzbrucÄjs nevarÄs piekļūt servera pÄrvaldÄ«bas konsolei, jo tÄ ir cita tÄ«kla droŔības zona.
In: ā Un Å”ajÄ kontekstÄ man interesantÄk ir tas, ka jums ir noteikti lÄ«gumi ar dienestiem - ko viÅi var darÄ«t, ar kÄdÄm ādarbÄ«bÄmā viÅi var sazinÄties savÄ starpÄ... Un normÄlÄ plÅ«smÄ daži konkrÄti dienesti kÄdus pieprasa. rinda, ādarbÄ«buā saraksts, no otras puses. Å Ä·iet, ka viÅi parastÄ situÄcijÄ nevÄrÅ”as pie citiem, un viÅiem ir citas atbildÄ«bas jomas. Ja kÄds no tiem tiks apdraudÄts, vai tas spÄs traucÄt Ŕī pakalpojuma ādarbÄ«basā?..
EK: - Es saprotu. Ja normÄlÄ situÄcijÄ ar citu serveri komunikÄcija vispÄr bija atļauta, tad jÄ. SaskaÅÄ ar SLA lÄ«gumu mÄs neuzraugÄm, ka jums ir atļautas tikai pirmÄs 3 ādarbÄ«basā, un jums nav atļautas 4 ādarbÄ«basā. Tas mums laikam ir lieki, jo mums jau principÄ ir 4 lÄ«meÅu aizsardzÄ«bas sistÄma Ä·ÄdÄm. MÄs labprÄtÄk aizstÄvam sevi ar kontÅ«rÄm, nevis iekÅ”puses lÄ«menÄ«.
KÄ darbojas Visa, MasterCard un Sberbank
In: ā Es vÄlos precizÄt jautÄjumu par lietotÄja pÄrslÄgÅ”anu no viena datu centra uz citu. Cik es zinu, Visa un MasterCard darbojas, izmantojot binÄro sinhrono protokolu 8583, un tur ir maisÄ«jumi. Un es gribÄju zinÄt, tagad mÄs domÄjam pÄreju - vai tas ir tieÅ”i "Visa" un "MasterCard" vai pirms maksÄjumu sistÄmÄm, pirms apstrÄdes?
EK: - Tas ir pirms maisÄ«jumiem. MÅ«su maisÄ«jumi atrodas tajÄ paÅ”Ä datu centrÄ.
In: ā Aptuveni runÄjot, vai jums ir viens savienojuma punkts?
EK: ā āVisaā un āMasterCardā ā jÄ. VienkÄrÅ”i tÄpÄc, ka Visa un MasterCard prasa diezgan nopietnas investÄ«cijas infrastruktÅ«rÄ, lai noslÄgtu atseviŔķus lÄ«gumus, piemÄram, otrÄ miksu pÄra iegÅ«Å”anai. Tie ir rezervÄti viena datu centra ietvaros, bet, ja, nedod Dievs, mÅ«su datu centrs, kurÄ ir maisÄ«jumi pieslÄgÅ”anai Visa un MasterCard, tad mums bÅ«s zudis savienojums ar Visa un MasterCard...
In: ā KÄ tos var rezervÄt? Zinu, ka Visa principÄ pieļauj tikai vienu pieslÄgumu!
EK: ā ViÅi paÅ”i piegÄdÄ aprÄ«kojumu. JebkurÄ gadÄ«jumÄ mÄs saÅÄmÄm aprÄ«kojumu, kas ir pilnÄ«bÄ lieks iekÅ”Ä.
In: ā TÄtad stends ir no viÅu Connects Orange?..
EK: - JÄ.
In: ā Bet kÄ ar Å”o gadÄ«jumu: ja jÅ«su datu centrs pazÅ«d, kÄ jÅ«s varat turpinÄt to izmantot? Vai arÄ« satiksme vienkÄrÅ”i apstÄjas?
EK: - NÄ. Å ajÄ gadÄ«jumÄ mÄs vienkÄrÅ”i pÄrslÄgsim trafiku uz citu kanÄlu, kas, protams, mums bÅ«s dÄrgÄks un mÅ«su klientiem dÄrgÄks. Bet satiksme nenotiks caur mÅ«su tieÅ”o savienojumu ar Visa, MasterCard, bet gan caur nosacÄ«to Sberbank (ļoti pÄrspÄ«lÄti).
Es ļoti atvainojos, ja aizvainoju Sberbank darbiniekus. Bet saskaÅÄ ar mÅ«su statistiku starp Krievijas bankÄm Sberbank krÄ«t visbiežÄk. Nepaiet mÄnesis, lai SberbankÄ kaut kas nenokristu.