HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

KĂ”ik rÀÀgivad arendus- ja testimisprotsessidest, personali koolitamisest, motivatsiooni tĂ”stmisest, kuid neist protsessidest ei piisa, kui minutiline teenindusseisak maksab tohutult raha. Mida teha, kui sooritate finantstehinguid range SLA alusel? Kuidas suurendada oma sĂŒsteemide töökindlust ja tĂ”rketaluvust, jĂ€ttes arenduse ja testimise vĂ”rrandist vĂ€lja?

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

JĂ€rgmine HighLoad++ konverents peetakse 6. ja 7. aprillil 2020 Peterburis. Üksikasjad ja piletid link. 9. november kell 18. HighLoad++ Moskva 00, Delhi + Kolkata hall. Teesid ja esitlus.

Jevgeni Kuzovlev (edaspidi – EK): - SĂ”brad, tere! Minu nimi on Kuzovlev Evgeniy. Olen ettevĂ”ttest EcommPay, konkreetseks divisjoniks on ettevĂ”tete grupi IT-divisjon EcommPay IT. Ja tĂ€na rÀÀgime seisakutest - sellest, kuidas neid vĂ€ltida, kuidas minimeerida nende tagajĂ€rgi, kui seda pole vĂ”imalik vĂ€ltida. Teema on vĂ€lja toodud jĂ€rgmiselt: “Mida teha, kui minut seisakuid maksab 100 000 dollarit”? Tulevikku vaadates on meie numbrid vĂ”rreldavad.

Mida EcommPay IT teeb?

Kes me oleme? Miks ma siin teie ees seisan? Miks on mul Ôigus sulle siin midagi rÀÀkida? Ja millest me siin tÀpsemalt rÀÀgime?

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

EcommPay ettevĂ”tete grupp on rahvusvaheline omandaja. Töötleme makseid ĂŒle kogu maailma – Venemaal, Euroopas, Kagu-Aasias (All Around the World). Meil on 9 kontorit, kokku 500 töötajat, kellest ligi pooled on IT-spetsialistid. KĂ”ik, mida teeme, kĂ”ik, millest raha teenime, tegime ise.

Kirjutasime kĂ”ik oma tooted (ja neid on meil pĂ€ris palju - meie suurte IT-toodete sarjas on umbes 16 erinevat komponenti) ise; Kirjutame ise, arendame ennast. Ja hetkel teeme pĂ€evas umbes miljon tehingut (miljonid on ilmselt Ă”ige viis). Oleme ĂŒsna noor ettevĂ”te – oleme alles umbes kuueaastased.

6 aastat tagasi oli see selline startup, kui poisid Ă€riga kaasa tulid. Neid ĂŒhendas idee (polnud muud kui idee) ja me jooksime. Nagu iga startup, jooksime ka kiiremini... Meie jaoks oli kiirus tĂ€htsam kui kvaliteet.

Mingil hetkel jÀime seisma: saime aru, et me ei saa enam kuidagi sellise kiiruse ja kvaliteediga elada ning peame esmalt keskenduma kvaliteedile. Sel hetkel otsustasime kirjutada uue platvormi, mis oleks Ôige, skaleeritav ja usaldusvÀÀrne. Nad hakkasid seda platvormi kirjutama (hakkasid investeerima, arendama arendust, testima), kuid mingil hetkel said nad aru, et arendus ja testimine ei vÔimalda meil teenuse kvaliteedis uuele tasemele jÔuda.

Teete uue toote, paned selle tootmisse, aga ikkagi lĂ€heb kuskil midagi viltu. Ja tĂ€na rÀÀgime sellest, kuidas jĂ”uda uuele kvaliteeditasemele (kuidas me seda tegime, oma kogemustest), vĂ”ttes vĂ”rrandist vĂ€lja arenduse ja testimise; RÀÀgime sellest, mis on tööks saadaval – milline operatsioon saab ise hakkama, mida suudab testimisele pakkuda, et kvaliteeti mĂ”jutada.

Seisakud. KĂ€sud tegutsemiseks.

Alati peamine nurgakivi, millest me tÀna tegelikult rÀÀgime, on seisakud. Kohutav sÔna. Kui meil on seisakuid, on kÔik meie jaoks halb. Me jookseme seda tÔstma, administraatorid hoiavad serverit - hoidku jumal, et see ei kukuks, nagu selles laulus öeldakse. Sellest me tÀna rÀÀgime.

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

Kui hakkasime oma lÀhenemisviise muutma, moodustasime 4 kÀsku. Mul on need esitletud slaididel:

Need kĂ€sud on ĂŒsna lihtsad:

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

  • Tuvastage probleem kiiresti.
  • Vabane sellest veelgi kiiremini.
  • Aidake pĂ”hjust mĂ”ista (hiljem arendajatele).
  • Ja standardiseerige lĂ€henemisviisid.

Juhin teie tÀhelepanu punktile nr 2. Me vabaneme probleemist, mitte ei lahenda seda. Otsustamine on teisejÀrguline. Meie jaoks on esmane, et kasutaja oleks selle probleemi eest kaitstud. See eksisteerib mÔnes isoleeritud keskkonnas, kuid see keskkond ei puutu sellega kokku. Tegelikult kÀime need neli probleemigruppi lÀbi (mÔni tÀpsemalt, mÔni vÀhem), rÀÀgin, mida me kasutame, milline asjakohane kogemus meil lahenduste vallas on.

TÔrkeotsing: millal need ilmnevad ja mida nendega teha?

Aga alustame korrast Ă€ra, alustame punktist nr 2 - kuidas kiiresti probleemist lahti saada? On probleem – me peame selle parandama. "Mida me peaksime sellega tegema?" - pĂ”hikĂŒsimus. Ja kui hakkasime mĂ”tlema, kuidas probleemi lahendada, töötasime enda jaoks vĂ€lja mĂ”ned nĂ”uded, mida veaotsing peab jĂ€rgima.

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

Nende nĂ”uete sĂ”nastamiseks otsustasime esitada endale kĂŒsimuse: "Millal meil probleeme on?" Ja nagu selgus, ilmnevad probleemid neljal juhul:

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

  • Riistvara rike.
  • VĂ€listeenused ebaĂ”nnestusid.
  • Tarkvara versiooni muutmine (sama juurutus).
  • Plahvatusliku koormuse kasv.

Kahest esimesest me ei rÀÀgi. Riistvara rikke saab lahendada ĂŒsna lihtsalt: kĂ”ik peab olema dubleeritud. Kui need on kettad, tuleb kettad kokku panna RAID-is; kui tegemist on serveriga, siis tuleb server dubleerida; kui teil on vĂ”rguinfrastruktuur, peate esitama vĂ”rguinfrastruktuuri teise koopia, st vĂ”tate selle ja dubleerida seda. Ja kui midagi ebaĂ”nnestub, lĂŒlitute reservvĂ”imsusele. Siin on raske midagi rohkemat öelda.

Teine on vĂ€listeenuste ebaĂ”nnestumine. Enamiku jaoks pole sĂŒsteem ĂŒldse probleem, kuid mitte meie jaoks. Kuna töötleme makseid, oleme agregaator, mis seisab kasutaja (kes sisestab oma kaardiandmed) ja pankade, maksesĂŒsteemide (Visa, MasterCard, Mira jne) vahel. Meie vĂ€listeenused (maksesĂŒsteemid, pangad) kipuvad ebaĂ”nnestuma. Ei meie ega teie (kui teil on selliseid teenuseid) ei saa seda mĂ”jutada.

Mida siis teha? Siin on kaks vĂ”imalust. Esiteks, kui saate, peaksite seda teenust mingil viisil dubleerima. NĂ€iteks kanname vĂ”imalusel liiklust ĂŒhelt teenuselt teisele: nĂ€iteks kaarte töödeldi Sberbanki kaudu, Sberbankil on probleeme - edastame liikluse [tinglikult] Raiffeisenile. Teine asi, mida saame teha, on vĂ€listeenuste rikkeid vĂ€ga kiiresti mĂ€rgata ja seetĂ”ttu rÀÀgime reageerimiskiirusest raporti jĂ€rgmises osas.

Tegelikult saame neist neljast konkreetselt mĂ”jutada tarkvaraversioonide muutmist – vĂ”tta kasutusele tegevusi, mis viivad olukorra paranemiseni juurutuste kontekstis ja koormuse plahvatusliku kasvu kontekstis. Tegelikult me ​​seda tegimegi. Siin jĂ€lle vĂ€ike mĂ€rkus...

Neist neljast probleemist lahendatakse mitu kohe, kui teil on pilv. Kui olete Microsoft Azhuri, Ozone'i pilvedes vÔi kasutate meie Yandexi vÔi Maili pilvi, saab nende probleemiks vÀhemalt riistvara rike ja riistvara rikke kontekstis muutub teie jaoks kohe kÔik hÀsti.

Oleme veidi ebatavaline ettevĂ”te. Siin rÀÀgivad kĂ”ik “Kubernetsist”, pilvedest - meil pole ei “Kubernetsit” ega pilvi. Kuid meil on paljudes andmekeskustes riistvarariiulid ja me oleme sunnitud selle riistvaraga elama, oleme sunnitud selle kĂ”ige eest vastutama. SeetĂ”ttu rÀÀgime selles kontekstis. Niisiis, probleemidest. Kaks esimest vĂ”eti sulgudest vĂ€lja.

Tarkvara versiooni muutmine. Alused

Meie arendajatel puudub juurdepÀÀs tootmisele. Miks nii? Asi on selles, et meil on PCI DSS-sertifikaat ja meie arendajatel pole lihtsalt Ă”igust sellesse tootesse siseneda. See on kĂ”ik, punkt. ÜleĂŒldse. SeetĂ”ttu lĂ”peb arendusvastutus tĂ€pselt sel hetkel, kui arendus esitab jĂ€rgu avaldamiseks.

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

Meie teine ​​alus, mis meil on ja mis meid samuti palju aitab, on ainulaadsete dokumentideta teadmiste puudumine. Loodan, et see on teie jaoks sama. Sest kui see nii ei ole, on teil probleeme. Probleemid tekivad siis, kui need ainulaadsed, dokumenteerimata teadmised pole Ă”igel ajal ja Ă”iges kohas olemas. Oletame, et teil on ĂŒks inimene, kes teab, kuidas konkreetset komponenti kasutusele vĂ”tta – inimest pole kohal, ta on puhkusel vĂ”i haige – see on kĂ”ik, teil on probleeme.

Ja kolmas alus, milleni oleme jĂ”udnud. JĂ”udsime selleni lĂ€bi valu, vere, pisarate – jĂ”udsime jĂ€reldusele, et iga meie ehitus sisaldab vigu, isegi kui see on veatu. Otsustasime selle ise: kui me midagi juurutame, kui paneme midagi tootmisse, on meil vigadega konstruktsioon. Oleme kujundanud nĂ”uded, millele meie sĂŒsteem peab vastama.

NÔuded tarkvara versiooni muutmisele

NÔuet on kolm:

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

  • Peame kasutuselevĂ”tu kiiresti tagasi tĂ”mbama.
  • Peame minimeerima ebaĂ”nnestunud kasutuselevĂ”tu mĂ”ju.
  • Ja me peame suutma kiiresti paralleelselt kasutusele vĂ”tta.
    TÀpselt sellises jÀrjekorras! Miks? Sest esiteks ei ole uue versiooni juurutamisel kiirus oluline, aga kui midagi lÀheb valesti, siis on oluline kiiresti tagasi kerida ja minimaalselt mÔjuda. Kuid kui teil on tootmises versioonide komplekt, mille puhul selgub, et tegemist on veaga (Àrast ilma, et juurutamist ei toimunud, kuid on viga) - on teie jaoks oluline jÀrgneva juurutamise kiirus. Mida oleme nende nÔudmiste tÀitmiseks teinud? Kasutasime jÀrgmist metoodikat:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    See on ĂŒsna tuntud, me pole seda kunagi leiutanud – see on sinine/roheline juurutamine. Mis see on? Teil peab olema koopia iga serverirĂŒhma kohta, kuhu teie rakendused on installitud. Koopia on “soe”: sellel pole liiklust, kuid igal hetkel saab selle liikluse sellele koopiale saata. See koopia sisaldab eelmist versiooni. Ja juurutamise ajal avaldate koodi passiivseks koopiaks. SeejĂ€rel lĂŒlitate osa liiklusest (vĂ”i kogu) uuele versioonile. Seega, selleks, et muuta liiklusvoogu vanalt versioonilt uuele, peate tegema ainult ĂŒhe toimingu: peate vahetama ĂŒlesvoolu tasakaalustajat, muutma suunda - ĂŒhest ĂŒlesvoolust teise. See on vĂ€ga mugav ja lahendab kiire ĂŒmberlĂŒlitamise ja kiire tagasipööramise probleemi.

    Siin on teise kĂŒsimuse lahendus minimeerimine: saate saata ainult osa oma liiklusest uuele reale, uue koodiga reale (olgu see nĂ€iteks 2%). Ja need 2% pole 100%! Kui kaotasite ebaĂ”nnestunud kasutuselevĂ”tu tĂ”ttu 100% liiklusest, on see hirmutav; kui kaotasite 2% liiklusest, on see ebameeldiv, kuid mitte hirmutav. Pealegi ei pane kasutajad seda suure tĂ”enĂ€osusega isegi tĂ€hele, sest mĂ”nel juhul (mitte kĂ”igil) suunatakse sama kasutaja F5 vajutades teise töötavasse versiooni.

    Sinine/roheline kasutuselevÔtt. Marsruutimine

    KĂ”ik pole aga nii lihtne “Blue/Green deploy”... KĂ”ik meie komponendid vĂ”ib jagada kolme rĂŒhma:

    • see on kasutajaliides (maksete lehed, mida meie kliendid nĂ€evad);
    • töötlemise sĂŒdamik;
    • adapter maksesĂŒsteemidega töötamiseks (pangad, MasterCard, Visa...).

    Ja siin on nĂŒanss – nĂŒanss peitub liinidevahelises marsruutimises. Kui muudate lihtsalt 100% liiklust, pole teil neid probleeme. Aga kui soovite 2% vahetada, hakkate esitama kĂŒsimusi: "Kuidas seda teha?" Lihtsaim asi on otse edasi: saate Round Robini nginxis juhusliku valiku abil seadistada ja teil on 2% vasakule, 98% paremale. Kuid see pole alati sobiv.

    NĂ€iteks meie puhul suhtleb kasutaja sĂŒsteemiga rohkem kui ĂŒhe pĂ€ringuga. See on normaalne: 2, 3, 4, 5 pĂ€ringut – teie sĂŒsteemid vĂ”ivad olla samad. Ja kui teie jaoks on oluline, et kĂ”ik kasutaja pĂ€ringud jĂ”uaksid samale reale, millelt esimene pĂ€ring tuli, vĂ”i (teine ​​punkt) jĂ”uaksid kĂ”ik kasutaja pĂ€ringud pĂ€rast vahetust uuele reale (ta oleks vĂ”inud alustada tööd varem sĂŒsteem, enne lĂŒlitit), - siis see juhuslik jaotus teile ei sobi. Siis on jĂ€rgmised valikud:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Esimene, kĂ”ige lihtsam variant, pĂ”hineb kliendi pĂ”hiparameetritel (IP Hash). Teil on IP ja jagate selle IP-aadressiga paremalt vasakule. Siis töötab teie jaoks minu kirjeldatud teine ​​​​juhtum, kui juurutamine toimus, sai kasutaja juba teie sĂŒsteemiga tööd alustada ja juurutamise hetkest lĂ€hevad kĂ”ik pĂ€ringud uuele reale (nĂ€iteks samale).

    Kui see teile mingil pÔhjusel ei sobi ja peate saatma pÀringud reale, kust tuli kasutaja esialgne pÀring, siis on teil kaks vÔimalust...
    Esimene vĂ”imalus: saate osta tasulise nginx+. Seal on kleepuvate seansside mehhanism, mis kasutaja esialgsel nĂ”udmisel mÀÀrab kasutajale seansi ja seob selle ĂŒhe vĂ”i teise ĂŒlesvooluga. KĂ”ik jĂ€rgnevad kasutajapĂ€ringud seansi jooksul saadetakse samale ĂŒlesvoolu, kuhu seanss postitati.

    See meile ei sobinud, sest meil oli juba tavaline nginx. Nginx+-le ĂŒleminek ei tĂ€henda, et see oleks kallis, vaid see, et see oli meie jaoks mĂ”nevĂ”rra valus ja mitte vĂ€ga Ă”ige. NĂ€iteks "Sticks Sessions" ei töötanud meie jaoks sel lihtsal pĂ”hjusel, et "Sticks Sessions" ei vĂ”imalda marsruutimist "Kas-vĂ”i" alusel. Seal saab mÀÀrata, mida me “Sticks Sessions” teeme nĂ€iteks IP-aadressi vĂ”i IP-aadressi ja kĂŒpsiste vĂ”i postparameetri jĂ€rgi, aga “Kas-vĂ”i” on seal keerulisem.

    SeetÔttu jÔudsime neljanda variandini. VÔtsime nginxi steroididel (see on openresty) - see on sama nginx, mis toetab lisaks viimaste skriptide kaasamist. Saate kirjutada viimase skripti, anda sellele "avatud puhkeaja" ja see viimane skript kÀivitatakse, kui kasutaja pÀring tuleb.

    Ja me kirjutasime tegelikult sellise skripti, seadsime endale "openresti" ja selles skriptis sorteerime 6 erinevat parameetrit konkatenatsiooniga "Or". Olenevalt ĂŒhe vĂ”i teise parameetri olemasolust teame, et kasutaja jĂ”udis ĂŒhele vĂ”i teisele lehele, ĂŒhele vĂ”i teisele reale.

    Sinine/roheline kasutuselevÔtt. Eelised ja miinused

    Ilmselt sai seda muidugi veidi lihtsamaks teha (kasutada sedasama “Sticky Sessions”), aga meil on ka selline nĂŒanss, et ĂŒhe tehingu ĂŒhe töötluse raames ei suhtle meiega ainult kasutaja... Kuid ka maksesĂŒsteemid suhtlevad meiega: pĂ€rast tehingu töötlemist (maksesĂŒsteemile pĂ€ringu saatmisega) saame tagasilöögi.
    Ja oletame, et kui meie vooluringis saame kĂ”igis pĂ€ringutes edastada kasutaja IP-aadressi ja jagada kasutajaid IP-aadressi jĂ€rgi, siis me ei ĂŒtle sedasama “Visa”: “Kutt, me oleme selline retrofirma, tundub olla rahvusvaheline (veebisaidil ja Venemaal)... Palun andke meile lisavĂ€ljale kasutaja IP-aadress, teie protokoll on standardiseeritud”! On selge, et nad ei nĂ”ustu.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    SeetÔttu see meie jaoks ei toiminud - tegime avatud mÀngu. Sellest lÀhtuvalt saime marsruutimisega midagi sellist:

    Blue/Green Deploymentil on vastavalt minu mainitud eelised ja puudused.

    Kaks puudust:

    • peate marsruutimisega vaeva nĂ€gema;
    • teine ​​peamine puudus on kulu.

    Teil on vaja kaks korda rohkem servereid, vajate kaks korda rohkem tööressursse, peate kulutama kaks korda rohkem jĂ”upingutusi kogu selle loomaaia ĂŒlalpidamiseks.

    Muide, eeliste hulgas on veel ĂŒks asi, mida ma varem pole maininud: teil on reservi koormuse kasvu puhuks. Kui teie koormus kasvab plahvatuslikult, teil on palju kasutajaid, siis lisate lihtsalt teise rea 50–50 distributsiooni – ja teie klastris on kohe x2 serverid, kuni lahendate serverite arvu probleemi.

    Kuidas teha kiiret kasutuselevÔttu?

    RÀÀkisime minimeerimise ja kiire tagasipööramise probleemi lahendamisest, kuid kĂŒsimus jÀÀb: "Kuidas kiiresti juurutada?"

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Siin on see lĂŒhike ja lihtne.

    • Teil peab olema CD-sĂŒsteem (pidev kohaletoimetamine) – te ei saa ilma selleta elada. Kui teil on ĂŒks server, saate seda kĂ€sitsi juurutada. Meil on muidugi umbes poolteist tuhat serverit ja poolteist tuhat kĂ€epidet – me saame rajada selle ruumi suuruse osakonna lihtsalt kasutuselevĂ”tuks.
    • KasutuselevĂ”tt peab olema paralleelne. Kui teie juurutamine on jĂ€rjestikune, on kĂ”ik halb. Üks server on normaalne, te juurutate terve pĂ€eva poolteist tuhat serverit.
    • JĂ€llegi, kiirendamiseks pole see ilmselt enam vajalik. KasutuselevĂ”tmise ajal ehitatakse projekt tavaliselt ĂŒles. Teil on veebiprojekt, seal on esiotsa osa (teed seal veebipaketi, kompileerid npm - midagi sellist) ja see protsess on pĂ”himĂ”tteliselt lĂŒhiajaline - 5 minutit, aga see 5 minutit vĂ”ib ole kriitiline. SeetĂ”ttu me nĂ€iteks seda ei tee: eemaldasime need 5 minutit, juurutame artefakte.

      Mis on artefakt? Artefakt on kokkupandud konstruktsioon, mille kĂ”ik koosteosad on juba valmis. Talletame selle artefakti artefaktihoidlas. Korraga kasutasime kahte sellist salvestusruumi – see oli Nexus ja nĂŒĂŒd jFrog Artifactory. Algul kasutasime “Nexust”, kuna hakkasime seda lĂ€henemist Java rakendustes harjutama (see sobis hĂ€sti). SeejĂ€rel panid nad sinna mĂ”ned PHP-s kirjutatud rakendused; ja “Nexus” enam ei sobinud ning seetĂ”ttu valisime jFrog Artefactory, mis suudab artefitseerida peaaegu kĂ”ike. Oleme isegi jĂ”udnud selleni, et sellesse artefaktihoidlasse salvestame oma binaarpakette, mida kogume serverite jaoks.

    Plahvatusliku koormuse kasv

    RÀÀkisime tarkvaraversiooni muutmisest. JÀrgmine asi on meil plahvatuslik koormuse suurenemine. Siin pean ma ilmselt silmas plahvatusliku koormuse kasvu all, mis pole pÀris Ôige asi...

    Kirjutasime uue sĂŒsteemi – see on teeninduskeskne, moekas, ilus, igal pool töötajad, igal pool jĂ€rjekorrad, kĂ”ikjal asĂŒnkroonsus. Ja sellistes sĂŒsteemides vĂ”ivad andmed voolata lĂ€bi erinevate voogude. Esimese tehingu puhul saab kasutada 1., 3., 10. töötajat, teise tehingu puhul - 2., 4., 5. töötajat. Ja tĂ€na, oletame, et hommikul on teil andmevoog, mis kasutab kolme esimest töötajat, ja Ă”htul muutub see dramaatiliselt ja kĂ”ik kasutab ĂŒlejÀÀnud kolme töötajat.

    Ja siin selgub, et peate kuidagi skaleerima töötajaid, peate kuidagi oma teenuseid skaleerima, kuid samal ajal vÀltima ressursside paisumist.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Oleme oma nĂ”uded mÀÀratlenud. Need nĂ”uded on ĂŒsna lihtsad: teenuse avastamine, parameetrite mÀÀramine - kĂ”ik on selliste skaleeritavate sĂŒsteemide ehitamisel standardne, vĂ€lja arvatud ĂŒks punkt - ressursi amortisatsioon. Ütlesime, et me pole valmis ressursse amortiseerima, et serverid Ă”hku soojendaksid. VĂ”tsime "Konsuli", vĂ”tsime "Nomad", mis juhib meie töölisi.

    Miks see meile probleemiks on? LĂ€hme natuke tagasi. NĂŒĂŒd on meil seljataga umbes 70 maksesĂŒsteemi. Hommikul kĂ€ib liiklus lĂ€bi Sberbanki, siis kukkus nĂ€iteks Sberbank ja lĂŒlitame selle ĂŒle teisele maksesĂŒsteemile. Enne Sberbanki oli meil 100 töötajat ja pĂ€rast seda peame teise maksesĂŒsteemi jaoks jĂ€rsult suurendama 100 töötaja arvu. Ja on soovitav, et see kĂ”ik toimuks ilma inimese osaluseta. Sest kui on inimeste osalus, siis peaks seal 24/7 istuma insener, kes peaks ainult seda tegema, sest selliseid rikkeid, kui 70 sĂŒsteemi on selja taga, tuleb ette regulaarselt.

    SeetĂ”ttu vaatasime avatud IP-ga Nomadi ja kirjutasime oma asja, Scale-Nomad - ScaleNo, mis teeb ligikaudu jĂ€rgmist: jĂ€lgib jĂ€rjekorra kasvu ja vĂ€hendab vĂ”i suurendab töötajate arvu sĂ”ltuvalt dĂŒnaamikast. jĂ€rjekorrast. Kui me seda tegime, mĂ”tlesime: "VĂ”ib-olla saame selle avatud lĂ€htekoodiga?" Siis vaatasid nad teda – ta oli lihtne kui kaks kopikat.

    Seni pole me seda avatud lÀhtekoodiga, aga kui jÀrsku peale aruannet, peale aru saamist, et sul on sellist asja vaja, on sul seda vaja, on minu kontaktid viimasel slaidil - palun kirjuta mulle. Kui on vÀhemalt 3-5 inimest, siis sponsoreerime.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Kuidas see töötab? LĂ€hme vaatama! Vaadates tulevikku: vasakul pool on meie seire tĂŒkk: see on ĂŒks rida, ĂŒleval on sĂŒndmuste töötlemise aeg, keskel on tehingute arv, all on töötajate arv.

    Kui vaatate, on sellel pildil tĂ”rge. Ülemisel graafikul kukkus ĂŒks graafik kokku 45 sekundiga – ĂŒks maksesĂŒsteem lĂ€ks alla. Kohe 2 minutiga toodi liiklus sisse ja jĂ€rjekord hakkas kasvama teises maksesĂŒsteemis, kus töötajaid polnud (ressursi me ei kasutanud - vastupidi, kĂ€sutasime ressursi Ă”igesti). Me ei tahtnud kĂŒtta - töötajaid oli minimaalne, umbes 5-10, kuid nad ei saanud hakkama.

    Viimane graafik nĂ€itab "kĂŒĂŒru", mis tĂ€hendab lihtsalt, et "Skaleno" kahekordistas selle koguse. Ja siis, kui graafik veidi langes, vĂ€hendas ta seda veidi – töötajate arv muudeti automaatselt. Nii see asi kĂ€ibki. RÀÀkisime punktist number 2 - "Kuidas pĂ”hjustest kiiresti lahti saada."

    JĂ€relevalve. Kuidas probleemi kiiresti tuvastada?

    NĂŒĂŒd on esimene punkt "Kuidas probleemi kiiresti tuvastada?" JĂ€lgimine! Peame teatud asjadest kiiresti aru saama. Milliseid asju peaksime kiiresti mĂ”istma?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Kolm asja!

    • Peame mĂ”istma ja mĂ”istma kiiresti oma ressursside toimimist.
    • Peame kiiresti mĂ”istma tĂ”rkeid ja jĂ€lgima meie vĂ€liste sĂŒsteemide toimimist.
    • Kolmas punkt on loogikavigade tuvastamine. See on siis, kui sĂŒsteem töötab teie jaoks, kĂ”ik on kĂ”igi nĂ€itajate jĂ€rgi normaalne, kuid midagi lĂ€heb valesti.

    TÔenÀoliselt ei rÀÀgi ma teile siin midagi nii lahedat. Minust saab Captain Obvious. Otsisime, mis turul oli. Meil on "lÔbus loomaaed". Selline loomaaed on meil praegu:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Kasutame Zabbixi riistvara jÀlgimiseks, serverite pÔhinÀitajate jÀlgimiseks. Andmebaaside jaoks kasutame Okmeterit. KÔigi muude nÀitajate jaoks, mis ei sobi kahe esimesega, kasutame "Grafana" ja "Prometheus", mÔned "Grafana" ja "Prometheus" ning mÔned "Grafana" koos "Influx" ja Telegrafiga.

    Aasta tagasi tahtsime kasutada New Relic. Lahe asi, sellega saab kĂ”ike. Aga nii palju kui ta kĂ”ike teha suudab, on ta nii kallis. Kui meie maht kasvas 1,5 tuhande serverini, tuli meie juurde mĂŒĂŒja ja ĂŒtles: "SĂ”lmime jĂ€rgmiseks aastaks lepingu." Vaatasime hinda ja ĂŒtlesime, et ei, me ei tee seda. NĂŒĂŒd loobume New Relicist, meil on jÀÀnud umbes 15 serverit New Relic jĂ€lgimise alla. Hind osutus tĂ€iesti metsikuks.

    Ja on ĂŒks tööriist, mille me ise juurutasime - see on silur. Alguses nimetasime seda "Baggeriks", kuid siis möödus inglise keele Ă”petaja, naeris metsikult ja nimetas selle ĂŒmber "Debagger". Mis see on? See on tööriist, mis tegelikult testib iga komponendi puhul 15-30 sekundiga, nagu sĂŒsteemi "must kast", komponendi ĂŒldist jĂ”udlust.

    NĂ€iteks kui on olemas vĂ€line leht (makseleht), siis ta lihtsalt avab selle ja vaatab, kuidas see vĂ€lja peaks nĂ€gema. Kui see on töötlemisel, saadab ta testtehingu ja veendub, et see "tehing" saabub. Kui see on seos maksesĂŒsteemidega, kĂ€ivitame vastavalt vĂ”imalusel testpĂ€ringu ja vaatame, et meiega on kĂ”ik korras.

    Millised nÀitajad on monitooringu jaoks olulised?

    Mida me peamiselt jÀlgime? Millised nÀitajad on meile olulised?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    • Reageerimisaeg / RPS rindel on vĂ€ga oluline nĂ€itaja. Ta vastab kohe, et sinuga on midagi valesti.
    • Töödeldud kirjade arv kĂ”igis jĂ€rjekordades.
    • Tööliste arv.
    • PĂ”hilised korrektsuse mÔÔdikud.

    Viimane punkt on "Ă€ri", "Ă€ri" mÔÔdik. Kui soovite sama asja jĂ€lgida, peate mÀÀratlema ĂŒhe vĂ”i kaks mÔÔdikut, mis on teie jaoks peamised nĂ€itajad. Meie mÔÔdik on lĂ€bilaskevĂ”ime (see on edukate tehingute arvu ja tehingute koguvoo suhe). Kui selles midagi muutub intervalliga 5-10-15 minutit, tĂ€hendab see, et meil on probleeme (kui see muutub radikaalselt).

    Kuidas see meie jaoks vĂ€lja nĂ€eb, on nĂ€ide ĂŒhest meie tahvlitest:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Vasakul pool on 6 graafikut, see on ridade jĂ€rgi - töötajate arv ja jĂ€rjekordades olevate sĂ”numite arv. Paremal pool – RPS, RTS. Allpool on sama "Ă€ri" mÔÔdik. Ja â€œĂ€ri” mÔÔdikus on kohe nĂ€ha, et kahel keskmisel graafikul lĂ€ks midagi valesti... See on lihtsalt jĂ€rjekordne sĂŒsteem, mis seisab meie selja taga ja on kukkunud.

    Teise asjana tuli jĂ€lgida vĂ€lismaksete sĂŒsteemide kukkumist. Siin vĂ”tsime ette OpenTracingu – mehhanismi, standardse paradigma, mis vĂ”imaldab jĂ€lgida hajutatud sĂŒsteeme; ja seda muudeti veidi. Standardne OpenTracingu paradigma ĂŒtleb, et loome jĂ€lje iga ĂŒksiku pĂ€ringu jaoks. Meil ei olnud seda vaja ja panime selle kokkuvĂ”tlikuks, koondamisjĂ€ljeks. Tegime tööriista, mis vĂ”imaldab jĂ€lgida meie taga olevate sĂŒsteemide kiirust.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Graafik nĂ€itab, et ĂŒks maksesĂŒsteemidest hakkas reageerima 3 sekundiga – meil on probleeme. Veelgi enam, see asi reageerib probleemide ilmnemisel 20-30-sekundilise intervalliga.

    Ja kolmas olemasolevate seirevigade klass on loogiline jÀlgimine.

    Ausalt öeldes ei teadnud ma, mida sellele slaidile joonistada, sest olime juba pikka aega turult otsinud midagi, mis meile sobiks. Midagi me ei leidnud, seega pidime ise tegema.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Mida ma mĂ”tlen loogilise jĂ€lgimise all? Kujutage ette: teete endale sĂŒsteemi (nĂ€iteks Tinderi klooni); sa tegid seda, kĂ€ivitasid selle. Edukas mĂ€nedĆŸer Vasja Pupkin pani selle oma telefonile, nĂ€eb seal tĂŒdrukut, talle meeldib... ja sarnane ei lĂ€he tĂŒdrukule - meeldiv lĂ€heb sama Ă€rikeskuse turvamehele MihhalĂ”tĆĄile. Juhataja lĂ€heb alla ja imestab siis: "Miks see turvamees MihhalitĆĄ talle nii meeldivalt naeratab?"

    Sellistes olukordades... Meie jaoks kĂ”lab see olukord veidi teistmoodi, sest (ma kirjutasin) see on mainekaotus, mis toob kaudselt kaasa rahalisi kaotusi. Meie olukord on vastupidine: vĂ”ime kanda otsest rahalist kahju – nĂ€iteks kui tegime tehingu edukalt, kuid see oli ebaĂ”nnestunud (vĂ”i vastupidi). Pidin kirjutama oma tööriista, mis jĂ€lgib Ă€rinĂ€itajate abil edukate tehingute arvu aja jooksul. Ei leidnud turult midagi! Just seda mĂ”tet tahtsin edasi anda. Turul pole midagi sellist probleemi lahendamiseks.

    See puudutas probleemi kiiret tuvastamist.

    Kuidas teha kindlaks kasutuselevÔtu pÔhjused

    Kolmas probleemide rĂŒhm, mida lahendame, on pĂ€rast seda, kui oleme probleemi tuvastanud, pĂ€rast seda, kui oleme sellest lahti saanud, oleks hea mĂ”ista arenduse, testimise pĂ”hjust ja sellega midagi ette vĂ”tta. Vastavalt sellele peame uurima, peame palke tĂ”stma.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Kui me rÀÀgime palkidest (peamine pÔhjus on palgid), siis suurem osa meie palgist on ELK Stackis - peaaegu kÔigil on sama. MÔne jaoks ei pruugi see ELK-s olla, aga kui logid kirjutada gigabaitides, siis varem vÔi hiljem jÔuad ELK-sse. Kirjutame need terabaitides.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Siin on probleem. Parandasime Ă€ra, parandasime kasutaja jaoks vea, hakkasime seal leiduvat vĂ€lja kaevama, ronisime Kibanasse, sisestasime sinna tehingu ID ja saime sellise jalalapi (nĂ€itab palju). Ja selles jalalapis pole absoluutselt midagi selge. Miks? Jah, sest pole selge, milline osa kuulub millisele töötajale, milline osa millisele komponendile. Ja sel hetkel mĂ”istsime, et vajame jĂ€lgimist – sedasama OpenTracingut, millest ma rÀÀkisin.

    MĂ”tlesime seda aasta tagasi, pöörasime pilgu turu poole ja seal oli kaks tööriista - “Zipkin” ja “Jaeger”. “Jager” on tegelikult selline ideoloogiline pĂ€rija, “Zipkini” ideoloogiline jĂ€rglane. Zipkinis on kĂ”ik hĂ€sti, vĂ€lja arvatud see, et ta ei tea, kuidas koondada, ta ei tea, kuidas logida jĂ€lgi, ainult ajajĂ€lgi. Ja "Jager" toetas seda.

    Vaatasime “Jagerit”: saab rakendusi instrumenteerida, saab kirjutada Apis (sel ajal PHP-i API-standardit siiski heaks ei kiidetud - see oli aasta tagasi, aga nĂŒĂŒd on see juba kinnitatud), aga seal polnud absoluutselt klient. "Olgu," mĂ”tlesime ja kirjutasime oma kliendile. Mida me saime? Umbes nii see vĂ€lja nĂ€eb:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    JÀÀgeris luuakse iga sĂ”numi jaoks vahemikud. See tĂ€hendab, et kui kasutaja sĂŒsteemi avab, nĂ€eb ta iga sissetuleva pĂ€ringu kohta ĂŒhte vĂ”i kahte plokki (1-2-3 - kasutajalt sissetulevate pĂ€ringute arv, plokkide arv). Kasutajate jaoks lihtsamaks muutmiseks lisasime logidele ja ajajĂ€lgedele sildid. Vastavalt sellele mĂ€rgib meie rakendus tĂ”rke korral logi vastava veasildiga. Saate filtreerida veasildi jĂ€rgi ja kuvatakse ainult need ulatused, mis sisaldavad seda veaga plokki. See nĂ€eb vĂ€lja selline, kui laiendame ulatust:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Ava sees on hulk jĂ€lgi. Sel juhul on tegemist kolme testjĂ€ljega ja kolmas jĂ€lg ĂŒtleb meile, et ilmnes viga. Samas nĂ€eme siin aja jĂ€lge: meil on ĂŒlaosas ajaskaala ja me nĂ€eme, millise ajaintervalliga see vĂ”i teine ​​logi salvestati.

    Sellest lÀhtuvalt lÀks meil hÀsti. Kirjutasime oma laienduse ja kasutasime seda avatud lÀhtekoodiga. Kui soovite töötada jÀlgimisega, kui soovite töötada PHP-s "Jageriga", on olemas meie laiendus, tere tulemast kasutama, nagu öeldakse:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Meil on see laiendus - see on OpenTracing Api klient, see on tehtud php-laiendusena, see tĂ€hendab, et peate selle kokku panema ja sĂŒsteemi installima. Aasta tagasi polnud midagi teistmoodi. NĂŒĂŒd on teisi kliente, kes on nagu komponendid. Siin on see teie otsustada: kas pumpate komponendid vĂ€lja koos heliloojaga vĂ”i kasutate laiendust.

    EttevÔtte standardid

    RÀÀkisime kolmest kĂ€sust. Neljas kĂ€sk on lĂ€henemiste ĂŒhtlustamine. Millest see jutt kĂ€ib? Jutt on sellest:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Miks on siin sĂ”na "ettevĂ”te"? Mitte sellepĂ€rast, et oleme suur vĂ”i bĂŒrokraatlik ettevĂ”te, ei! Tahtsin siin kasutada sĂ”na “korporatiiv” kontekstis, et igal ettevĂ”ttel, igal tootel peaksid olema oma standardid, ka sinul. Millised standardid meil on?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    • Meil on kasutuselevĂ”tueeskirjad. Me ei liigu ilma temata kuhugi, me ei saa. Me kasutame umbes 60 korda nĂ€dalas, see tĂ€hendab peaaegu pidevalt. Samas on meil nĂ€iteks kasutuselevĂ”tumÀÀrustes tabu reedeste lĂ€hetuste kohta – pĂ”himĂ”tteliselt me ​​ei lĂ€he.
    • NĂ”uame dokumentatsiooni. Ükski uus komponent ei jĂ”ua tootmisse, kui selle kohta pole dokumentatsiooni, isegi kui see on sĂŒndinud meie RnD spetsialistide sule all. NĂ”uame neilt juurutamisjuhiseid, seirekaarti ja ligikaudset kirjeldust (nagu programmeerijad oskavad kirjutada), kuidas see komponent töötab ja kuidas seda tĂ”rkeotsingut teha.
    • Me ei lahenda mitte probleemi pĂ”hjust, vaid probleemi – mida ma juba ĂŒtlesin. Meie jaoks on oluline kaitsta kasutajat probleemide eest.
    • Meil on luba. NĂ€iteks ei pea me seisakuks seda, kui kaotasime kahe minuti jooksul 2% liiklusest. Seda meie statistikas pĂ”himĂ”tteliselt ei arvestata. Kui see on rohkem protsentides vĂ”i ajutine, siis me juba arvestame.
    • Ja me kirjutame alati postmortem. Mis meiega ka ei juhtuks, iga olukord, kus keegi lavastuses ebanormaalselt kĂ€itus, kajastub surmajĂ€rgses teoses. SurmajĂ€rgne dokument on dokument, kuhu kirjutate, mis teiega juhtus, ĂŒksikasjaliku ajastuse, selle, mida te selle parandamiseks tegite ja (see on kohustuslik blokk!), mida teete, et seda tulevikus vĂ€ltida. See on kohustuslik ja vajalik jĂ€rgnevaks analĂŒĂŒsiks.

    Mida loetakse seisakuteks?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Milleni see kÔik viis?

    See tĂ”i kaasa asjaolu, et (meil oli teatud probleeme stabiilsusega, see ei sobinud ei klientidele ega meile) viimase 6 kuu jooksul oli meie stabiilsusnĂ€itaja 99,97. VĂ”ime öelda, et seda pole kuigi palju. Jah, meil on, mille poole pĂŒĂŒelda. Sellest nĂ€itajast umbes poole moodustab justkui mitte meie, vaid meie ees seisva ja teenusena kasutatava veebirakenduse tulemĂŒĂŒri stabiilsus, kuid kliente see ei huvita.

    Õppisime öösel magama. LĂ”puks ometi! Kuus kuud tagasi me ei saanud. Ja selle tulemuste kohta tahaksin teha ĂŒhe mĂ€rkuse. Eile Ă”htul oli suurepĂ€rane aruanne tuumareaktori juhtimissĂŒsteemi kohta. Kui inimesed, kes selle sĂŒsteemi kirjutasid, kuulevad mind, unustage see, mida ma ĂŒtlesin teemal "2% ei ole seisakuaeg". Teie jaoks on 2% seisakuaeg, isegi kui kaks minutit!

    See on kĂ”ik! Teie kĂŒsimused.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Tasakaalurite ja andmebaaside migratsiooni kohta

    KĂŒsimus publikult (edaspidi – B): – Tere Ă”htust. Suur tĂ€nu sellise administraatori aruande eest! LĂŒhike kĂŒsimus teie tasakaalustajate kohta. Mainisid, et sul on WAF ehk nagu ma aru saan, kasutad mingit vĂ€list tasakaalustajat...

    EK: – Ei, me kasutame oma teenuseid tasakaalustajana. Antud juhul on WAF meie jaoks eranditult DDoS-i kaitsetööriist.

    Sisse: – Kas saate öelda paar sĂ”na tasakaalustajate kohta?

    EK: – Nagu ma juba ĂŒtlesin, on see avatud reĆŸiimis serverite rĂŒhm. Meil on nĂŒĂŒd 5 reservrĂŒhma, mis vastavad eranditult... see tĂ€hendab server, mis töötab eranditult openrestyga, vaid puhverserverit. Sellest lĂ€htuvalt, et mĂ”ista, kui palju meil on: meil on nĂŒĂŒd regulaarne liiklusvoog, mis on mitusada megabitti. Nad tulevad toime, tunnevad end hĂ€sti, isegi ei pinguta ennast.

    Sisse: – Samuti lihtne kĂŒsimus. Siin on sinine/roheline kasutuselevĂ”tt. Mida teete nĂ€iteks andmebaaside migreerimisega?

    EK: - Hea kĂŒsimus! Vaata, sinise/rohelise juurutamise korral on meil iga rea ​​jaoks eraldi jĂ€rjekorrad. See tĂ€hendab, et kui me rÀÀgime sĂŒndmuste jĂ€rjekordadest, mis edastatakse töötajalt töötajale, on sinise ja rohelise joone jaoks eraldi jĂ€rjekorrad. Kui me rÀÀgime andmebaasist endast, siis me kitsendasime seda teadlikult nii palju kui saime, tĂ”stsime kĂ”ik praktiliselt jĂ€rjekordadesse, andmebaasis salvestame ainult tehingute virna. Ja meie tehingute virn on kĂ”igil ridadel sama. Andmebaasiga selles kontekstis: me ei jaga seda siniseks ja roheliseks, sest mĂ”lemad koodi versioonid peavad teadma, mis tehinguga toimub.

    SĂ”brad, mul on teile julgustuseks ka vĂ€ike auhind – raamat. Ja ma peaksin selle auhinna saama parima kĂŒsimuse eest.

    Sisse: - Tere. TĂ€name raporti eest. KĂŒsimus on selles. JĂ€lgid makseid, jĂ€lgid teenuseid, millega suhtled... Aga kuidas sa jĂ€lgid, et inimene tuli kuidagi sinu makselehele, tegi makse ja projekt krediteeris talle raha? See tĂ€hendab, kuidas jĂ€lgite, et mĂŒĂŒja on saadaval ja on teie tagasihelistamise vastu vĂ”tnud?

    EK: – “Kaupmees” on meie jaoks antud juhul tĂ€pselt samasugune vĂ€listeenus, mis maksesĂŒsteem. JĂ€lgime kaupmehe reageerimiskiirust.

    Andmebaasi krĂŒptimise kohta

    Sisse: - Tere. Mul on veidi seotud kĂŒsimus. Teil on tundlikud PCI DSS-andmed. Tahtsin teada, kuidas salvestate PAN-e jĂ€rjekordadesse, kuhu peate ĂŒle kandma? Kas kasutate mingit krĂŒptimist? Ja see viib teise kĂŒsimuseni: PCI DSS-i jĂ€rgi on muudatuste korral (administraatorite vallandamine jne) vaja andmebaasi perioodiliselt uuesti krĂŒpteerida - mis saab sel juhul ligipÀÀsetavusega?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    EK: - Imeline kĂŒsimus! Esiteks, me ei salvesta PAN-e jĂ€rjekordadesse. Meil ei ole pĂ”himĂ”tteliselt Ă”igust PAN-i kuskil selgel kujul salvestada, seega kasutame eriteenust (nimetame seda "Kademoniks") - see on teenus, mis teeb ainult ĂŒht: vĂ”tab sisendina vastu sĂ”numi ja saadab krĂŒpteeritud sĂ”numi vĂ€lja saatma. Ja me salvestame kĂ”ik selle krĂŒpteeritud sĂ”numiga. Sellest lĂ€htuvalt on meie vĂ”tme pikkus alla kilobaidi, nii et see on tĂ”sine ja usaldusvÀÀrne.

    Sisse: – Kas teil on nĂŒĂŒd vaja 2 kilobaiti?

    EK: – Tundub, et just eile oli 256... No kus siis veel?!

    Sellest lĂ€htuvalt on see esimene. Ja teiseks, olemasolev lahendus toetab uuesti krĂŒpteerimisprotseduuri - seal on kaks paari "keksi" (vĂ”tmeid), mis annavad "tekid", mis krĂŒpteerivad (vĂ”ti on vĂ”tmed, dek on krĂŒpteerivate vĂ”tmete tuletised) . Ja kui protseduur kĂ€ivitatakse (see juhtub regulaarselt, 3 kuud kuni ± mĂ”ni), laadime alla uue paari "kooke" ja krĂŒpteerime andmed uuesti. Meil on eraldi teenused, mis rebivad vĂ€lja kĂ”ik andmed ja krĂŒpteerivad need uuel viisil; Andmed salvestatakse selle vĂ”tme identifikaatori kĂ”rvale, millega need krĂŒpteeritakse. SeetĂ”ttu kustutame niipea, kui krĂŒpteerime andmed uute vĂ”tmetega, vana vĂ”tme.

    MÔnikord tuleb makseid teha kÀsitsi...

    Sisse: – See tĂ€hendab, et kui mĂ”ne toimingu eest on saabunud tagasimakse, kas dekrĂŒpteerite selle ikkagi vana vĂ”tmega?

    EK: - Jah.

    Sisse: – Siis veel ĂŒks vĂ€ike kĂŒsimus. Kui juhtub mingisugune rike, kukkumine vĂ”i vahejuhtum, tuleb tehing kĂ€sitsi lĂ€bi suruda. Selline olukord on.

    EK: - Jah, mÔnikord.

    Sisse: – Kust te need andmed vĂ”tate? VĂ”i lĂ€hete ise sellesse hoidlasse?

    EK: – Ei, muidugi, meil on mingisugune back-office sĂŒsteem, mis sisaldab meie toe liidest. Kui me ei tea, mis olekus tehing on (nĂ€iteks seni, kuni maksesĂŒsteem vastas ajalĂ”puga), ei tea me seda ka a priori, st mÀÀrame lĂ”pliku oleku ainult tĂ€ie kindlustundega. Sel juhul mÀÀrame tehingu kĂ€sitsi töötlemiseks eriolekusse. Hommikul, jĂ€rgmisel pĂ€eval, niipea kui tugiteenus saab teavet, et sellised ja sellised tehingud jÀÀvad maksesĂŒsteemi, töötlevad nad neid selles liideses kĂ€sitsi.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Sisse: – Mul on paar kĂŒsimust. Üks neist on PCI DSS-i tsooni jĂ€tkamine: kuidas nende vooluringi logida? See kĂŒsimus tuleneb sellest, et arendaja oleks vĂ”inud logidesse panna mida iganes! Teine kĂŒsimus: kuidas kĂ€igultparandusi juurutada? Andmebaasi kĂ€epidemete kasutamine on ĂŒks vĂ”imalus, kuid vĂ”ib olla tasuta kiirparandusi – milline on seal protseduur? Ja kolmas kĂŒsimus on ilmselt seotud RTO, RPO-ga. Teie saadavus oli 99,97, peaaegu neli ĂŒheksat, aga nagu ma aru saan, on teil teine ​​andmekeskus, kolmas andmekeskus ja viies andmekeskus... Kuidas neid sĂŒnkroonida, kopeerida ja kĂ”ike muud?

    EK: - Alustame esimesest. Kas esimene kĂŒsimus oli palkide kohta? Logide kirjutamisel on meil kiht, mis maskeerib kĂ”ik tundlikud andmed. Ta vaatab maski ja lisavĂ€lju. Sellest lĂ€htuvalt tulevad meie logid vĂ€lja juba maskeeritud andmete ja PCI DSS-ahelaga. See on ĂŒks tavapĂ€rastest testimisosakonnale pandud ĂŒlesannetest. Nad peavad kontrollima iga ĂŒlesannet, sealhulgas nende poolt kirjutatud logisid, ja see on ĂŒks tavalisi ĂŒlesandeid koodide ĂŒlevaatamise ajal, et kontrollida, kas arendaja ei kirjutanud midagi ĂŒles. Selle hilisemaid kontrolle teeb infoturbe osakond regulaarselt umbes kord nĂ€dalas: vĂ”etakse valikuliselt viimase pĂ€eva logid ja need lastakse testserveritest lĂ€bi spetsiaalse skanner-analĂŒsaatori, et kĂ”ike kontrollida.
    Kuumparanduste kohta. See sisaldub meie kasutuselevĂ”tu eeskirjades. Meil on kiirparanduste kohta eraldi klausel. Usume, et juurutame kiirparandusi ööpĂ€evaringselt, kui seda vajame. Niipea kui versioon on kokku pandud, niipea, kui see on kĂ€ivitatud, niipea kui meil on artefakt, on meil tugiteenuse kĂ”ne alusel valves sĂŒsteemiadministraator, kes vĂ”tab selle kasutusele hetkel, kui see on vajalik.

    Umbes "neli ĂŒheksa". Praegune nĂ€itaja on tĂ”esti saavutatud ja me pĂŒĂŒdlesime selle poole teises andmekeskuses. NĂŒĂŒd on meil teine ​​andmekeskus ja me hakkame nende vahel marsruutima ning andmekeskuseĂŒlese replikatsiooni kĂŒsimus on tĂ”esti mittetriviaalne kĂŒsimus. Proovisime seda korraga lahendada erinevate vahenditega: proovisime kasutada sama "Tarantulat" - see ei tulnud meile vĂ€lja, ma ĂŒtlen teile kohe. SeetĂ”ttu tellisimegi "sensid" kĂ€sitsi. Tegelikult kĂ€itab iga meie sĂŒsteemi rakendus vajalikku andmekeskuste vahelist sĂŒnkroonimist „muudatus tehtud” asĂŒnkroonselt.

    Sisse: – Kui saite teise, siis miks te ei saanud kolmandat? Sest kellelgi pole veel aju lĂ”hki...

    EK: – Aga meil pole lĂ”hestatud aju. Kuna iga rakendust juhib multimaster, ei ole meie jaoks oluline, millisesse keskusesse pĂ€ring tuli. Oleme valmis selleks, et kui ĂŒks meie andmekeskustest ebaĂ”nnestub (oleme sellele tuginenud) ja keset kasutaja pĂ€ringut lĂŒlitub teisele andmekeskusele, oleme valmis selle kasutaja tĂ”epoolest kaotama; kuid need on ĂŒhikud, absoluutsed ĂŒhikud.

    Sisse: - Tere Ă”htust. TĂ€name raporti eest. RÀÀkisite oma silurist, mis kĂ€ivitab mĂ”ned testtehingud tootmises. Aga rÀÀkige meile testtehingutest! Kui sĂŒgavale see lĂ€heb?

    EK: – See lĂ€bib kogu komponendi tĂ€istsĂŒkli. Komponendi puhul pole testtehingu ja tootmistehingu vahel vahet. Aga loogilisest vaatenurgast on see lihtsalt sĂŒsteemis eraldi projekt, mille peal jooksevad ainult testtehingud.

    Sisse: - Kust sa selle Àra lÔikad? Siin Core saatis...

    EK: – Oleme testtehingute puhul antud juhul “Kori” taga... Meil ​​on selline asi nagu marsruutimine: “Kor” teab, millisesse maksesĂŒsteemi saata – saadame vĂ”ltsmaksesĂŒsteemi, mis annab lihtsalt http signaali ja see on kĂ”ik.

    Sisse: – Ütle mulle, palun, kas teie taotlus oli kirjutatud ĂŒhte tohutusse monoliiti vĂ”i lĂ”igasite selle mĂ”neks teenuseks vĂ”i isegi mikroteenusteks?

    EK: – Meil ​​pole loomulikult monoliiti, meil on teenusele orienteeritud rakendus. Teeme nalja, et meie teenus on valmistatud monoliitidest - need on tĂ”esti ĂŒsna suured. Seda on raske nimetada mikroteenusteks, kuid need on teenused, mille raames töötavad hajutatud masinate töötajad.

    Kui teenus serveris on ohus...

    Sisse: – Siis on mul jĂ€rgmine kĂŒsimus. Isegi kui see oleks monoliit, ĂŒtlesite ikkagi, et teil on palju selliseid kiirservereid, need töötlevad pĂ”himĂ”tteliselt andmeid ja kĂŒsimus on jĂ€rgmine: "Ühe kiirserveri vĂ”i rakenduse ohu korral vĂ”ib iga ĂŒksik link , kas neil on mingisugune juurdepÀÀsukontroll? Kumb neist saab mida teha? Kelle poole peaksin pöörduma mis teabe saamiseks?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    EK: - Jah, kindlasti. TurvanĂ”uded on ĂŒsna tĂ”sised. Esiteks on meil avatud andmete liikumine ja pordid on ainult need, mille kaudu me liikluse liikumist ette nĂ€eme. Kui komponent suhtleb andmebaasiga (ĂŒtleme Muskuliga) 5-4-3-2 kaudu, on talle avatud ainult 5-4-3-2 ja muud sadamad ja muud liiklussuunad pole saadaval. Lisaks peate mĂ”istma, et meie tootmises on umbes 10 erinevat turvasilmust. Ja isegi kui rakendus oleks kuidagi ohustatud, jumal hoidku, ei pÀÀse rĂŒndaja serveri halduskonsoolile, sest see on erinev vĂ”rgu turvatsoon.

    Sisse: – Ja selles kontekstis on minu jaoks huvitavam see, et teil on teenustega teatud lepingud – mida nad saavad teha, milliste “toimingute” kaudu saavad nad omavahel ĂŒhendust vĂ”tta... Ja tavalises voolus nĂ”uavad mĂ”ned konkreetsed teenused mĂ”nda rida, teiselt poolt "toimingute" loend. Tundub, et nad ei pöördu tavaolukorras teiste poole ja neil on muud vastutusvaldkonnad. Kui ĂŒks neist on ohustatud, kas see vĂ”ib hĂ€irida selle teenuse "toiminguid"?

    EK: - Ma saan aru. Kui tavaolukorras teise serveriga suhtlemine ĂŒldse lubatud oli, siis jah. Vastavalt SLA lepingule ei jĂ€lgi me, et teil on lubatud ainult 3 esimest "toimingut" ja 4 "toimingut" ei ole lubatud. See on meie jaoks ilmselt ĂŒleliigne, sest meil on juba pĂ”himĂ”tteliselt vooluahelate jaoks 4-astmeline kaitsesĂŒsteem. Eelistame end kaitsta kontuuridega, mitte sisemuse tasandil.

    Kuidas Visa, MasterCard ja Sberbank töötavad

    Sisse: – Soovin selgitada ĂŒht kasutaja vahetamist ĂŒhest andmekeskusest teise. Minu teada töötavad Visa ja MasterCard binaarse sĂŒnkroonprotokolli 8583 abil ja seal on segud. Ja ma tahtsin teada, et nĂŒĂŒd mĂ”tleme vahetamist – kas see on otse “Visa” ja “MasterCard” vĂ”i enne maksesĂŒsteeme, enne töötlemist?

    EK: - See on enne segusid. Meie segud asuvad samas andmekeskuses.

    Sisse: – JĂ€medalt öeldes, kas teil on ĂŒks ĂŒhenduspunkt?

    EK: – “Visa” ja “MasterCard” – jah. Lihtsalt sellepĂ€rast, et Visa ja MasterCard nĂ”uavad pĂ€ris tĂ”siseid investeeringuid infrastruktuuri, et sĂ”lmida eraldi lepingud nĂ€iteks teise segupaari saamiseks. Need on reserveeritud ĂŒhe andmekeskuse piires, aga kui jumal hoidku, meie andmekeskus, kus on Visa ja MasterCardiga ĂŒhendamiseks segud, Ă€ra sureb, siis kaob ĂŒhendus Visa ja MasterCardiga...

    Sisse: – Kuidas saab neid reserveerida? Tean, et Visa lubab pĂ”himĂ”tteliselt ainult ĂŒhte ĂŒhendust!

    EK: – Nad tarnivad seadmed ise. Igal juhul saime varustuse, mis on sees tĂ€iesti ĂŒleliigne.

    Sisse: – Nii et alus on nende Connects Orange’ilt?

    EK: - Jah.

    Sisse: – Aga kuidas on selle juhtumiga: kui teie andmekeskus kaob, kuidas saate seda edasi kasutada? VĂ”i jÀÀb liiklus lihtsalt seisma?

    EK: - Ei. Sel juhul suuname lihtsalt liikluse teisele kanalile, mis on loomulikult meile kallim ja klientidele kallim. Kuid liiklus ei toimu meie otseĂŒhenduse kaudu Visa, MasterCardiga, vaid tingimusliku Sberbanki kaudu (vĂ€ga liialdatud).

    Vabandan meeletult, kui solvasin Sberbanki töötajaid. Kuid meie statistika kohaselt langeb Venemaa pankade seas Sberbank kÔige sagedamini. Ei möödu kuudki, kui Sberbankis midagi maha ei kukuks.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): mida teha, kui minut seisakuid maksab 100000 XNUMX dollarit

    Esita video

    MĂ”ned reklaamid 🙂

    TÀname, et jÀite meiega. Kas teile meeldivad meie artiklid? Kas soovite nÀha huvitavamat sisu? Toeta meid, esitades tellimuse vÔi soovitades sÔpradele, pilve VPS arendajatele alates 4.99 dollarist, algtaseme serverite ainulaadne analoog, mille me teie jaoks leiutasime: Kogu tÔde VPS (KVM) E5-2697 v3 (6 tuuma) 10GB DDR4 480GB SSD 1Gbps kohta alates 19 dollarist vÔi kuidas serverit jagada? (saadaval RAID1 ja RAID10, kuni 24 tuuma ja kuni 40 GB DDR4-ga).

    Dell R730xd 2x odavam Amsterdami Equinixi Tier IV andmekeskuses? Ainult siin 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6 GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 telerit alates 199 dollarist Hollandis! Dell R420 – 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB – alates 99 dollarist! Millegi kohta lugema Kuidas ehitada infrastruktuuri ettevĂ”tet. klassis koos Dell R730xd E5-2650 v4 serverite kasutusega 9000 eurot senti?

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster