HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

KĂ”ik rÀÀgivad arenduse ja testimise protsessidest, personali koolitamisest, motivatsiooni tĂ”stmisest, kuid need protsessid on vĂ€heolulised, kui teenuse seiskumise minut maksab kosmilisi summasid. Mida teha, kui teete rahandustehinguid ranged SLA raames? Kuidas suurendada oma sĂŒsteemide usaldusvÀÀrsust ja talitlushĂ€iret taluma, jĂ€ttes arenduse ja testimise kĂ”rvale?

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

JĂ€rgmine konverents HighLoad++ toimub 6. ja 7. aprillil 2020 Peterburis. Üksikasjad ja piletid lingi kaudu. 9. novembril, kell 18:00. HighLoad++ Moskva 2018, saal "Delhi + Calcutta". Teesid ja esitlus.

Evgeni Kuzovlev (edaspidi – EK): – Tere, sĂ”brad! Minu nimi on Kuzovlev Evgeni. Olen ettevĂ”ttest EcommPay, tĂ€psemalt – EcommPay IT, grupi IT-osakond. Ja tĂ€na rÀÀgime teiega seisakutest – kuidas neid vĂ€ltida ja kuidas minimeerida nende tagajĂ€rgi, kui vĂ€ltimine ei Ă”nnestunud. Teema on selline: "Mida teha, kui minut seiskumist maksab 100 000 dollarit"? Meil on, et ette vaadates, numbrid on vĂ”rreldavad.

Millega tegeleb EcommPay IT?

Kes me oleme? Miks ma siin teie ees seisan? Miks mul on Ôigus teile midagi rÀÀkida? Ja millest me siin pÔhjalikumalt rÀÀgime?

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

EcommPayi ettevĂ”tete grupp on rahvusvaheline makseteenuse pakkuja. Me töötleme makseid ĂŒle kogu maailma – Venemaal, Euroopas ja Kagu-Aasias. Meil on 9 kontorit, kokku 500 töötajat, millest veidi vĂ€hem kui pooled on IT-spetsialistid. KĂ”ik, mida me teeme, ja kĂ”ik, millega raha teenime, tuleb meist endist.

KĂ”ik meie tooted (ja meil on neid piisavalt palju – meie suure IT-toodete rikkaine on umbes 16 erinevat komponente) on meie enda loodud; me kirjutame need ise, arendame ise. Ja praegu teeme me umbes miljon tehingut pĂ€evas (miljonid – ilmselt on see Ă”ige öelda). Me oleme suhteliselt noor ettevĂ”te – meid on tegutsenud umbes kuus aastat.

Kuus aastat tagasi oli see selline idufirma, kui tulid poisid koos Àriideega. Nad olid seotud ideega (mitte kui muuga, peale idee), ja me alustasime. Nagu iga idufirma, jooksime me kiiremini... Meie jaoks oli olulisem kiirus, mitte kvaliteet.

Millalgi peatusime: mÔistsime, et me ei saa enam sama kiirusel ja kvaliteediga elada, seega peame keskenduma kvaliteedile. Sel hetkel otsustasime kirjutada uue platvormi, mis oleks Ôige, skaleeritav ja usaldusvÀÀrne. Selle platvormi arendamine algas (me hakkasime investeerima, arendama, testima), kuid mingil hetkel mÔistsime, et arendus ja testimine ei luba meil saavutada uut teenuse kvaliteeditaset.

Te loote uue toote, viite selle tootmisse, kuid ikkagi lÀheb kuskil midagi valesti. Ja tÀna rÀÀgime sellest, kuidas saavutada uus kvaliteeditase (kuidas meie seda tegime, meie kogemus), jÀttes vÀlja arenduse ja testimise; arutame, mida tootmine saab ise teha, mida ta testimisele pakkuda saab, et mÔjutada kvaliteeti.

Seisakud. Tootmise kÀsud.

Alati peamine nurgakivi, millest me tĂ€na rÀÀgime, on seisaku aeg. Kohutav sĂ”na. Kui meil tekib seisak, siis on asjad halvasti. Me kipume kohe tegutsema, sĂŒsteemiadministraatorid hoiavad serverit – lootkem, et see ei kuku, nagu laul rÀÀgib. Just sellest me tĂ€na rÀÀgime.

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

Kui hakkasime oma lÀhenemisi muutma, koostasime neli kÀsku. Need on mul esitatud slaididel:

Need kÀsud on piisavalt lihtsad:

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

  • Probleemi kiire tuvastamine.
  • Probleemi veelgi kiiremini lahendamine.
  • Aidata mĂ”ista pĂ”hjust (hiljem, arendajatele).
  • Ja lĂ€henemiste standardiseerimine.

Joonitan tÀhelepanu punktile nr 2. Me eemaldate probleemi, mitte ei lahenda seda. Lahendada on teisejÀrguline. Meie jaoks on esmatÀhtis, et kasutaja oleks kaitstud selle probleemi eest. Probleem eksisteerib mingis isoleeritud keskkonnas, kuid see keskkond ei puutu tema ellu. Tegelikult kÀime lÀbi need neli probleemigruppi (mÔnest rÀÀgime lÀhemalt, mÔnest vÀhem), ja jagan, mida me kasutame ning milline on meie vastav kogemus lahendustes.

Probleemide lahendamine: kui need juhtuvad ja mida nendega teha?

Kuid alustame mitte jĂ€rjekorras, vaid punktist nr 2 – kuidas kiiresti probleemist vabaneda? Probleem on olemas – me peame selle lahendama. „Mida me sellega teeme?“ – see on peamine kĂŒsimus. Ja kui hakkasime mĂ”tlema, kuidas probleemi lahendada, töötasime vĂ€lja mĂ”ned nĂ”uded, millega probleemide lahendamine peab vastama.

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

Need nĂ”uded sĂ”nastamiseks otsustasime endale esitada kĂŒsimus: „Millal meil probleemid tekivad?“ Ja probleemid, nagu selgus, esinevad neljas olukorras:

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

  • Riistvara rike.
  • VĂ€listeenuste tĂ”rge.
  • Tarkvara versiooni vahetamine (see sama deploy).
  • Koormuse plahvatuslik kasv.

Esimeste kahe kohta me rÀÀkima ei hakka. Riistvara rike lahendatakse piisavalt lihtsalt: kĂ”igil asjadel peaks olema varukoopia. Kui need on kettad – kettad peavad olema RAID-is ĂŒhendatud, kui see on server – server peab olema varustatud, kui teil on vĂ”rguinfrastruktuur – peate seadma teise vĂ”rguinfrastruktuuri koopia, see tĂ€hendab, et vĂ”tate ja dubleerite. Ja kui teil midagi nurjub, lĂŒlitute varuressurssidele. Siin on keeruline rohkem midagi öelda.

Teiseks on see vĂ€line teenus, mis ei tööta. Enamiku sĂŒsteemide jaoks ei ole see probleem, kuid mitte meie jaoks. Kuna me töötleme makseid, oleme me agendiks, kes seisab kasutaja (kes sisestab oma kaardid) ja pankade, maksesĂŒsteemide („Visa”, „MasterCard”, „Mir”) vahel. Meie vĂ€listeenustel (maksesĂŒsteemidel, pankadel) on kalduvus tĂ”rkuda. Seda ei saa mĂ”jutada ei meie ega teie (kui teil on sellised teenused).

Mida sel juhul teha? Siin on kaks vĂ”imalust. Esiteks, kui saate, peaksite selle teenuse kuidagi kahekordistama. NĂ€iteks, kui saame, suuname me trafiku ĂŒhest teenusest teise: töötlesime nĂ€iteks kaarte lĂ€bi „Sberbank”, kui „Sberbankil” on probleeme – suuname trafiku [tinglikult] „Raiffeiseni”. Teiseks, mida me saame teha, on vĂ€ga kiiresti mĂ€rgata vĂ€listeenuste tĂ”rkeid ja seetĂ”ttu rÀÀgime reaktsiooni kiirusest jĂ€rgmises aruande osas.

Meie arvates saame nendest neljast konkreetselt mĂ”jutada tarkvaraversiooni vahetust – teha samme, mis aitavad olukorda parandada nii juurutamiste kui ka kiire koormuse kasvu kontekstis. Just seda me tegime. Siinkohal vĂ€ikene mĂ€rkuse koht


MÔned neist neljast probleemist lahendatakse kohe, kui teil on pilv. Kui olete Microsoft Azure'i, Ozone'i, meie Yandexi vÔi Mail.ru pilvedes, siis muutub vÀhemalt riistvararikkumine nende probleemiks ning teie olukord paraneb kohe riistvararikkumise osas.

Me oleme natuke ebatavaline ettevĂ”te. Siin kĂ”ik rÀÀgivad Kubernetesest ja pilvedest – meil ei ole ei Kuberneteset ega pilvi. Meie jaoks on olemas serverid paljudes andmekeskustes ja me peame sellel riistvaral elama, peame vastutama selle eest. SeetĂ”ttu rÀÀgime sellest kontekstist. Nii et probleemidest. Esimese kaks jĂ€tsime kĂ”rvale.

Tarkvaraversiooni vahetus. Andmebaasid

Meie arendajatel ei ole juurdepÀÀsu tootmisraami. Miks? Sest oleme sertifitseeritud PCI DSS-i jĂ€rgi ning meie arendajad ei tohi lihtsalt „prod”-i sisse minna. Ja kĂ”ik, punkt. TĂ€iesti. SeetĂ”ttu lĂ”ppeb arenduse vastutus just siis, kui arendus on ĂŒle andnud versiooni vĂ€ljalaskmiseks.

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

Teine pĂ”hineb, millele toetume ja mis meid samuti vĂ€ga aitab – see, et meil puuduvad unikaalsed dokumenteerimata teadmised. Loodan, et teil on samuti. Sest kui ei ole, siis tekkivad probleemid. Probleemid ilmnevad siis, kui neid unikaalseid, dokumenteerimata teadmisi ei ole Ă”igeaegselt Ă”iges kohas. Oletame, et teil on ĂŒks inimene, kes teab, kuidas konkreetset komponenti juurutada – kui seda inimest pole, ta on puhkusel vĂ”i haige – siis ongi probleemid kohal.

Ja kolmas pĂ”hjus, millele me jĂ”udsime. Me jĂ”udsime sellele lĂ€bi valu, vere ja pisarate – me jĂ”udsime arusaamisele, et iga meie versioon sisaldab vigu, isegi kui seal ei tundu olevat vigu. Oleme enda jaoks otsustanud: kui me midagi juurutame, kui me midagi tootmisse viime – siis on meie versioon vigadega. Oleme vormistanud nĂ”uded, millest meie sĂŒsteem peab kinnipidama.

Tarkvara versiooni vahetuse nÔuded

Need nÔuded on kolm:

HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

  • Peame saama kiiresti tagasi pöörduda.
  • Peame minimeerima ebaĂ”nnestunud juurutamise mĂ”ju.
  • Ja me peame olema vĂ”imelised kiiresti paralleelselt juurutama.
    Just sellises jĂ€rjekorras! Miks? Sest esmajĂ€rjekorras ei ole uue versiooni juurutamise puhul oluline kiirus, aga teil on tĂ€htis, kui midagi lĂ€heb valesti, kiiresti tagasi pöörduda ja mĂ”ju minimeerida. Kuid kui teil on tootmisversioonide komplekt, kus on selgunud, et seal on viga (nagu vĂ€lk selgest taevast, juurutamist ei olnud, aga viga on olemas) – on kiirus jĂ€rgnevate juurutamiste puhul tĂ€htis. Mida me oleme teinud, et neid nĂ”udeid rahuldada? Oleme kasutanud sellist metoodikat:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    See on piisavalt tuntud, me ei ole seda mitte kordagi leiutanud – tegemist on Blue/Green juurutamisega. Mis see on? Igal teie serverigruppidel, kus asuvad teie rakendused, peab olema koopiat. Koopiat, mis on ‘soe’: sellele ei suunata liiklust, kuid vajadusel saab selle liikluse sellele koopiale suunata. See koopia sisaldab eelmist versiooni. Juurutamise hetkel installite koodi mitteaktiivsele koopiale. SeejĂ€rel suunate osa liiklust (vĂ”i kogu) uuele versioonile. Sel viisil, et muuta liiklusvoogu vanalt versioonilt uuele, peate tegema vaid ĂŒhe toimingu: peate upstreamis muutma koormuse jaotajat, muutma suunda – ĂŒhest upstreamist teise. See on vĂ€ga mugav ja lahendab kiire vahetamise ning kiire tagasivĂ”tmise probleemi.

    Siin on ka teise kĂŒsimuse lahendus – minimaliseerimine: te saate suunata uuele realle, uue koodiga, ainult osa oma liiklusest (nĂ€iteks 2%). Ja need 2% – need ei ole 100%! Kui teie liiklus kaob 100% ebaĂ”nnestunud juurutamise tĂ”ttu – on see hirmutav, kui aga kaob 2% liiklust – see on ebameeldiv, kuid ei ole hirmutav. Veelgi enam, kasutajad tĂ”enĂ€oliselt isegi ei mĂ€rka seda, kuna teatud juhtudel (mitte kĂ”igis) sama kasutaja, vajutades F5, satub ta teisele, töötavale versioonile.

    Blue/Green juurutamine. Suunamine

    Kuid kĂ”ik ei ole nii lihtne kui „Blue/Green juurutamine”
 KĂ”ik meie komponendid saab jagada kolme gruppi:

    • see on front-end (makse lehed, mida meie kliendid nĂ€evad);
    • tuumprotsess;
    • adapter maksesĂŒsteemide (pangad, „MasterCard”, „Visa”
) töötamiseks.

    Siin on aga nĂŒanss – see puudutab liinide vahelist suunamist. Kui te lihtsalt suunate 100% liiklust, siis pole teil neid probleeme. Kuid kui soovite suunata 2%, tekivad kĂŒsimused: "Kuidas seda teha?" Lihtsaim viis on: vĂ”ite seadistada juhusliku valiku, Round Robin nginx'is, ja teil on 2% – vasakule, 98% – paremale. Kuid see ei sobi alati.

    Meil nĂ€iteks suhtleb kasutaja sĂŒsteemiga mitte ĂŒhe pĂ€ringu kaudu. See on normaalne: 2, 3, 4, 5 pĂ€ringut – teie sĂŒsteemid vĂ”ivad olla samasugused. Ja kui on oluline, et kĂ”ik kasutaja pĂ€ringud tuleksid samasse liini, kuhu tuli esimene pĂ€ring, vĂ”i (teine punkt) et kĂ”ik kasutaja pĂ€ringud tuleksid uuele liinile pĂ€rast vahetust (kasutaja vĂ”is alustada töötamist sĂŒsteemiga enne vahetust) – siis ei sobi juhuslik jaotamine. Siis on jĂ€rgmised variandid:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Esimene variant, kĂ”ige lihtsam – pĂ”hineb kliendi baaselementidel (IP Hash). Teil on IP ja jagate seda vasakule-paremale. Siis toimib teine minu kirjeldatud olukord, kui on toimunud juurutamine, ja kasutaja on juba hakanud teiega töötama. Juurutamise hetkest alates saadetakse kĂ”ik pĂ€ringud uuele joonele (samale, ĂŒtleme).

    Kui see mingil pÔhjusel ei sobi ja peate kindlasti saatma pÀringud sellele joonele, kuhu tuli esmane, initsiaalne pÀring, siis on teil kaks varianti 

    Esimene variant: saate kasutada tasulist nginx+. Seal on mehhanism Sticky sessions, mis esialgse kasutaja pÀringu korral mÀÀrab kasutajale seansi ja seondab selle teatud apstrimiga. KÔik edasised kasutaja pÀringud seansi kehtivuse jooksul saadetakse sama apstrimi juurde, kuhu seanss mÀÀrati.

    See ei sobinud meile, kuna meil oli juba tavaline nginx. Üleminek nginx+ – see ei olnud just kallis, lihtsalt meie jaoks oli see veidi valuline ja ebaĂ”ige. 'Session stick' ei töötanud nĂ€iteks meie jaoks pĂ”himĂ”tteliselt selle tĂ”ttu, et 'Session stick' ei vĂ”imalda suunata tunnuse jĂ€rgi 'VĂ”i-vĂ”i'. Seal saab mÀÀrata, et teeme 'Session stick' nĂ€iteks IP-aadressi vĂ”i IP-aadressi ja kĂŒpsiste vĂ”i POST-pĂ”histe parameetrite jĂ€rgi, aga 'VĂ”i-vĂ”i' on sealt juba keerulisem.

    SeetĂ”ttu jĂ”udsime neljanda variandi juurde. VĂ”tsime nginx 'steroidide' peal (see on openresty) – see on sama nginx, mis toetab lisaks ka last-skripte. Saate kirjutada last-skripti, edastada selle 'openresty'le ja see last-skript kĂ€ivitatakse, kui kasutaja pĂ€ring tuleb.

    Ja me kirjutamine selline skript, installisime endale 'openresty' ja selles skriptis lĂ€bime 6 erinevat parameetrit 'VĂ”i' kombinatsiooni kaudu. SĂ”ltuvalt sellest, milline parameeter on olemas, teame, et kasutaja tuli ĂŒhele lehekĂŒljele vĂ”i teisele, ĂŒhele liinile vĂ”i teisele.

    Blue/Green deploy. Eelised ja puudused.

    Muidugi, oleks olnud vĂ”imalik teha natuke lihtsamalt (kasutades nĂ€iteks „Sticky sessions”), kuid meil on veel selline nĂŒanss, et meiega ei suhtle ainult kasutaja ĂŒhe tehingu raames... Meiega suhtlevad ka maksesĂŒsteemid: pĂ€rast tehingu töötlemist (saates pĂ€ringu maksesĂŒsteemile) saame tagasiside.
    Oletame, et kui meie kontuuris saame kasutaja IP-aadressi kĂ”ikides pĂ€ringutes edastada ja selle alusel kasutajate IP-aadresse eristada, siis me ei ĂŒtle nĂ€iteks „Visa”-le: „Me oleme selline retrofirma, me paistame olevat rahvusvaheline (meie veebis ja Venemaal)
 Palun saatke meile kasutaja IP-aadress lisaks lisavĂ€ljal, teie standardiseeritud protokolliga!” Loomulikult nad ei nĂ”ustu.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    SeetĂ”ttu see meile ei sobinud – me tegime openresty. Vastavalt on meie suunamine vĂ€lja nĂ€inud nii:

    „Blue/Green deployment” on, vastavalt, omadused, millest ma rÀÀkisin, ja puudused.

    Puudusi on kaks:

    • teile tuleb tegeleda suunamisega;
    • teine pĂ”hjalik puudus on kulud.

    Teiltes rohkem servereid, teil on rohkem operatiivresources, peate kulutama rohkem energiat kogu selle loomaaia hooldamiseks.

    Muide, eeliste seas on veel ĂŒks asi, mida ma varem maininud ei ole: teil on varukohad koormuse kasvu korral. Kui teil on plahvatuslik koormus, saabub suur hulk kasutajaid, siis lĂŒlitate lihtsalt teise taseme 50/50 ja teil on kohe 2x rohkem servereid teie klastris, kuni leiate lahenduse serverite olemasolu probleemile.

    Kuidas teha kiiret juurutamist?

    Me rÀÀkisime probleemide vĂ€hendamisest ja kiirest tagasikĂ€igust, aga kĂŒsimus jÀÀb: „Kuidas kiiresti juurutada“?

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Siin on lĂŒhidalt ja kĂ”ik on lihtne.

    • Teil peab olema CD-sĂŒsteem (Continuous Delivery) – ilma selleta ei saa. Kui teil on ĂŒks server, saate kĂ€sitsi juurutada. Meil on umbes tuhat viissada serverit ja kĂ€sitsi viissada, see on selge – me saame maha istuda sama suuruse osakonna, et lihtsalt juurutada.
    • DĂ©ployimine peab olema paralleelne. Kui teil on jĂ€rkjĂ€rguline deploy, siis on kĂ”ik halvasti. Üks server – see on normaalne, tuhat viis sada serverit eemaldate terve pĂ€eva.
    • JĂ€lle, kiirendamiseks, see pole enam kohustuslik, ilmselt. Deployimise ajal toimub tavaliselt projekti kogumine. Kas teil on veebiprojekt, on seal front-end osa (teete seal veebipaki, kogute npm-i – midagi sellist), ja see protsess ei kesta pĂ”himĂ”tteliselt kaua – umbes 5 minutit, kuid need 5 minutit vĂ”ivad olla kriitilise tĂ€htsusega. SeetĂ”ttu me nĂ€iteks nii ei tee: me oleme need 5 minutit Ă€ra vĂ”tnud, me deployime artefakte.

      Mis on artefakt? Artefakt on kogutud versioon, kus kogu koostamisprotsess on juba lĂ”pule viidud. Seda artefakti hoiame artefaktide ladustamises. Selliseid ladustamisi kasutasime varem kahte – see oli Nexus ja praegu jFrog Artifactory. 'Nexus' oli algselt kasutusele vĂ”etud, kuna alustasime seda lĂ€henemist Java rakendustes (see sobis sellele lĂ€henemisele hĂ€sti). Hiljem lisasime sinna osa rakendusi, mis on kirjutatud PHP-s; siis 'Nexus' enam ei sobinud ja seetĂ”ttu valisime jFrog Artifactory, mis suudab artefaktida peaaegu kĂ”ike. Oleme jĂ”udnud isegi selleni, et selles artefaktide ladustamises hoiame oma binaarpakette, mille serverite jaoks kogume.

    Plahvatuslik koormuse kasv

    RÀÀkisime tarkvaraversiooni vahetamisest. JÀrgmiseks on meil plahvatuslik koormuse kasv. Siin, ilmselt, mÔistan plahvatuslikku koormuse kasvu veidi valesti...

    Oleme loonud uue sĂŒsteemi – see on teenustele suunatud, moodne ja ilus, igal pool töötajad, igal pools jĂ€rjekorrad, igal pool asĂŒnkroonsus. Sellistes sĂŒsteemides vĂ”ivad andmed liikuda erinevates voogudes. Esimese tehingu jaoks vĂ”ivad osaleda 1., 3. ja 10. töötaja, teise tehingu jaoks – 2., 4. ja 5. Ja tĂ€na, ĂŒtleme, hommikul, on teil andmevoog, mis kasutab esimesi kolme töötajat, aga Ă”htul muutub see jĂ€rsult ja kĂ”ik kasutab teisi kolme töötajat.

    Ja siin on niimoodi, et peate kuidagi töötajaid skaalama, peate kuidagi oma teenuseid skaalama, kuid samas ei tohi lubada ressursside paisumist.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Oleme mÀÀratlenud endale nĂ”uded. Need nĂ”uded on piisavalt lihtsad: et seal oleks teenuse avastamine, parameetriseerimine – kĂ”ik on standardne selliste skaleeritavate sĂŒsteemide ehitamiseks, vĂ€lja arvatud ĂŒks punkt – see on ressursside amortiseerimine. Olime öelnud, et me ei ole valmis ressursse amortiseerima, et serverid Ă”hku soojendaksid. VĂ”tsime „Consul’i”, vĂ”tsime „Nomadi”, mis haldab meie töötajaid.

    Miks on see meie jaoks probleem? Vaatame natuke tagasi. Meie taga on hetkel umbes 70 maksesĂŒsteemi. Hommikul suunatakse liiklus lĂ€bi „Sberbanki”, seejĂ€rel vĂ”ib nĂ€iteks „Sberbank” kokku kukkuda ja me peame liikuma teise maksesĂŒsteemi. Meil oli 100 töötajat, kui „Sberbank” töötas, kuid pĂ€rast seda peame kiiresti tĂ”stma 100 töötajat teise maksesĂŒsteemi jaoks. Ja see kĂ”ik peaks ideally toimuma ilma inimeste sekkumiseta. Kuna kui on inimeste sekkumine, peab insener olema 24/7 valvel, et sellega tegeleda, kuna selliseid tĂ”rkeid, kui 70 sĂŒsteemi on su selja taga, juhtub regulaarselt.

    SeetĂ”ttu vaatasime „Nomadit”, millel on avatud IP, ja kirjutasime oma sĂŒsteemi Scale-Nomad – ScaleNo, mis teeb jĂ€rgmised asjad: ta jĂ€lgib jĂ€rjekorra kasvu ja vĂ€hendab vĂ”i suurendab töötajate arvu sĂ”ltuvalt jĂ€rjekorra dĂŒnaamikast. Kui olime selle valmis saanud, mĂ”tlesime: „Kas vĂ”iks seda avatud allikana jagada?” Siis vaatasime sellele – see on nii lihtne, kui kaks senti.

    Me ei ole seda avatud lĂ€htekoodiga teinud, kuid kui pĂ€rast esitlust, tunnete, et teil on sellist lahendust vaja, siis viimases slaidis on minu kontaktandmed – palun kirjutage mulle. Kui leidub vĂ€hemalt 3–5 inimest, siis me teeme selle avatud lĂ€htekoodiga.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Kuidas see töötab? Vaatame! KĂŒll aga karte eelnevalt: vasakul on meie jĂ€lgimise osa: see on ĂŒks joon, ĂŒlaosas – sĂŒndmuste töötlemise aeg, keskel – tehingute arv, all – töötajate arv.

    Kui vaatame, siis sellel pildil on tĂ”rge. Ülemisel graafikul on ĂŒks joon vĂ€lja kukkunud 45 sekundi jooksul – ĂŒks maksesĂŒsteem kukkus. Siin on kaks minutit liiklust ja jĂ€rsu tĂ”usu kasv teises maksesĂŒsteemis, kus töötajaid polnud (me ei kasutanud ressursse – vastupidi, kasutasime ressurssi Ă”igesti). Me ei tahtnud ĂŒle koormata – seal oli minimaalne arv, umbes 5–10 töötajat, kuid nad ei tulnud toime.

    Viimases graafikus on nĂ€ha "mĂŒgarik", mis nĂ€itab, et "Skaaleno" tĂ”stis selle arvu kahekordselt. Ja siis, kui graafik veidi langes, vĂ€hendas see veidi automaatreĆŸiimis töötajate arvu. Nii see asi töötab. RÀÀkisime punktist nr 2 – "Kuidas kiiresti pĂ”hjustest vabaneda?"

    JĂ€lgimine. Kuidas kiiresti probleemi avastada?

    NĂŒĂŒd on esimene punkt – "Kuidas kiiresti probleemi avastada?" JĂ€lgimine! Me peame kiiresti aru saama teatud asjadest. Millistest asjadest peame kiiresti aru saama?

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Kolm asja!

    • Me peame kiiresti mĂ”istma ja kiiresti mĂ”istma meie enda ressursside töövĂ”imet.
    • Me peame kiiresti mĂ”istma rikete mĂ€rkamist, jĂ€lgima sĂŒsteemide töövĂ”imet, mis on meile vĂ€listest allikatest.
    • Kolmas punkt – loogiliste vigade tuvastamine. See on siis, kui sĂŒsteem töötab, kĂ”ik nĂ€itajad on normis, kuid midagi ei ole Ă”igesti.

    Siin ei rÀÀgi ma tĂ”enĂ€oliselt midagi nii Ă€gedat. Olen nagu nĂ€htav kapten. Otsisime turult, mis seal on. Meil on tekkinud "naljakas loomaaiad". Nii on meil nĂŒĂŒd tekkinud loomaaed:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Meil kasutatakse «Zabbix»-it riistvara jÀlgimiseks ning pÔhiserverite vÔtmeindikaatorite jÀlgimiseks. Andmebaaside jaoks kasutame «Okmeter»-it. «Grafana» ja «Prometheus» jÀlgivad kÔiki teisi nÀitajaid, mis ei kuulu kahe esimesse kategooriasse; osa neist jÀlgitakse «Grafana» ja «Prometheus» abil, osa «Grafana» koos «Influx»-i ja Telegraf-iga.

    Aasta tagasi tahtsime kasutada New Relic-i. VĂ€ga Ă€ge tööriist, ta suudab kĂ”ike. Aga seda, kui palju ta suudab, tuleneb ka tema kĂ”rgest hinnast. Kui meie serverite arv kasvas 1500-ni, tuli meile mĂŒĂŒgimees ja ĂŒtles: «LĂ€hme jĂ€rgmiseks aastaks lepingut sĂ”lmima». Kui me hinda vaatasime, otsustasime, et ei, me seda teha ei saa. Praegu loobume «New Relic»-ist, meil on alles umbes 15 serverit, mis on veel «New Relic»-i all jĂ€lgimisel. Hind osutus tĂ€iesti uskumatu.

    Ja on ĂŒks tööriist, mille me ise vĂ€lja töötasime – see on Debugger. Alguses nimetasime seda 'Baggeriks', kuid hiljem kĂ€is meil inglise keele Ă”petaja, kes naeris valjult ja me nimetatelime selle ĂŒmber 'Debuggeriks'. Mis see on? See on tööriist, mis viib lĂ€bi 15–30 sekundi jooksul igas komponendis, nagu 'must kast' sĂŒsteemis, testid komponentide ĂŒldise töökindluse kohta.

    NĂ€iteks, kui on vĂ€line leht (makseleht) – ta lihtsalt avab selle ja vaatab, kuidas see peaks vĂ€lja nĂ€gema. Kui see on töötlemine, siis saadab ta katsetava 'transa' – vaatab, et see 'transa' jĂ”uaks kohale. Kui see on side maksesĂŒsteemidega – saatame testpĂ€ringu, kus saame, ja vaatame, et kĂ”ik on korras.

    Millised nÀitajad on jÀlgimiseks olulised?

    Mida me peamiselt jÀlgime? Millised nÀitajad on meie jaoks tÀhtsad?

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    • Response time / RPS esipindadel – vĂ€ga oluline nĂ€itaja. See annab kohe mĂ€rku, et teil on midagi valesti.
    • KĂŒpsiste töötlemiseks vajalik arv kĂ”igis jĂ€rjekordades.
    • Töötajate arv.
    • Peamised Ă”igete nĂ€itajate metoodikad.

    Viimane punkt on «Àri» mÔÔdik. Kui soovite seda jĂ€lgida, peate mÀÀratlema ĂŒhe vĂ”i kaks mÔÔdikut, mis on teie jaoks olulised nĂ€itajad. Meil on selline mÔÔdik – see on lĂ€bilaskevĂ”ime (see on edukate tehingute arvu suhe kogu tehingute voogu). Kui see muutub 5-10-15 minuti jooksul – siis on meil probleem (kui see muutub kardinaalselt).

    Kuidas see meie juures vĂ€lja nĂ€eb – nĂ€ide meie ĂŒhest armatuurlaudast:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Vasakul – 6 graafikut, mis vastavad ridadele – töötajate arv ja sĂ”numite arv jĂ€rjekordades. Paremal – RPS, RTS. Alumisel real – see «Àri» mÔÔdik. Ja «Àri» mÔÔdikul nĂ€eme kohe, et kahe keskmise graafiku puhul on midagi valesti... See on just see, et jĂ€rgmine sĂŒsteem, mis meie taga seisab, on vĂ€lja kukkunud.

    Teiseks, mida me tegema pidime, oli jĂ€lgida, kuidas vĂ€listest maksesĂŒsteemidest tehingud ebaĂ”nnestusid. Siin kasutasime OpenTracingut – mehhanismi, standardit, paradigma, mis vĂ”imaldab jĂ€lgida hajutatud sĂŒsteeme; ja me muutsime seda veidi. Tavaline OpenTracingu paradigma ĂŒtleb, et me ehitame jĂ€lgimise iga eraldi pĂ€ringu jaoks. Meie ei vajanud seda, seega pakkisime selle kokku agregatiivseks jĂ€lgimiseks. Loodud tööriist vĂ”imaldab meil jĂ€lgida sĂŒsteemide kiirus, mis meie taga on.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Graafik nĂ€itab, et ĂŒks maksesĂŒsteem hakkas vastama 3 sekundi jooksul – meil tekkisid probleemid. Samuti reageerib see asi, kui probleemid algasid, 20-30 sekundi jooksul.

    Ja kolmas jÀlgimisveaklass, mis eksisteerib, on loogiline jÀlgimine.

    Ausalt öeldes ei teadnud, mida sellel slaidil joonistada, kuna otsisime turult pikka aega seda, mis meile sobib. Mitte midagi ei leidnud, seega pidime ise tegema.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Mida ma mĂ”istan loogilise jĂ€lgimise all? Kujutage ette: teete endale sĂŒsteemi (nĂ€iteks, kloni Tinderist); olete selle valmistanud ja kĂ€ivitanud. Edukas juht Vasja Pupkin paigaldab selle enda telefoni, nĂ€eb seal tĂŒdrukut, meeldib talle
 kuid meeldimine ei lĂ€he tĂŒdrukule – see lĂ€heb turvamees MihhĂĄlychile samas Ă€rikeskuses. Juht lĂ€heb alla ja siis kĂŒsib imestunult: "Kuidas see turvamees MihhĂĄlych niimoodi naeratab?"

    Sellistes olukordades
 Meie jaoks kĂ”lab see situatsioon veidi teistmoodi, kuna (ma kirjutasin), see on selline mainekaotus, mis kaudselt viib rahalistele kaotustele. Meie olukord on vastupidine: me vĂ”ime otseselt rahalisi kahjusid kandma hakata – nĂ€iteks, kui me oleme teinud tehingu kui eduka, kuid see oli tegelikult ebaĂ”nnestunud (vĂ”i vastupidi). Ükskord pidin kirjutama enda tööriista, mis jĂ€lgib Ă€ri nĂ€itajaid edukate tehingute arvu liikumises ajavahemikus. Turul ei leidnud midagi sellist! Just seda mĂ”tet ma tahtsin edastada. Selliste probleemide lahendamiseks ei ole turul midagi.

    See oli kĂŒsimuse kohta, kuidas kiiresti probleemi tuvastada.

    Kuidas tuvastada deploy pÔhjuseid

    Kolmas ĂŒlesannete rĂŒhm, mida me lahendame, on see, et pĂ€rast probleemi tuvastamist ja selle lahendamist on hea mĂ”ista pĂ”hjuseid arendamiseks, testimiseks ja millegi tegemiseks. Seega peame uurima ja vahepeal logid ĂŒles tĂ”stma.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Kui me rÀÀgime logidest (peamine pĂ”hjus – logid), siis peamine osa logidest on meil ELK Stackis – praktiliselt kĂ”igil on nii. Kellegil vĂ”ib see olla vĂ€ljaspool ELK-d, kuid kui kirjutate logisid gigabaiditi, jĂ”uate varem vĂ”i hiljem ELK-ni. Me kirjutame neid terabaitide kaupa.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Siin on probleem. Me parandasime, lahendasime kasutaja vea, hakkasime uurima, mis seal toimus, sisenesime ‘Kibana’ ja sisestasime seal tehingu ID ning saime sellise pikka nimekirja (nĂ€itab palju). Ja selles nimekirjas ei ole roppudest midagi arusaadavat. Miks? Sest on ebaselge, milline osa kuulub millisele töötlejale, milline osa kuulub millisele komponendile. Ja sel hetkel mĂ”istsime, et me vajame jĂ€lgimist – seda sama OpenTracingut, millest ma rÀÀkisin.

    MĂ”tlesime sellele aasta tagasi, suunates oma pilgu turule, kus leidsime kaks tööriista – "Zipkin" ja "Jaeger". "Jaeger" on tegelikult Zipkini ideoloogiline jĂ€reltulija ja jĂ€tkaja. Zipkini puhul on kĂ”ik hĂ€sti, vĂ€lja arvatud see, et see ei suuda agregatsiooni teha, ei oska lisada logisid jĂ€lgimisele, vaid ainult ajajĂ€lgimist. Ja "Jaeger" toetas seda.

    Vaatasime "Jaegerit": rakendusi on vĂ”imalik instrumenteerida, saab kirjutada API-sse (standard API PHP-le sellel ajal, kuigi ei olnud kinnitatud – see oli aasta tagasi, kuid nĂŒĂŒd on see juba kinnitatud), tĂ€iesti puudus klient. "Selge," mĂ”tlesime ja kirjutasime enda kliendi. Kuidas meil lĂ€ks? Umbes nii see vĂ€lja nĂ€eb:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    «Egeris» loob iga sĂ”numi jaoks span'id. See tĂ€hendab, et kui kasutaja avab sĂŒsteemi, nĂ€eb ta iga sissetuleva pĂ€ringu kohta ĂŒhte vĂ”i kahte plokki (1-2-3 – nii palju sissetulevaid pĂ€ringuid, kui kasutaja on teinud, nii palju plokke). Kasutajate mugavuse huvides oleme logidele ja ajajĂ€lgimisele lisanud sildid. Vastavalt sellele, kui viga juhtub, mĂ€rgib meie rakendus logi vastava tagiga Error. Saame filtreerida Error sildi jĂ€rgi, ja kuvatakse vaid need span'id, mis sisaldavad veaga plokki. Nii see vĂ€lja nĂ€eb, kui me span'i avame:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Span'i sees on komplekt jĂ€lgimisveasid. Antud juhul on need kolm testimist jĂ€lgimist, ja kolmas jĂ€lgimine ĂŒtleb meile, et viga on juhtunud. Samuti nĂ€eme siin ajajĂ€lgimist: meil on ĂŒleval ajaskaalad, ja me nĂ€eme, millisel ajavahemikul meie logi on salvestatud.

    Seega, meil lĂ€ks suurepĂ€raselt. Me oleme kirjutanud oma laienduse ning avatud lĂ€htekoodiga. Kui soovite töötada jĂ€lgimisega, kui soovite töötada «Egeriga» PHP keeles – siin on meie laiendus, kasutage julgesti.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Meil on see lisand – klient OpenTracing Api tööks, tehtud php-extention'ina, see tĂ€hendab, et peate selle kokku panema ja sĂŒsteemi installima. Aasta tagasi ei olnud midagi muud. NĂŒĂŒd on ilmunud ka teised kliendid, mis toimivad komponentidena. Siin on teie valik: kas laadite komponendid Composeriga alla vĂ”i kasutate extention'i – valik on teie.

    EttevÔtte standardid

    RÀÀkisime kolmest kÀsust. Neljas kÀsk on standardiseerida lÀhenemisviise. Millest see rÀÀgib? See on umbes selline:

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Miks on siin sĂ”na «ettevĂ”tte»? Mitte sellepĂ€rast, et me oleksime suur vĂ”i bĂŒrokraatlik ettevĂ”te, ei! SĂ”na «ettevĂ”tte» kasutasin ma siin kontekstis, et iga ettevĂ”tte ja iga toote puhul peavad olema omad standardid, sealhulgas teie omad. Millised standardid on meil?

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    • Meil on juurutamise regulatsioon. Ilma selleta ei liigu me edasi, ei saa. Teostame juurutusi umbes 60 korda nĂ€dalas, seega toimub meil juurutusi praktiliselt pidevalt. Samuti on meie juurutamise regulatsioonis, nĂ€iteks, keeld juurutustest reedel – pĂ”himĂ”tteliselt, me ei juuruta.
    • Meil on kohustuslik dokumentatsioon. Ükski uus komponent ei jĂ”ua meie tootmisse, kui sellele ei ole dokumentatsiooni, isegi kui see on loodud meie RnD töötajate poolt. NĂ”uame neilt juurutusjuhendit, seirekaarti ja umbkaudset kirjeldust (noh, nagu arendajad vĂ”ivad kirjutada), kuidas see komponent töötab, kuidas seda tĂ”rkeotsinguks kasutada.
    • Me lahendame mitte probleemi pĂ”hjust, vaid probleemi – nagu ma juba rÀÀkisin. Meie jaoks on oluline kaitsta kasutajat probleemide eest.
    • Meil on lubatud kĂ”rvalekalded. NĂ€iteks me ei pea kahjuks 'downtime' ajal, kui kaotasime kahe minuti jooksul 2% liiklusest, seda tĂ”eliseks kahjuks. See pĂ”himĂ”tteliselt ei pÀÀse meie statistikas. Kui rohkem protsentuaalselt vĂ”i ajaliselt, siis juba loeme.
    • Ja me kirjutame alati post-mortem'e. Mis iganes juhtub, iga olukord, millega tootmises ei kĂ€ituta normaalselt, kajastatakse post-mortemis. Post-mortem on dokument, kuhu kirjutate, mis teiega juhtus, ĂŒksikasjalik ajakava, mida te tegite parandamiseks ja (see on kohustuslik osa!) mida teete, et sellist olukorda tulevikus vĂ€ltida. See on vajalik edasiseks analĂŒĂŒsiks.

    Mis on jaotus 'downtime'?

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Mille see kÔik viis?

    See tĂ”i meid selleni, et (meil oli teatud stabiilsusprobleeme, mis ei sobinud ei klientidele ega meile) viimase 6 kuu jooksul oli meie stabiilsuse nĂ€itaja 99,97. VĂ”ib öelda, et see pole palju. Jah, meil on veel sihte, mille poole pĂŒĂŒelda. Sellest nĂ€itajast umbes pool on stabiilsus, mis ei ole tegelikult meie oma, vaid meie ees olev web application firewall, mis töötab teenusena, kuid klientidele on see siiski oluline.

    Oleme Ă”ppinud öösiti magama. LĂ” finally! Pool aastat tagasi ei osanud me seda. Ja sellel mĂ€rkusel, tahaksin teha ĂŒhe mĂ€rkuse. EelĂ”htul oli suurepĂ€rane ettekande teemal tuumareaktori juhtimissĂŒsteem. Kui mind kuulevad inimesed, kes seda sĂŒsteemi kirjutasid – palun unustage, mida ma ĂŒtlesin "2% – see pole seisak". Teie jaoks on 2% seisak, isegi kui see kestab kaks minutit!

    Ja selle kĂ”ik! Teie kĂŒsimused.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Tasakaalustajatest ja andmebaasist migreerimisest

    KĂŒsimus publikust (edasi – K): – Tere Ă”htust. AitĂ€h palju sellise administratiivse ettekande eest! KĂŒsimus on lĂŒhike, teie tasakaalustajate teema kohta. Mainisite, et teil on WAF, seega, kui ma Ă”igesti aru saan, kasutate te tasakaalustajana mingit vĂ€list


    EK: – Ei, tasakaalustajana kasutame oma teenuseid. Antud juhul on WAF meie jaoks pelgalt DDoS-i kaitse tööriist.

    K: – Kas saaks paar sĂ”na tasakaalustajatest?

    EK: – Nagu ma juba ĂŒtlesin, on see avatud resti grupi serverid. Meil on praegu 5 reserveeritud gruppi, mis vastutavad ainus
 seega server, millel on ainult openresty, suunab lihtsalt liiklust. Vastavalt arusaamisele, kui palju me hoiame: meie regulaarne liiklusvoog on praegu mĂ”ned sajad megabitti. Nad saavad hakkama, neil lĂ€heb hĂ€sti, nad ei vaeva end isegi.

    K: – Samuti lihtne kĂŒsimus. Siin on Blue/Green juurutamine. Mis te teete, nĂ€iteks andmebaasi migreerimisega?

    EK: – Hea kĂŒsimus! Vaata, meil on Blue/Green deploymentis igaks liiniks eraldi jĂ€rjekorrad. See tĂ€hendab, et kui me rÀÀgime sĂŒndmustest, mis edastatakse töötajalt töötajale, on blue-liinil ja green-liinil eraldi jĂ€rjekorrad. Kui me rÀÀgime andmebaasist, siis oleme tahtlikult selle kitsendanud, peaaegu kĂ”ik on jĂ€rjekordades, andmebaasis hoitakse ainult tehingute stĂ€kki. Ja see tehingute stakk on meil kĂ”igi liinide jaoks ĂŒhiselt. Andmebaasi puhul selles kontekstis: me ei eralda seda blue ja green vahel, sest mĂ”lemad koodiversioonid peavad teadma, mis tehinguga toimub.

    SĂ”brad, mul on veel ĂŒks vĂ€ike auhind, et teid julgustada – raamat. Ja ma pean selle andma kĂ”ige parema kĂŒsimuse eest.

    K: – Tere. AitĂ€h ettekande eest. KĂŒsimus on selline. Te jĂ€lgite makseid, te jĂ€lgite teenuseid, millega te suhtlete... Aga kuidas te jĂ€lgite seda, et inimene mingil moel jĂ”udis teie makselehele, tegi makse ja projekt talle raha kanti? Kuidas te jĂ€lgite, et kaupleja on saadaval ja on teie tagasikutsumise vastu vĂ”tnud?

    EK: – 'Merchant' on meie jaoks on sama vĂ€line teenus nagu maksesĂŒsteem. Me jĂ€lgime 'merchants' vastuse kiirus.

    Andmebaasi krĂŒpteerimisest

    K: – Tere. Mul on veebist natuke erinev kĂŒsimus. Teil on tundlikke andmeid PCI DSS-i alusel. Soovin teada, kuidas te jĂ€rjekordades PAN-e hoiate, mida on vaja edastada? Kas kasutate mingit krĂŒpteerimist? Ja siit tuleneb teine kĂŒsimus: PCI DSS-i kohaselt tuleb aeg-ajalt andmebaasi uuesti krĂŒpteerida, kui toimuvad muutused (adminnide vallandamine jne) – kuidas mĂ”jutab see kergelt juurdepÀÀsetavust?

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    EK: – SuurepĂ€rane kĂŒsimus! Esiteks, me ei hoia jĂ€rjekordades PAN-e. Meil ei ole lubatud hoida PAN-e kuskil avalikult, seetĂ”ttu kasutame spetsiaalset teenust (me nimetame seda 'Keydemoniks') – see teenus teeb vaid ĂŒht: see vĂ”tab sisendiks sĂ”numi ja annab vĂ€lja krĂŒpteeritud sĂ”numi. Ja me hoiame kĂ”ike selle krĂŒpteeritud sĂ”numina. SeetĂ”ttu on meie vĂ”tme pikkus kilobaidi ulatuses, et see oleks tĂ”eliselt tugev ja usaldusvÀÀrne.

    K: – Kas nĂŒĂŒd on juba vaja 2 kilobaidi?

    EK: – Tundub, et eile oli 256
 Kuhu veel?!

    Seega, see on esimene. Teiseks, see lahendus toetab uuendamise protseduuri – seal on kaks 'kek'i (vĂ”tmete paari), mis genereerivad 'dek' (vĂ”tmed, mis krĂŒpteerivad). Ja juhul, kui protseduur algatatakse (viib lĂ€bi regulaarselt, iga 3 kuu tagant vĂ”i nii), laadime me uue 'kek'i paari ja tehakse andmete uuesti krĂŒpteerimine. Meil on eraldi teenused, mis tĂ”mbavad kĂ”iki andmeid vĂ€lja, krĂŒpteerivad need uuesti; andmete kĂ”rvale salvestatakse nende krĂŒpteerimiseks kasutatud vĂ”tme identifikaator. Seega, niipea kui andmed on uute vĂ”tmetega krĂŒpteeritud, kustutame me vanad vĂ”tmed.

    MÔnikord tuleb makseid teha kÀsitsi


    K: – Nii et kui tuleb tagastus mĂ”ne tehingu kohta, siis dekrĂŒpteerite seni vana vĂ”tmega?

    EK: – Jah.

    K: – Siis veel ĂŒks vĂ€ike kĂŒsimus. Kui juhtub mĂ”ni tĂ”rge, kukkumine, incident, siis on vajalik tehingu kĂ€sitsi lĂ€bisurumine. Selline olukord vĂ”ib esineda.

    EK: – Jah, see juhtub.

    K: – Kust te need andmed saate? VĂ”i minge ise kĂ€sitsi sellele salvestusele?

    EK: – Ei, loomulikult on meil olemas mingi back-office sĂŒsteem, mis sisaldab liidest meie toe jaoks. Kui me ei tea, mis seisus tehing on (nĂ€iteks seni, kuni maksesĂŒsteem ei ole vastanud) – ei tea me seda pĂ”himĂ”tteliselt, ehk me mÀÀrame lĂ”ppseisu ainult tĂ€ieliku kindlusega. Sel juhul suuname tehingu erilise staatuse alla kĂ€sitsi töötlemiseks. Hommikul, jĂ€rgmisel pĂ€eval, kui tugi saab teavet, et maksesĂŒsteemis on jÀÀnud sellised tehingud, töötlevad nad need kĂ€sitsi sellel liidese kaudu.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    K: – Mul on paar kĂŒsimust. Üks neist on PCI DSS tsooni jĂ€tk: kuidas te logisid nende piirilt vĂ€lja toote? KĂŒsin, sest arendaja on logides vĂ”inud panna mida iganes! Teine kĂŒsimus: kuidas te kĂ€rpeid vĂ€lja toote? KĂ€sitsi andmebaasis – see on ĂŒks valik, kuid vĂ”ivad olla tasuta hot-fix’id – mis on sealne protseduur? Ja kolmas kĂŒsimus, ilmselt seotud RTO ja RPO-ga. Teie kĂ€ttesaadavus oli 99,97, peaaegu neli ĂŒheksa, aga ma saan aru, et teil on ka teine andmekeskus ja kolmas andmekeskus ning viies andmekeskus... Kuidas te nende sĂŒnkroniseerimise, replikatsiooni ja muu asjaga tegelete?

    EK: – Alustame esimesest. Kas esimene kĂŒsimus oli logide kohta? Meil, kui logid kirjutatakse, on kiht, mis peidab kĂ”ik tundlikud andmed. See vaatab maski ja tĂ€iendavate vĂ€li kaudu. Vastavalt sellele, logid vĂ€ljuvad juba peidetud andmetega ja PCI DSS-i kontuuriga. See on ĂŒks regulaarsetest ĂŒlesannetest, mis on antud testimisosakonnale. Nad peavad kontrollima iga ĂŒlesande puhul ka neid logisid, mida nad kirjutavad, ja see on ĂŒks regulaarsetest ĂŒlesannetest koodirevisjonis, et kontrollida, kas arendaja ei ole midagi salvestanud. JĂ€rgmine kontroll toimub regulaarselt infotehnoloogia turvaosakonna poolt umbes kord nĂ€dalas: juhuslikult valitakse viimase pĂ€eva logid ja need viiakse lĂ€bi spetsiaalse skanneri-analĂŒsaatori kaudu testserveritest, et kĂ”ike kontrollida.
    Hot-fix'ide kohta. See on meie juures kaasatud deployment'i regulatsioonidesse. Meil on eraldi punkt hot-fix'ide kohta. Peame, et me deployime hot-fix'e ööpĂ€evaringselt, kui see on vajalik. Niikaua kui versioon on kokku pandud, testitud ja meil on artefakt – kutsutakse valveadministraator toeks helistades ja ta deployib selle hetkel, kui see on vajalik.

    Neljast neljast. See number, mis me praegu oleme saavutanud, on tĂ”eliselt saavutatud ning me pĂŒĂŒdlesime selle poole ka teises andmekeskuses. Praegu on meil tulnud teise andmekeskuse avamine ja me hakkame nende vahel ruttama, ning kĂŒsimus andmekeskuste vahelisest replikatsioonist – see on tĂ”eliselt mittetriviaalne kĂŒsimus. Proovisime seda kunagi erinevate meetodite abil lahendada: ĂŒritasime kasutada samu 'Tarantula' – meil see ei toimi, ĂŒtlen kohe. SeetĂ”ttu oleme jĂ”udnud jĂ€reldusele, et teeme 'sensat' kĂ€sitsi. Iga meie rakendus, tegelikult, pusib vajaliku 'muudatus – tehtud' asĂŒnkroonses reĆŸiimis andmekeskuste vahel.

    K: – Kui teil on teine, siis miks ei ole kolmandat? Sest split-brain'i probleemi pole keegi veel lahendanud...

    EK: – Meil ei ole "Split-brain"-i. Kuna iga rakendus meie juures kasutab multimasterni, ei ole meile oluline, kuhu keskusesse pĂ€ring lĂ€heb. Oleme valmis selleks, et juhul, kui meie ĂŒks andmekeskus kukkub (me arvestame sellega) ja kasutaja pĂ€ringu ajal lĂŒlitame teise andmekeskuse peale, oleme valmis selle kasutaja kaotama, tĂ”esti; kuid need on absoluutne vĂ€hesus, absoluutne vĂ€hesus.

    K: – Tere Ă”htust. AitĂ€h ettekande eest. RÀÀkisite oma debugeerijast, mis tootmises kĂ€itab mingeid testtransaktsioone. RÀÀkige palun testtransaktsioonidest! Kui sĂŒgavale see lĂ€heb?

    EK: – See lĂ€bib kogu komponendi tĂ€islĂŒkki. Komponendi jaoks ei ole eristusi testtransaktsiooni ja reaalaja vahel. Loogika seisukohalt on see lihtsalt eraldi projekt sĂŒsteemis, kus kĂ€ivad ainult testtransaktsioonid.

    K: – Kus te selle katkestate? Siin saatis Core...

    EK: – Me jĂ€lgime "Kori" puhul testtransaktsioonide osas... Meil on selline mĂ”isted nagu ruteerimine: "Kor" teab, millisesse maksesĂŒsteemi saata – me saadame vale maksesĂŒsteemi, mis lihtsalt annab http-reaktsiooni ja see on kĂ”ik.

    K: – Palun öelge, kas teil on rakendus kirjutatud ĂŒhtse monoliidi kujul vĂ”i olete selle jaganud teenuste vĂ”i isegi mikroteenuste peale?

    EK: – Meil ei ole monoliiti, meil on teenustele orienteeritud rakendus. Meil on nali, et meil on teenused monolitest – need on tĂ”epoolest piisavalt suured. Mikroteenusteks seda nimetada ei saa, aga need on tĂ”esti teenused, mille sees töötavad jagatud masinate töötajad.

    Kui teenus serveris on kompromiteeritud


    K: – Siis on mul jĂ€rgmine kĂŒsimus. Isegi kui see oleks olnud monoliit, ĂŒtlesite ikkagi, et teil on palju neid instant-servereid, kĂ”ik need töötlevad pĂ”himĂ”tteliselt andmeid, ja kĂŒsimus on selline: "Komprimentimise korral ĂŒhe instant-serveri vĂ”i rakenduse, mĂ”ne konkreetse lĂŒli, korral, kas neil on mingisugune juurdepÀÀsukontroll? Kes vĂ”ib mida teha? Kelle poole pöörduda, milliste andmete osas?"

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    EK: – Jah, kindlasti. TurvanĂ”uded on piisavalt tĂ”sised. Esiteks, meil on avatud andmeedastused, ja sadamad on ainult need, mille kaudu me eelnevalt eeldame liiklust. Kui komponent suhtleb andmebaasiga (nĂ€iteks MySQLiga) portide 5-4-3-2 kaudu, siis avatakse ainult 5-4-3-2, ja teised sadamad ning liikluse suunad ei ole saadaval. Lisaks tuleb mĂ”ista, et meie tootmises on umbes 10 erinevat turvapiirkonda. Ja isegi kui rakendus on mingil pĂ”hjusel kompromiteeritud, jumal hoidku, siis rĂŒndajal ei Ă”nnestu serveri juhtpaneelile juurde pÀÀseda, kuna see on teises turvapiirkonnas.

    K: – Mulle on selles kontekstis huvitavam aspekt see, et teil on ju lepingud teenustega — mida nad saavad teha, milliste "meetodite" kaudu nad saavad omavahel suhelda... Ja normaalses töövoos kĂŒsivad mĂ”ned teenused teistelt teatud suhete loetelu "meetodeid". Teisi nad tavaliselt ei puuduta, ning nende vastutusalad on erinevad. Kui aga ĂŒks neist peaks olema kompromiteeritud, kas ta suudab "meetodeid" selle teenuse kĂ€est kĂŒsida?..

    EK: – Ma saan aru. Kui normaalses olukorras kommunikatsioon teise serveriga oli ĂŒldse lubatud, siis — jah. SLA-lepingute kohaselt me ei jĂ€lgi, et teile on lubatud ainult esimesed 3 "meetodit", samas kui 4. "meetod" jÀÀb teile keelatuks. See oleks meie jaoks ilmselt ĂŒlemÀÀrane, sest meil on niigi neli tasandit kaitset kontuuride jaoks. Eelistame kaitsta kontuure, mitte sĂŒvatasandi tasandil.

    Kuidas töötab Visa, MasterCard ja "Sberbank"

    K: – Ma sooviksin tĂ€psustada, kuidas kasutaja vahetus ĂŒhes andmekeskuses teise toimub. Nagu ma tean, töötavad "Visa" ja "MasterCard" binaarses sĂŒnkroonprotokollis 8583, seal on mikserid. Ja tahtsin kĂŒsida, kas vahetus tĂ€hendab lennult "Visa" ja "MasterCard" vĂ”i maksesĂŒsteemide, protsessorite tasemel?

    EK: – See on mikserite tasemel. Mikserid on meil ĂŒhes andmekeskuses.

    K: – Lihtsalt öeldes, on teil ĂŒks ĂŒhenduspunkt?

    EK: – "Visale" ja "MasterCardile" – jah. Lihtsalt seetĂ”ttu, et "Visa" ja "MasterCard" nĂ”uavad infrastruktuuri jaoks piisavalt suuri investeeringuid, et sĂ”lmida eraldi lepingud teise mikseripaari saamiseks, nĂ€iteks. Need on reserveeritud ĂŒhe andmekeskuse piires, kuid kui meil, jumala pĂ€rast, sureb andmekeskus, kus on mikserid "Visa" ja "MasterCard" ĂŒhendamiseks, siis katkeneb meie side "Visaga" ja "MasterCardiga"...

    K: – Kuidas nad vĂ”ivad olla reserveeritud? Ma tean, et "Visa" lubab hoida pĂ”himĂ”tteliselt vaid ĂŒhte ĂŒhendust!

    EK: – Nad ise varustavad seadmed. Igatahes, meile on saadetud seadmed, mis on sisemiselt kindlalt reserveeritud.

    K: – See, is the rack from their Connects Orange?..

    EK: – Jah.

    K: – What about in this case: if your data center goes down, how do you continue using it? Or does the traffic just stop?

    EK: – No. In this case, we simply switch the traffic to another channel, which, of course, will be more expensive for us and for the clients. But the traffic will not go through our direct connection to Visa or MasterCard, but through a hypothetical Sberbank (very exaggerated).

    I sincerely apologize if I've offended the employees of Sberbank. But according to our statistics, Sberbank fails most frequently among Russian banks. Not a month goes by without Sberbank experiencing some issue.

    HighLoad++, Jevgeni Kuzovlev (EcommPay IT): mida teha, kui minuti seisak maksab 100000 dollarit

    Vaata videot

    Veidi reklaami 🙂

    AitĂ€h, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nĂ€ha rohkem huvitavaid materjale? Toetage meid, tehes tellimuse vĂ”i soovitades meid tuttavatele. pilve VPS arendajatele alates $4,99, ainulaadne sisenemise taseme serverite analoog, mille oleme teie jaoks vĂ€lja mĂ”elnud: Kogu tĂ”de VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps alates $19 vĂ”i kuidas Ă”ieti serverit jagada? (saadaval on RAID1 ja RAID10 variandid, kuni 24 sĂŒdamikku ja kuni 40GB DDR4).

    Kas Dell R730xd on kaks korda odavam Equinixi Tier IV andmete keskuses Amsterdamis? Ainult meie juures 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB alates $199 Hollandi turul! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — alates $99! Lugege, kuidas Luua ettevĂ”tte tasemel infrastruktuur Dell R730xd E5-2650 v4 serveritega, mille hind on 9000 eurot, madala hinnaga?

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster