Alla pratar om utvecklings- och testprocesser, personalutbildning, ökad motivation, men dessa processer rÀcker inte till nÀr en minuts driftstopp kostar astronomiska summor pengar. Vad ska man göra nÀr man genomför finansiella transaktioner under ett strikt SLA? Hur ökar man tillförlitligheten och feltoleransen hos sina system, utan att ta utveckling och testning ur ekvationen?

NÀsta HighLoad++-konferens kommer att hÄllas den 6-7 april 2020 i St. Petersburg. Detaljer och biljetter via 9 november, 18:00. HighLoad++ Moskva 2018, Delhi + Kolkata-hallen. Sammanfattningar och .
Evgeny Kuzovlev (nedan â EK): - VĂ€nner, hej! Jag heter Evgeniy Kuzovlev. Jag kommer frĂ„n EcommPay, en specifik avdelning - EcommPay IT, en IT-avdelning inom en företagsgrupp. Och idag ska vi prata om driftstopp - hur man undviker dem, hur man minimerar deras konsekvenser om man inte kan undvika dem. Ămnet Ă€r: "Vad ska man göra nĂ€r en minuts driftstopp kostar 100 000 dollar"? Om vi ââblickar framĂ„t Ă€r vĂ„ra siffror jĂ€mförbara.
Vad gör EcommPay IT?
Vilka Àr vi? Varför stÄr jag hÀr framför er? Varför har jag rÀtt att berÀtta vad som helst för er hÀr? Och vad ska vi diskutera mer i detalj hÀr?

EcommPay-koncernen Ă€r en internationell inlösare. Vi hanterar betalningar över hela vĂ€rlden â i Ryssland, Europa, Sydostasien (över hela vĂ€rlden). Vi har 9 kontor, totalt 500 anstĂ€llda, och ungefĂ€r hĂ€lften av dem Ă€r IT-specialister. Allt vi gör, allt vi tjĂ€nar pengar pĂ„, har vi gjort sjĂ€lva.
Vi skrev alla vĂ„ra produkter sjĂ€lva (och vi har en hel del av dem â i vĂ„r serie av stora IT-produkter har vi ungefĂ€r 16 olika komponenter); vi skriver dem sjĂ€lva, vi utvecklar dem sjĂ€lva. Och för nĂ€rvarande genomför vi ungefĂ€r en miljon transaktioner om dagen (miljoner â det Ă€r nog rĂ€tt ord). Vi Ă€r ett ganska ungt företag â vi Ă€r bara ungefĂ€r sex Ă„r gamla.
För 6 Är sedan var det en startup, nÀr killarna kom med företaget. De var enade av idén (det fanns inget annat Àn idén), och vi körde. Som alla startups körde vi snabbare... För oss var snabbhet viktigare Àn kvalitet.
Vid nÄgon tidpunkt stannade vi upp: vi insÄg att vi inte lÀngre kunde leva med den hastigheten och kvaliteten och att vi behövde prioritera kvalitet först och frÀmst. Vid den tidpunkten bestÀmde vi oss för att skriva en ny plattform som skulle vara korrekt, skalbar och pÄlitlig. Vi började skriva den hÀr plattformen (vi började investera, utveckla och testa), men vid nÄgon tidpunkt insÄg vi att utveckling och testning inte tillÀt oss att nÄ en ny nivÄ av servicekvalitet.
Du tillverkar en ny produkt, du sÀtter den i produktion, men ÀndÄ, nÄgonstans, kommer nÄgot att gÄ fel. Och idag ska vi prata om hur man nÄr en ny kvalitetsnivÄ (hur vi gjorde det, om vÄr erfarenhet), och ta bort utveckling och testning ur ekvationen; vi ska prata om vad som Àr tillgÀngligt för driften - vad driften kan göra sjÀlv, vad den kan erbjuda testning för att pÄverka kvaliteten.
StillestÄndstider. Utnyttjandets budord.
Alltid den viktigaste hörnstenen, det vi faktiskt ska prata om idag Ă€r driftstopp. Ett skrĂ€mmande ord. Om vi ââhar driftstopp Ă€r allt dĂ„ligt för oss. Vi springer för att fĂ„ upp den, administratörerna hĂ„ller servern â Gud förbjude att den faller, som de sjunger i den dĂ€r sĂ„ngen. Det Ă€r det vi ska prata om idag.

NÀr vi började Àndra vÄra tillvÀgagÄngssÀtt formulerade vi fyra budord. Jag har presenterat dem pÄ bilderna:
Dessa budord Àr ganska enkla:

- Identifiera problemet snabbt.
- Bli av med det Ànnu snabbare.
- HjÀlp till att förstÄ orsaken (senare, för utvecklare).
- Och standardisera metoder.
LÄt mig rikta er uppmÀrksamhet mot punkt nummer 2. Vi löser inte problemet. Att lösa det Àr sekundÀrt. Det primÀra för oss Àr att anvÀndaren skyddas frÄn problemet. Det kommer att existera i en isolerad miljö, men denna miljö kommer inte att kontakta honom pÄ nÄgot sÀtt. Vi kommer faktiskt att gÄ igenom dessa fyra problemgrupper (vissa mer detaljerat, vissa mindre detaljerat). Jag kommer att berÀtta vad vi anvÀnder, vilken erfarenhet vi har av lösningar.
Felsökning: NÀr intrÀffar de och vad ska man göra Ät dem?
Men vi börjar i fel ordning, vi börjar med punkt nummer 2 â hur blir man snabbt av med problemet? Det finns ett problem â vi mĂ„ste eliminera det. âVad ska vi göra Ă„t det?â â huvudfrĂ„gan. Och nĂ€r vi började fundera pĂ„ hur vi skulle eliminera problemet, utvecklade vi nĂ„gra krav för oss sjĂ€lva som elimineringen av problemen skulle följa.

För att formulera dessa krav bestÀmde vi oss för att stÀlla oss frÄgan: "NÀr har vi problem?" Och problem, som det visade sig, uppstÄr i fyra fall:

- Maskinvarufel.
- Fel pÄ externa tjÀnster.
- Ăndra programvaruversionen (samma distribution).
- Explosiv tillvÀxt av last.
Vi ska inte prata om de tvÄ första. HÄrdvarufel löses helt enkelt: du mÄste ha allt duplicerat. Om det Àr diskar mÄste diskarna monteras i RAID, om det Àr en server mÄste servern dupliceras, om du har en nÀtverksinfrastruktur mÄste du installera en andra kopia av nÀtverksinfrastrukturen, det vill sÀga du tar och duplicerar. Och om nÄgot gÄr fel byter du till sÀkerhetskopieringskapacitet. Det Àr svÄrt att sÀga nÄgot mer hÀr.
Det andra Àr att externa tjÀnster inte fungerar. För de flesta system Àr detta inte alls ett problem, men inte för oss. Eftersom vi behandlar betalningar Àr vi en aggregator som stÄr mellan anvÀndaren (som anger sina kortuppgifter) och banker, betalningssystem (Visa, MasterCard, Mira, etc.). VÄra externa tjÀnster (betalningssystem, banker) tenderar att misslyckas. Varken vi eller du (om du har sÄdana tjÀnster) kan pÄverka detta.
Vad ska man göra dÄ? Det finns tvÄ alternativ. För det första, om möjligt, bör man pÄ nÄgot sÀtt duplicera den hÀr tjÀnsten. Till exempel, om vi kan, överför vi trafik frÄn en tjÀnst till en annan: till exempel behandlar vi kort via Sberbank, Sberbank har problem - vi överför trafik [villkorligt] till Raiffeisen. Det andra vi kan göra Àr att mycket snabbt mÀrka ett fel i externa tjÀnster, och dÀrför kommer vi att prata om svarshastigheten i nÀsta del av rapporten.
Faktum Àr att vi frÄn dessa fyra specifikt kan pÄverka Àndringen av programvaruversioner - vidta ÄtgÀrder som leder till en förbÀttring i samband med distributioner och i samband med explosiv tillvÀxt av belastningen. Det gjorde vi faktiskt. HÀr, Äterigen, en liten anmÀrkning ...
Av dessa fyra problem löses flera omedelbart om du har ett moln. Om du befinner dig i molnen frÄn Microsoft Azure, Ozon, anvÀnder vÄra moln, frÄn Yandex eller Mail, sÄ blir Ätminstone hÄrdvarufelet deras problem och allt blir omedelbart bra för dig i samband med hÄrdvarufelet.
Vi Ă€r ett lite ovanligare företag. HĂ€r pratar alla om Kubernetes, om moln â vi har varken Kubernetes eller moln. Men vi har rack med hĂ„rdvara i mĂ„nga datacenter, och vi Ă€r tvungna att leva pĂ„ den hĂ€r hĂ„rdvaran, vi Ă€r tvungna att vara ansvariga för allt detta. DĂ€rför kommer vi att prata i detta sammanhang. SĂ„, om problemen. De tvĂ„ första Ă€r utelĂ€mnade.
Ăndra programvaruversionen. Grunderna
VÄra utvecklare har inte tillgÄng till produktion. Varför det? Vi Àr PCI DSS-certifierade, och vÄra utvecklare har helt enkelt inte rÀtt att gÄ i produktion. Det Àr allt, punkt slut. Absolut. DÀrför upphör utvecklingsansvaret exakt i det ögonblick dÄ utvecklaren har överfört builden för release.

VĂ„r andra grund som vi har, som ocksĂ„ hjĂ€lper oss mycket, Ă€r avsaknaden av unik odokumenterad kunskap. Jag hoppas att ni har detsamma. För om ni inte har det kommer ni att fĂ„ problem. Problem kommer att uppstĂ„ nĂ€r denna unika odokumenterade kunskap inte finns nĂ€rvarande vid rĂ€tt tidpunkt pĂ„ rĂ€tt plats. LĂ„t oss sĂ€ga att du har en person som vet hur man distribuerar en specifik komponent â ââpersonen Ă€r inte dĂ€r, hen Ă€r pĂ„ semester eller sjuk â det Ă€r allt, ni har problem.
Och den tredje grunden kom vi fram till. Vi kom fram till den genom smĂ€rta, blod, tĂ„rar â vi kom fram till slutsatsen att alla vĂ„ra byggen innehĂ„ller fel, Ă€ven om de Ă€r felfria. Vi bestĂ€mde sjĂ€lva: nĂ€r vi driftsĂ€tter nĂ„got, nĂ€r vi rullar nĂ„got i produktion â har vi en byggen med fel. Vi utformade de krav som vĂ„rt system mĂ„ste uppfylla.
Krav för att Àndra programvaruversionen
Det finns tre av dessa krav:

- Vi mÄste snabbt ÄterstÀlla utplaceringen.
- Vi mÄste minimera effekterna av en misslyckad implementering.
- Och vi mÄste kunna driftsÀttas snabbt parallellt.
I den ordningen! Varför? För det första Ă€r hastighet inte viktigt nĂ€r man driftsĂ€tter en ny version, utan det Ă€r viktigt att snabbt kunna backa och ha minimal pĂ„verkan om nĂ„got gĂ„r fel. Men om du har en uppsĂ€ttning versioner i produktion dĂ€r det visar sig att det finns ett fel (helt ovĂ€ntat, det skedde ingen driftsĂ€ttning, men felet finns dĂ€r) â bryr du dig om hastigheten pĂ„ nĂ€sta driftsĂ€ttning. Vad gjorde vi för att uppfylla dessa krav? Vi anvĂ€nde följande metod:
Det Ă€r ganska vĂ€lkĂ€nt, vi har inte uppfunnit det alls â det Ă€r Blue/Green deploy. Vad Ă€r det? Du bör ha en kopia för varje grupp av servrar dĂ€r dina applikationer finns. Kopian Ă€r "varm": det finns ingen trafik pĂ„ den, men denna trafik kan nĂ€r som helst skickas till denna kopia. Denna kopia innehĂ„ller den tidigare versionen. Och vid driftsĂ€ttningstillfĂ€llet rullar du ut koden till den inaktiva kopian. Sedan vĂ€xlar du en del av trafiken (eller all) till den nya versionen. För att Ă€ndra trafikflödet frĂ„n den gamla versionen till den nya behöver du alltsĂ„ bara göra en sak: du behöver Ă€ndra balanseraren i uppströms, Ă€ndra riktningen â frĂ„n en uppströms till en annan. Detta Ă€r mycket bekvĂ€mt och löser problemet med snabb vĂ€xling, snabb Ă„terstĂ€llning.HĂ€r Ă€r lösningen pĂ„ den andra frĂ„gan â minimering: du kan bara skicka en del av din trafik (lĂ„t oss sĂ€ga 2%) till en ny rad, till en rad med en ny kod. Och dessa 2% Ă€r inte 100%! Om du förlorar 100% av trafiken pĂ„ grund av en misslyckad distribution â det Ă€r skrĂ€mmande, om du förlorar 2% av trafiken â det Ă€r obehagligt, men det Ă€r inte skrĂ€mmande. Dessutom kommer anvĂ€ndarna troligtvis inte ens att mĂ€rka detta, eftersom i vissa fall (inte alla) samma anvĂ€ndare, efter att ha tryckt pĂ„ F5, kommer till en annan, fungerande version.
BlÄ/grön driftsÀttning. Routing
Det Ă€r dock inte sĂ„ enkelt som att âimplementera BlĂ„/Grönâ... Alla vĂ„ra komponenter kan delas in i tre grupper:
- detta Àr anvÀndargrÀnssnittet (betalningssidorna som vÄra kunder ser);
- processorkÀrna;
- adapter för att arbeta med betalningssystem (banker, MasterCard, Visa, etc.).
Och hĂ€r finns en nyans â nyansen ligger i routingen mellan linjerna. Om man helt enkelt byter 100 % av trafiken har man inte dessa problem. Men om man vill byta 2 % börjar man stĂ€lla frĂ„gor: "Hur gör man detta?" Det enklaste, rakt pĂ„ sak: man kan stĂ€lla in ett slumpmĂ€ssigt urval, Round Robin i nginx, och man har 2 % till vĂ€nster, 98 % till höger. Men detta Ă€r inte alltid lĂ€mpligt.
Till exempel, i vĂ„rt fall interagerar anvĂ€ndaren med systemet med mer Ă€n en förfrĂ„gan. Detta Ă€r normalt: 2, 3, 4, 5 förfrĂ„gningar â era system kan vara desamma. Och om det Ă€r viktigt för dig att alla anvĂ€ndarförfrĂ„gningar kommer till samma rad dĂ€r den första förfrĂ„gan kom, eller (andra punkten) alla anvĂ€ndarförfrĂ„gningar kommer till en ny rad efter byte (han kunde ha börjat arbeta med systemet tidigare, innan bytet), dĂ„ passar inte denna slumpmĂ€ssiga fördelning dig. DĂ„ finns det följande alternativ:

Det första alternativet, det enklaste, baseras pÄ klientens grundlÀggande parametrar (IP-hash). Du har en IP-adress och du delar den Ät vÀnster och höger med IP-adressen. DÄ fungerar det andra fallet jag beskrev för dig. NÀr driftsÀttningen har skett kan anvÀndaren redan börja arbeta med ditt system, och frÄn driftsÀttningsögonblicket kommer alla förfrÄgningar att gÄ till den nya raden (till samma, lÄt oss sÀga).Om detta av nÄgon anledning inte passar dig och du mÄste skicka förfrÄgningar till den rad dÀr anvÀndarens ursprungliga förfrÄgan kom ifrÄn, har du tvÄ alternativ...
Det första alternativet: du kan vÀlja en betald nginx+. Den har en mekanism som kallas Sticky sessions, som, pÄ anvÀndarens första begÀran, sÀtter upp en session för anvÀndaren och binder den till en eller annan uppströms plattform. Alla efterföljande förfrÄgningar frÄn anvÀndaren inom sessionens livslÀngd skickas till samma uppströms plattform dÀr sessionen stÀlldes in.Detta fungerade inte för oss eftersom vi redan hade vanlig nginx. Att byta till nginx+ Àr inte sÄ att det Àr dyrt, det var bara lite smÀrtsamt för oss och inte riktigt rÀtt. Till exempel fungerade inte Sticky Sessions för oss av den enkla anledningen att Sticky Sessions inte tillÄter routing baserat pÄ "Either-Or". DÀr kan du ange vad Sticky Sessions gör, till exempel via IP eller via IP och cookies eller via postparameter, men "Either-Or" Àr mer komplicerat.
Det Àr dÀrför vi kom fram till det fjÀrde alternativet. Vi tog nginx pÄ "steroider" (detta Àr openresty) - det Àr samma nginx, som dessutom stöder inkludering av "last scripts". Du kan skriva ett "last script", skjuta det till "openresty", och detta "last script" kommer att köras nÀr en anvÀndarförfrÄgan kommer.
Och vi skrev faktiskt ett sÄdant skript, satte oss sjÀlva "openrest" och i det hÀr skriptet gÄr vi igenom 6 olika parametrar genom sammankoppling "Eller". Beroende pÄ nÀrvaron av den eller den parametern vet vi att anvÀndaren kom till en eller annan sida, till en eller annan rad.
BlÄ/grön utplacering. Fördelar och nackdelar
Naturligtvis skulle det förmodligen kunna göras lite enklare (med samma "Stick Sessions"), men vi har ocksĂ„ denna nyans, att inte bara anvĂ€ndaren interagerar med oss ââinom ramen för en bearbetning av en transaktion... Utan betalningssystem interagerar ocksĂ„ med oss: efter att vi bearbetat transaktionen (genom att skicka en begĂ€ran till betalningssystemet) fĂ„r vi en coolback.
Och lÄt oss sÀga, om vi inom vÄr krets kan skicka anvÀndarens IP-adress i alla förfrÄgningar och dela upp anvÀndare baserat pÄ IP-adressen, dÄ kommer vi inte att sÀga till samma Visa: "Grabbar, vi Àr ett sÄnt retroföretag, vi Àr lite internationella (pÄ webbplatsen och i Ryssland)... Men snÀlla, skicka oss anvÀndarens IP-adress i ett extra fÀlt, ert protokoll Àr standardiserat"! Naturligtvis kommer de inte att hÄlla med.
SÄ det fungerade inte för oss - vi skapade openresty. Följaktligen fick vi detta med routing:BlÄ/grön implementering har följaktligen de fördelar jag nÀmnde, och nackdelar.
Det finns tvÄ nackdelar:
- du behöver bry dig om routing;
- Den andra stora nackdelen Àr kostnaden.
Ni behöver dubbelt sÄ mÄnga servrar, ni behöver dubbelt sÄ mÄnga driftsresurser, ni behöver lÀgga ner dubbelt sÄ mycket anstrÀngning pÄ att underhÄlla hela djurparken.
Förresten, bland fördelarna finns en annan sak som jag inte nÀmnt tidigare: du har en reserv i hÀndelse av belastningstillvÀxt. Om du har en explosionsartad belastningstillvÀxt, ett stort antal anvÀndare har kommit till dig, sÄ inkluderar du helt enkelt den andra raden i 50/50-fördelningen - och du har omedelbart x2 servrar i ditt kluster tills du löser problemet med att ha fler servrar.
Hur gör man en snabb utplacering?
Vi har pratat om hur man löser problemet med minimering och snabb ÄterstÀllning, men frÄgan kvarstÄr: "Hur distribuerar man snabbt?"

HĂ€r Ă€r allt kort och enkelt.- Ni mĂ„ste ha ett CD-system (Continuous Delivery) â ni klarar er inte utan det. Om ni har en server kan ni driftsĂ€tta manuellt. Vi har ungefĂ€r ett och ett halvt tusen servrar och ett och ett halvt tusen manuellt, det Ă€r klart â vi kan sĂ€tta en avdelning av den hĂ€r hallens storlek bara för driftsĂ€ttning.
- Implementeringen bör ske parallellt. Om din implementering Àr sekventiell Àr allt fel. En server Àr bra, du kommer att distribuera ett och ett halvt tusen servrar hela dagen.
- Ă
terigen, för hastighetens skull Àr detta förmodligen inte nödvÀndigt. Vid driftsÀttning monteras projektet vanligtvis. Du har ett webbprojekt, det finns en frontend-del (du skapar ett webbpaket dÀr, bygger npm - nÄgot liknande), och den hÀr processen Àr i princip kort - 5 minuter, men dessa 5 minuter kan vara kritiska. Det Àr dÀrför vi till exempel inte gör det pÄ det hÀr sÀttet: vi tog bort dessa 5 minuter, vi driftsÀtter artefakter.
Vad Àr en artefakt? En artefakt Àr en kompilerad build dÀr hela assemblerdelen redan Àr fÀrdigstÀlld. Vi lagrar denna artefakt i ett artefaktarkiv. Vi anvÀnde tvÄ sÄdana arkiv samtidigt - Nexus och nu jFrog Artifactory. Vi anvÀnde initialt Nexus eftersom vi började öva pÄ detta tillvÀgagÄngssÀtt i Java-applikationer (det passade vÀl för detta). Sedan lade vi nÄgra applikationer skrivna i PHP dÀr; och Nexus var inte lÀngre lÀmpligt, och det Àr dÀrför vi valde jFrog Artefactory, som kan artikulera nÀstan allt. Vi kom till och med till den punkt att vi lagrar vÄra egna binÀra paket i detta artefaktarkiv, som vi kompilerar för servrar.
Explosiv tillvÀxt av last
Vi pratade om att Ă€ndra programvaruversionen. NĂ€sta sak vi har Ă€r en explosiv ökning av belastningen. HĂ€r förstĂ„r jag nog att en explosiv ökning av belastningen inte Ă€r helt rĂ€tt sakâŠ
Vi skrev ett nytt system â det Ă€r serviceinriktat, modernt, vackert, arbetare överallt, köer överallt, asynkronitet överallt. Och i sĂ„dana system kan data gĂ„ igenom olika flöden. För den första transaktionen kan den 1:a, 3:e, 10:e arbetaren vara involverad, för den andra transaktionen â den 2:a, 4:e, 5:e. Och idag, lĂ„t oss sĂ€ga, pĂ„ morgonen har du ett dataflöde som involverar de tre första arbetarna, och pĂ„ kvĂ€llen Ă€ndras det plötsligt, och allt involverar de andra tre arbetarna.
Och hÀr visar det sig att du pÄ nÄgot sÀtt mÄste skala upp arbetarna, du mÄste pÄ nÄgot sÀtt skala upp dina tjÀnster, men samtidigt inte tillÄta resursöverskott.

Vi definierade kraven för oss sjĂ€lva. Dessa krav Ă€r ganska enkla: det ska finnas Service Discovery, parametrisering â allt Ă€r standard för att bygga sĂ„dana skalbara system, förutom en punkt â resursavskrivning. Vi sa att vi inte Ă€r redo att avskriva resurser sĂ„ att servrarna vĂ€rmer luften. Vi tog "Consul", vi tog "Nomad", som hanterar vĂ„ra arbetare.Varför Ă€r detta ett problem för oss? LĂ„t mig backa lite. Vi har för nĂ€rvarande cirka 70 betalningssystem bakom oss. PĂ„ morgonen gĂ„r trafiken genom Sberbank, sedan sjunker Sberbank till exempel, och vi byter till ett annat betalningssystem. Vi hade 100 arbetare före Sberbank, och efter det behöver vi snabbt rekrytera 100 arbetare till ett annat betalningssystem. Och det Ă€r önskvĂ€rt att allt detta sker utan mĂ€nsklig inblandning. För om det finns mĂ€nsklig inblandning borde det finnas en ingenjör dĂ€r dygnet runt som bara ska göra detta, eftersom sĂ„dana fel, nĂ€r det finns 24 system bakom dig, hĂ€nder regelbundet.
SĂ„ vi tittade pĂ„ Nomad, som har en öppen IP, och skrev vĂ„r egen grej, Scale-Nomad â ScaleNo, som gör ungefĂ€r sĂ„ hĂ€r: den övervakar kötillvĂ€xten och minskar eller ökar antalet arbetare beroende pĂ„ dynamiken i köförĂ€ndringen. NĂ€r vi gjorde det tĂ€nkte vi: "Kanske borde vi anvĂ€nda öppen kĂ€llkod för det?" Sedan tittade vi pĂ„ det â det Ă€r sĂ„ enkelt som tvĂ„ kopek.
Vi har inte gjort det öppen kĂ€llkod Ă€n, men om du efter rapporten, efter att ha insett att du behöver nĂ„got sĂ„dant, plötsligt fĂ„r ett behov av det, mina kontakter finns pĂ„ sista bilden â skriv till mig. Om minst 3-5 personer ansluter sig till oss â kommer vi att göra det öppen kĂ€llkod.

Hur fungerar det? Nu fĂ„r vi se! FramĂ„tblickande: pĂ„ vĂ€nster sida finns en del av vĂ„r övervakning: detta Ă€r en rad, högst upp Ă€r hĂ€ndelsens bearbetningstid, i mitten Ă€r antalet transaktioner, lĂ€ngst ner Ă€r antalet arbetare.Om du tittar sĂ„ finns det ett fel i den hĂ€r bilden. I den övre grafen kraschade en av graferna pĂ„ 45 sekunder â ett av betalningssystemen gick ner. Trafiken visades ocksĂ„ i 2 minuter och kön började vĂ€xa pĂ„ ett annat betalningssystem, dĂ€r det inte fanns nĂ„gra arbetare (vi utnyttjade inte resurserna â tvĂ€rtom utnyttjade vi resurserna korrekt). Vi ville inte vĂ€rma upp oss â det fanns ett minimumantal, cirka 5â10 arbetare, men de klarade inte av det.
Den sista grafen visar en "puckel", vilket bara visar att "Scaleno" har fördubblat detta tal. Och sedan, nÀr grafen sjönk lite, minskade den lite - antalet arbetare Àndrades automatiskt. Det Àr sÄ det hÀr fungerar. Vi pratade om punkt #2 - "Hur man snabbt blir av med orsaker".
Ăvervakning. Hur identifierar man snabbt ett problem?
Nu Ă€r den första punkten: "Hur identifierar vi problemet snabbt?" Ăvervakning! Vi behöver snabbt förstĂ„ vissa saker. Vilka saker behöver vi snabbt förstĂ„?

Tre saker!- Vi mÄste snabbt förstÄ och snabbt förstÄ hur vÄra egna resurser presterar.
- Vi mÄste snabbt förstÄ fel och övervaka prestandan hos system som Àr externa för oss.
- Den tredje punkten Àr att identifiera logiska fel. Det Àr nÀr systemet fungerar för dig, allt Àr bra enligt alla indikatorer, men nÄgot gÄr fel.
HÀr kommer jag nog inte att berÀtta sÄ mycket som Àr sÄ coolt. Jag ska vara Kapten Obvious. Vi letade efter vad som fanns pÄ marknaden. Vi hade ett "roligt zoo". Det hÀr Àr zooet vi har nu:

Vi anvÀnder Zabbix för att övervaka hÄrdvara, för att övervaka de viktigaste serverindikatorerna. Vi anvÀnder OkMeter för databaser. Vi anvÀnder Grafana och Prometheus för alla andra indikatorer som inte passar de tvÄ första, och vissa av dem med Grafana och Prometheus, och vissa av dem med Grafana med Influx och Telegraf.För ett Är sedan ville vi anvÀnda New Relic. Det Àr en cool grej, den kan göra allt. Men hur mycket den Àn kan göra allt Àr den ocksÄ dyr. NÀr vi vÀxte till en volym pÄ 1,5 tusen servrar kom en leverantör till oss och sa: "LÄt oss skriva ett kontrakt för nÀsta Är." Vi tittade pÄ priset och sa: "Nej, det gör vi inte." Nu vÀgrar vi New Relic, vi har ungefÀr 15 servrar kvar under New Relic-övervakning. Priset visade sig vara helt orimligt.
Och det finns ett verktyg som vi sjĂ€lva implementerade â det Ă€r Debugger. Först kallade vi det âBaggerâ, men sedan kom en engelsklĂ€rare förbi, skrattade vilt och döpte om det till âDebuggerâ. Vad Ă€r det? Det Ă€r ett verktyg som faktiskt pĂ„ 15â30 sekunder pĂ„ varje komponent, som en âsvart lĂ„daâ i systemet, kör tester för komponentens övergripande prestanda.
Om det till exempel Ă€r en extern sida (betalningssida) öppnar han den helt enkelt och tittar pĂ„ hur den ska se ut. Om den bearbetas utlöser han en testtransaktion â ser till att denna "transaktion" gĂ„r igenom. Om det Ă€r en koppling till betalningssystem utlöser vi en testförfrĂ„gan dĂ€r vi kan, och ser till att allt Ă€r bra hos oss.
Vilka indikatorer Àr viktiga att övervaka?
Vad övervakar vi huvudsakligen? Vilka indikatorer Àr viktiga för oss?

- Svarstid/RPS pÄ frontpanelerna Àr en mycket viktig indikator. Den reagerar omedelbart pÄ att nÄgot Àr fel med dig.
- Antalet meddelanden som bearbetats i alla köer.
- Antal arbetare.
- GrundlÀggande mÄtt pÄ korrekthet.
Den sista punkten Àr "affÀrer", "affÀrs"-mÄtt. Om du vill övervaka samma sak mÄste du definiera ett eller tvÄ mÄtt som Àr de viktigaste indikatorerna för dig. VÄrt mÄtt Àr genomströmning (förhÄllandet mellan antalet lyckade transaktioner och det totala transaktionsflödet). Om nÄgot förÀndras i det under ett intervall pÄ 5-10-15 minuter, dÄ har vi problem (om det förÀndras dramatiskt).
SÄ hÀr ser det ut för oss Àr ett exempel pÄ en av vÄra tavlor:

PĂ„ vĂ€nster sida finns sex grafer, dessa visar antalet arbetare respektive antalet meddelanden i köer lĂ€ngs raderna. PĂ„ höger sida finns RPS och RTS. Nedanför finns samma "affĂ€rs"-mĂ„tt. Och pĂ„ "affĂ€rs"-mĂ„ttet kan vi direkt se att nĂ„got gick fel pĂ„ de tvĂ„ mittersta graferna⊠Det var bara ytterligare ett system som kraschade, vilket ligger bakom oss.Det andra vi var tvungna att göra var att övervaka fallet för externa betalningssystem. HĂ€r tog vi OpenTracing â en mekanism, ett standardparadigm som möjliggör spĂ„rning av distribuerade system; och Ă€ndrade det lite. Standardparadigmet för OpenTracing sĂ€ger att vi bygger ett spĂ„r av varje enskild begĂ€ran. Vi behövde inte detta, och vi lindade in det i ett sammanfattande, aggregeringsspĂ„r. Vi skapade ett verktyg som lĂ„ter oss spĂ„ra hastigheten pĂ„ systemen bakom oss.

Diagrammet visar att ett av betalningssystemen började svara inom 3 sekunder â vi har problem. Samtidigt kommer den hĂ€r saken att reagera nĂ€r problemen uppstĂ„r, med intervall pĂ„ 20â30 sekunder.Och den tredje klassen av övervakningsfel som finns Ă€r logisk övervakning.
Ărligt talat visste jag inte vad jag skulle rita pĂ„ den hĂ€r bilden, eftersom vi letat lĂ€nge pĂ„ marknaden efter nĂ„got som skulle passa oss. Vi hittade ingenting, sĂ„ vi fick göra det sjĂ€lva.

Vad menar jag med logisk övervakning? TĂ€nk dig: du skapar ett system för dig sjĂ€lv (till exempel en klon av Tinder); du skapade det, lanserade det. En framgĂ„ngsrik chef Vasya Pupkin installerade det pĂ„ sin telefon, ser en tjej dĂ€r, gillar henne... och liken gĂ„r inte till tjejen - liken gĂ„r till sĂ€kerhetsvakten Mikhalych frĂ„n samma affĂ€rscenter. Chefen gĂ„r ner för trappan och undrar sedan: "Varför ler den hĂ€r sĂ€kerhetsvakten Mikhalych sĂ„ trevligt mot honom"?I sĂ„dana situationer... För oss lĂ„ter den hĂ€r situationen lite annorlunda, eftersom (skrev jag) det Ă€r en sĂ„dan ryktesförlust som indirekt leder till ekonomiska förluster. Vi har den motsatta situationen: vi kan drabbas av direkta ekonomiska förluster â till exempel om vi genomförde en transaktion som framgĂ„ngsrik, men den misslyckades (eller vice versa). Vi var tvungna att skriva vĂ„rt eget verktyg som spĂ„rar antalet framgĂ„ngsrika transaktioner dynamiskt över ett tidsintervall baserat pĂ„ affĂ€rsindikatorer. Vi hittade ingenting pĂ„ marknaden! Det Ă€r precis den idĂ©n jag ville förmedla. Det finns inget pĂ„ marknaden som löser den hĂ€r typen av problem.
Det hÀr handlade om hur man snabbt identifierar ett problem.
Hur man faststÀller orsakerna till utplacering
Den tredje gruppen av uppgifter som vi löser Ă€r efter att vi har identifierat problemet, efter att vi har blivit av med det, vore det bra att förstĂ„ orsaken till utvecklingen, för testning och göra nĂ„got Ă„t ââdet. Följaktligen behöver vi undersöka, vi behöver skapa loggar.

Om vi ââpratar om loggar (frĂ€msta orsaken Ă€r loggar), sĂ„ finns huvuddelen av vĂ„ra loggar i ELK-stacken â nĂ€stan alla har det sĂ„. För vissa kanske inte i ELK, men om man skriver loggar i gigabyte, sĂ„ kommer man förr eller senare till ELK. Vi skriver dem i terabyte.
Det finns ett problem hĂ€r. Vi fixade det, korrigerade felet för anvĂ€ndaren, började grĂ€va, vad som fanns dĂ€r, klĂ€ttrade in i Kibana, angav transaktions-ID:t dĂ€r och fick den hĂ€r loggen (visar mycket). Och i den hĂ€r loggen Ă€r absolut ingenting tydligt. Varför? För att det inte Ă€r tydligt vilken del som refererar till vilken arbetare, vilken del som refererar till vilken komponent. Och i det ögonblicket insĂ„g vi att vi behövde spĂ„rning - samma OpenTracing som jag pratade om.Vi funderade pĂ„ det för ett Ă„r sedan, vĂ€nde vĂ„r uppmĂ€rksamhet mot marknaden, och dĂ€r fanns tvĂ„ verktyg â Zipkin och Jaeger. Jaeger Ă€r i sjĂ€lva verket en ideologisk eftertrĂ€dare, en ideologisk eftertrĂ€dare till Zipkin. Allt Ă€r bra i Zipkin, förutom att det inte kan aggregera, inte kan inkludera loggar i spĂ„rning, bara tidsspĂ„rning. Och Jaeger stödde detta.
Vi tittade pÄ "Eger": man kan instrumentera applikationer, man kan skriva i API (API-standarden för PHP vid den tiden var dock inte godkÀnd - det var för ett Är sedan, och nu har den blivit godkÀnd), men det fanns absolut ingen klient. "Okej", tÀnkte vi, och skrev vÄr egen klient. Vad fick vi? UngefÀr sÄ hÀr ser det ut:

I "Eger" skapas spann för varje meddelande. Det vill sÀga, nÀr en anvÀndare öppnar systemet ser hen ett eller tvÄ block för varje inkommande förfrÄgan (1-2-3 - lika mÄnga inkommande förfrÄgningar frÄn anvÀndaren som det fanns block). För att göra det enklare för anvÀndarna har vi lagt till taggar i loggarna och tidsspÄrningen. Följaktligen, i hÀndelse av ett fel, kommer vÄr applikation att markera loggen med motsvarande Error-tagg. Du kan filtrera efter Error-taggen och endast spann som innehÄller detta block med felet kommer att visas. SÄ hÀr ser det ut om vi expanderar spannet:
Inuti intervallet finns en uppsÀttning spÄr. I det hÀr fallet Àr det tre testspÄr, och det tredje spÄret berÀttar att ett fel intrÀffade. Samtidigt ser vi hÀr ett tidsspÄr: vi har en tidsskala högst upp, och vi ser med vilket tidsintervall den eller den loggen registrerades.Följaktligen gick det bra för oss. Vi skrev vÄrt eget tillÀgg, och vi gjorde det till öppen kÀllkod. Om du vill arbeta med spÄrning, om du vill arbeta med "Eger" i PHP - finns vÄrt tillÀgg, vÀlkommen att anvÀnda, som de sÀger:

För oss Àr den hÀr tillÀgget en klient för OpenTracing API, skapad som en php-tillÀgg, det vill sÀga att du behöver assemblera det och installera systemet under det. För ett Är sedan fanns det inget annat. Nu finns det andra klienter som Àr som komponenter. HÀr Àr det upp till dig: antingen laddar du ner komponenter med composer, eller sÄ anvÀnder du tillÀgget, bestÀmmer du sjÀlv.Företagsstandarder
Vi pratade om de tre budorden. Det fjÀrde budet handlar om att standardisera tillvÀgagÄngssÀtt. Vad handlar det om? Det handlar om detta:

Varför anvÀnds ordet "företag" hÀr? Inte för att vi Àr ett stort eller byrÄkratiskt företag, nej! Jag ville anvÀnda ordet "företag" hÀr i sammanhanget att varje företag, varje produkt, borde ha sina egna standarder, inklusive din. Vilka standarder har vi?
- Vi har en utplaceringsordning. Vi rör oss inte nĂ„gonstans utan den, vi kan inte. Vi utplacerar ungefĂ€r 60 gĂ„nger i veckan, det vill sĂ€ga vi utplacerar nĂ€stan konstant. Samtidigt finns det till exempel i vĂ„r utplaceringsordning ett tabu mot utplacering pĂ„ fredagar â i princip utplacerar vi inte.
- Vi krÀver dokumentation. Ingen ny komponent gÄr i produktion utan dokumentation, Àven om den skapats av vÄra RnD-tekniker. Vi krÀver att de tillhandahÄller driftsÀttningsinstruktioner, en övervakningskarta och en grov beskrivning (som programmerare kan skriva) av hur komponenten fungerar och hur man felsöker den.
- Vi löser inte orsaken till problemet, utan problemet â det jag redan har sagt. Det Ă€r viktigt för oss att skydda anvĂ€ndaren frĂ„n problem.
- Vi har toleranser. Till exempel betraktar vi det inte som driftstopp om vi förlorat 2 % av trafiken under tvÄ minuter. I princip rÀknas inte detta med i vÄr statistik. Om det Àr mer i procent eller tid rÀknar vi det redan.
- Och vi skriver alltid obduktioner. Vad som Àn hÀnder oss, varje situation dÀr nÄgot gick fel i produktionen, kommer det att Äterspeglas i obduktionen. En obduktion Àr ett dokument dÀr du skriver ner vad som hÀnde, en detaljerad tidpunkt, vad du gjorde för att ÄtgÀrda det och (detta Àr ett obligatoriskt block!) vad du kommer att göra för att förhindra att detta hÀnder i framtiden. Detta Àr obligatoriskt, nödvÀndigt för efterföljande analys.
Vad anses vara driftstopp?

Vad ledde allt detta till?Detta ledde till att (vi hade vissa stabilitetsproblem, detta passade varken vÄra kunder eller oss) under de senaste 6 mÄnaderna har vÄr stabilitetsindikator varit 99,97. Man kan sÀga att det inte Àr sÀrskilt mycket. Ja, vi har nÄgot att strÀva efter. Av denna indikator Àr ungefÀr hÀlften stabiliteten hos vÄr webbapplikationsbrandvÀgg, som ligger framför oss och anvÀnds som en tjÀnst, men kunderna bryr sig inte om detta.
Vi har lĂ€rt oss att sova pĂ„ natten. Ăntligen! För sex mĂ„nader sedan kunde vi inte. Och med tanke pĂ„ resultaten vill jag göra en kommentar. IgĂ„r kvĂ€ll kom det en fantastisk rapport om kĂ€rnreaktorns kontrollsystem. Om de som skrev det hĂ€r systemet lyssnar pĂ„ mig, glöm vad jag sa om att "2 % Ă€r inte stillestĂ„ndstid". För er Ă€r 2 % stillestĂ„ndstid, Ă€ven om det Ă€r i tvĂ„ minuter!"
Det var allt för nu! Dina frÄgor.

Om balanserare och databasmigrering
FrĂ„ga frĂ„n publiken (nedan kallad B): â God kvĂ€ll. Tack sĂ„ mycket för en sĂ„dan administratörsrapport! En kort frĂ„ga, om era balanserare. Ni nĂ€mnde att ni har en WAF, det vill sĂ€ga, som jag förstĂ„r det, anvĂ€nder ni nĂ„gon extern balanserareâŠ
EG: â Nej, vi anvĂ€nder vĂ„ra egna tjĂ€nster som en balanseringsmekanismen. I det hĂ€r fallet Ă€r WAF uteslutande ett DDoS-skyddsverktyg för oss.
PĂ : â Kan du sĂ€ga nĂ„gra ord om balanserare?
EG: - Som jag redan sagt, detta Àr en grupp servrar i OpenResty. Vi har nu 5 grupper av dem, reserverade, som svarar exklusivt... det vill sÀga en server dÀr OpenResty Àr installerat exklusivt, den hanterar bara proxytrafik. För att förstÄ hur mycket vi stöder: vÄrt vanliga trafikflöde Àr nu flera hundra megabit. De klarar sig, de gör bra ifrÄn sig, de anstrÀnger sig inte ens.
Pà : - OcksÄ en enkel frÄga. HÀr Àr blÄ/grön implementering. Och vad gör ni till exempel med migreringar frÄn databasen?
EG: â Bra frĂ„ga! I Blue/Green-distributionen har vi separata köer för varje rad. Det vill sĂ€ga, om vi pratar om hĂ€ndelseköer som överförs frĂ„n arbetare till arbetare, finns det separata köer för den blĂ„ linjen och den gröna linjen. Om vi ââpratar om sjĂ€lva databasen har vi begrĂ€nsat den sĂ„ mycket vi kunnat, vi har flyttat nĂ€stan allt till köer, i databasen lagrar vi bara transaktionsstacken. Och transaktionsstacken Ă€r densamma för alla rader. Med databasen i detta sammanhang: vi separerar den inte i blĂ„ och grön, eftersom bĂ„da versionerna av koden mĂ„ste veta vad som hĂ€nder med transaktionen.
VĂ€nner, jag har ytterligare ett litet pris att sporra er till â en bok. Och jag mĂ„ste ge det till den bĂ€sta frĂ„gan.
Pà : - Hej. Tack för rapporten. HÀr Àr frÄgan. Ni övervakar betalningar, ni övervakar de tjÀnster ni kommunicerar med... Men hur övervakar ni att en person pÄ nÄgot sÀtt hamnat pÄ er betalningssida, gjort en betalning och att projektet krediterat hen med pengar? Det vill sÀga, hur övervakar ni att sÀljaren Àr tillgÀnglig och accepterat ert Äteruppringning?
EG: â För oss Ă€r âhandlarenâ i det hĂ€r fallet exakt samma externa tjĂ€nst som betalningssystemet. Vi övervakar hastigheten pĂ„ âhandlarensâ svar.
Om databaskryptering
Pà : - Hej. Jag har en nÄgot relaterad frÄga. Ni har kÀnsliga uppgifter enligt PCI DSS. Jag undrar hur ni lagrar PAN:er i köer, som ni behöver vidarebefordra till? AnvÀnder ni nÄgon kryptering? Och dÀrav den andra frÄgan: enligt PCI DSS Àr det nödvÀndigt att regelbundet kryptera om databasen vid Àndringar (avskedande av administratörer etc.) - hur hÀnder detta med tillgÀngligheten?

EG: â En utmĂ€rkt frĂ„ga! För det första lagrar vi inte PAN i köer. Vi har i princip inte rĂ€tt att lagra PAN nĂ„gonstans i öppen form, sĂ„ vi anvĂ€nder en speciell tjĂ€nst (vi kallar den "Keydemon") â det hĂ€r Ă€r en tjĂ€nst som bara gör en sak: den accepterar ett meddelande som indata och returnerar ett krypterat meddelande. Och vi lagrar allt med detta krypterade meddelande. Följaktligen Ă€r lĂ€ngden pĂ„ vĂ„r nyckel under en kilobyte, sĂ„ den Ă€r verkligen seriös och pĂ„litlig.PĂ : â Behöver du 2 kilobyte nu?
EG: â Det kĂ€nns som igĂ„r var det 256... Var annars?!
Följaktligen Àr detta det första. Och för det andra, den lösning som finns, den stöder omkrypteringsproceduren - det finns tvÄ par "keks" (nycklar), som ger "deks" som krypterar (nyckel - dessa Àr nycklar, dek - Àr derivat av nycklar som krypterar). Och om proceduren initieras (det hÀnder regelbundet, frÄn 3 mÄnader till ± nÄgra) laddar vi ett nytt par "keks", och vi har omkryptering av data. Vi har separata tjÀnster som river ut all data, krypterar den pÄ ett nytt sÀtt; data har en identifierare för nyckeln som de krypteras med lagrad i nÀrheten. Följaktligen, sÄ snart vi krypterar data med nya nycklar, raderar vi de gamla nycklarna.
Ibland mĂ„ste betalningar göras manuelltâŠ
Pà : - Det vill sÀga, om en Äterbetalning för nÄgon transaktion har kommit, kommer ni att dekryptera den med den gamla nyckeln för tillfÀllet?
EG: - Ja.
Pà : - Sedan en liten frÄga till. NÀr ett fel, fall eller en incident intrÀffar Àr det nödvÀndigt att genomföra transaktionen manuellt. En sÄdan situation uppstÄr.
EG: â Ja, det hĂ€nder.
Pà : - VarifrÄn fÄr du dessa uppgifter? Eller gÄr du manuellt till den hÀr lagringsanlÀggningen sjÀlv?
EG: â Nej, det Ă€r ju klart â vi har ett slags backoffice-system som innehĂ„ller ett grĂ€nssnitt för vĂ„r support. Om vi ââinte vet transaktionens status (till exempel förrĂ€n betalningssystemet har gĂ„tt ut) â vet vi inte det a priori, det vill sĂ€ga att vi tilldelar den slutliga statusen först nĂ€r vi Ă€r helt sĂ€kra. I det hĂ€r fallet ger vi transaktionen en sĂ€rskild status för manuell bearbetning. PĂ„ morgonen nĂ€sta dag, sĂ„ snart supporten fĂ„r information om att den och den transaktionen finns kvar i betalningssystemet, bearbetar de dem manuellt i det hĂ€r grĂ€nssnittet.

PĂ : â Jag har ett par frĂ„gor. En av dem gĂ€ller fortsĂ€ttningen av PCI DSS-zonen: hur tar man ut loggar frĂ„n deras kontur? Den hĂ€r frĂ„gan beror pĂ„ att utvecklaren kunde ha lagt vad som helst i loggarna! Den andra frĂ„gan: hur rullar man ut snabbkorrigeringar? Manuellt i databasen â det Ă€r ett alternativ, men det kan finnas gratis snabbkorrigeringar â hur fungerar det dĂ€r? Och den tredje frĂ„gan Ă€r förmodligen relaterad till RTO, RPO. Er tillgĂ€nglighet var 99,97, nĂ€stan fyra nior, men som jag förstĂ„r det har ni ett andra datacenter, och ett tredje datacenter, och ett femte datacenter⊠Hur hanterar ni deras synkronisering, replikering, allt annat?EG: â LĂ„t oss börja med det första. Den första frĂ„gan handlade om loggar? NĂ€r vi skriver loggar finns det ett lager som maskerar all kĂ€nslig data. Det tittar pĂ„ masken och ytterligare fĂ€lt. Följaktligen kommer vĂ„ra loggar ut med redan maskerad data och en PCI DSS-struktur. Detta Ă€r en av de regelbundna uppgifterna som tilldelas testavdelningen. De Ă€r skyldiga att kontrollera varje uppgift, inklusive de loggar de skriver, och detta Ă€r en av de regelbundna uppgifterna under kodgranskningen, för att kontrollera att utvecklaren inte har skrivit ner nĂ„got. Efterföljande verifiering av detta utförs regelbundet av informationssĂ€kerhetsavdelningen ungefĂ€r en gĂ„ng i veckan: loggar för den senaste dagen tas selektivt, och de körs genom en speciell skanner-analysator frĂ„n testservrarna för att kontrollera allt detta.
AngÄende snabbkorrigeringar. Detta ingÄr i vÄra distributionsregler. Vi har en separat punkt om snabbkorrigeringar. Vi anser att vi driftsÀtter snabbkorrigeringar dygnet runt nÀr vi behöver det. SÄ snart versionen Àr kompilerad, sÄ snart den körs, sÄ snart vi har en artefakt - har vi en jourhavande systemadministratör frÄn supporten, och han driftsÀtter den nÀr det behövs.UngefÀr "fyra nior". Den siffra vi har nu, den uppnÄddes verkligen, och vi strÀvade efter den pÄ ett annat datacenter. Nu har vi ett andra datacenter, och vi börjar routa mellan dem, och frÄgan om replikering mellan datacenter Àr egentligen en icke-trivial frÄga. Vi försökte lösa det dÄ pÄ olika sÀtt: vi försökte anvÀnda samma "Tarantula" - det fungerade inte för oss, jag ska berÀtta det direkt. DÀrför kom vi till den punkt att vi gör en bestÀllning för "sens" manuellt. Faktum Àr att varje applikation i vÄrt asynkrona lÀge för den nödvÀndiga synkroniseringen "Àndras - klar" körs mellan datacenter.
Pà : - Om du har en andra, varför har inte en tredje dykt upp? För Split-brain Àr ingen Àn...
EG: â Och vi har ingen "Split-brain". Eftersom varje applikation körs av en multimaster spelar det ingen roll för oss vilket center förfrĂ„gan kom till. Vi Ă€r beredda pĂ„ att om ett av vĂ„ra datacenter gĂ„r ner (vi rĂ€knar med detta) och byter till det andra datacentret mitt i en anvĂ€ndares förfrĂ„gan, Ă€r vi beredda att förlora den hĂ€r anvĂ€ndaren, visserligen; men dessa kommer att vara vĂ€ldigt fĂ„, absolut fĂ„.
PĂ : â God kvĂ€ll. Tack för rapporten. Du pratade om din felsökare, som kör vissa testtransaktioner i produktion. BerĂ€tta nu om testtransaktioner! Hur djupt gĂ„r den?
EG: - Den gÄr igenom hela komponentens cykel. För komponenten Àr det ingen skillnad mellan en testtransaktion och en livetransaktion. Och ur logikens synvinkel Àr det helt enkelt ett separat projekt i systemet, pÄ vilket endast testtransaktioner körs.
PĂ : - Var klipper du av den? KĂ€rnan skickades...
EG: â Vi Ă€r för âKorâ i det hĂ€r fallet för testtransaktioner... Vi har ett sĂ„dant koncept som routing: âKorâ vet vilket betalningssystem den ska skicka till â vi skickar till ett falskt betalningssystem, som helt enkelt ger en http-retur och det Ă€r allt.
PĂ : â SnĂ€lla, sĂ€g mig, Ă€r din applikation skriven som en enda stor monolit, eller har du delat upp den i nĂ„gra tjĂ€nster eller till och med mikrotjĂ€nster?
EG: â Vi har förstĂ„s ingen monolit, vi har en tjĂ€nsteorienterad applikation. Vi skĂ€mtar om att vi har en tjĂ€nst gjord av monoliter â de Ă€r egentligen ganska stora. Det Ă€r svĂ„rt att kalla dem mikrotjĂ€nster, men det hĂ€r Ă€r tjĂ€nster inom vilka distribuerade maskinarbetare arbetar.
Om tjĂ€nsten pĂ„ servern Ă€r komprometteradâŠ
PĂ : â Sedan har jag nĂ€sta frĂ„ga. Ăven om det vore en monolit, sa du Ă€ndĂ„ att du har mĂ„nga av dessa snabbservrar, alla bearbetar i princip data, och frĂ„gan Ă€r: "Om en av snabbservrarna eller en applikation, nĂ„gon enskild lĂ€nk, komprometteras, har de nĂ„gon form av Ă„tkomstkontroll? Vilka av dem kan göra vad? Vem ska man kontakta, för vilka data?"

EG: â Ja, definitivt. SĂ€kerhetskraven Ă€r ganska allvarliga. För det första har vi öppna dataflöden, och bara de portar genom vilka vi förvĂ€ntar oss trafikflöde. Om en komponent kommunicerar med en databas (sĂ€g med Muskul) via 5-4-3-2, kommer bara 5-4-3-2 att vara öppen för den, och andra portar, andra riktningar för trafikflödet, kommer inte att vara tillgĂ€ngliga. Dessutom mĂ„ste vi förstĂ„ att det i vĂ„r produktion finns cirka 10 olika sĂ€kerhetskonturer. Och Ă€ven om applikationen pĂ„ nĂ„got sĂ€tt komprometterades, Gud förbjude, kommer angriparen inte att kunna komma Ă„t serverhanteringskonsolen, eftersom detta Ă€r en annan nĂ€tverkssĂ€kerhetszon.PĂ : â Och i det hĂ€r sammanhanget Ă€r jag mer intresserad av det faktum att man har vissa kontrakt med tjĂ€nster â vad de kan göra, genom vilka âĂ„tgĂ€rderâ de kan kontakta varandra... Och i ett normalt flöde begĂ€r vissa specifika tjĂ€nster en viss rad, en lista med âĂ„tgĂ€rderâ pĂ„ en annan. De kontaktar inte andra i en normal situation, och de har andra ansvarsomrĂ„den. Om en av dem komprometteras, kommer den att kunna hĂ€mta âĂ„tgĂ€rdernaâ för den tjĂ€nsten?..
EG: â Jag förstĂ„r. Om kommunikation överhuvudtaget var tillĂ„ten i en normal situation med en annan server, sĂ„ ja. Enligt SLA-avtalet övervakar vi inte att man bara fĂ„r de första 3 "Ă„tgĂ€rderna", och 4 "Ă„tgĂ€rder" Ă€r inte tillĂ„tna. Detta Ă€r förmodligen överdrivet för oss, eftersom vi redan i princip har ett 4-nivĂ„s skyddssystem för konturerna. Vi föredrar att skydda oss med konturer, och inte pĂ„ insidans nivĂ„.
Hur Visa, MasterCard och Sberbank fungerar
PĂ : â Jag vill förtydliga punkten kring att byta anvĂ€ndare frĂ„n ett datacenter till ett annat. SĂ„vitt jag vet fungerar Visa och MasterCard med det binĂ€ra synkrona protokollet 8583, det finns blandningar dĂ€r. Och jag ville veta, Ă€r detta en direkt vĂ€xling mellan Visa och MasterCard eller före betalningssystemen, före bearbetningen?
EG: â Detta Ă€r före mixarna. VĂ„ra mixar finns i ett och samma datacenter.
PĂ : â Grovt sett har ni en kopplingspunkt?
EG: - Visa och MasterCard - ja. Helt enkelt för att Visa och MasterCard krÀver ganska stora investeringar i infrastruktur för att ingÄ separata kontrakt för att ta emot ett andra par mixar, till exempel. De Àr reserverade inom ett datacenter, men om, Gud förbjude, vÄrt datacenter dÀr mixarna för anslutning till Visa och MasterCard finns dör, dÄ kommer vÄr anslutning till Visa och MasterCard att försvinna...
PĂ : â Hur kan de reserveras? Jag vet att Visa i princip bara tillĂ„ter att en anslutning upprĂ€tthĂ„lls!
EG: â De levererar utrustningen sjĂ€lva. I vilket fall som helst fick vi utrustning som Ă€r helt sĂ€kerhetskopierad internt.
Pà : - SÄ stativet Àr frÄn deras Connects Orange?..
EG: - Ja.
PĂ : â Och hur Ă€r det med det hĂ€r fallet: om ert datacenter försvinner, hur fortsĂ€tter ni att anvĂ€nda det? Eller upphör trafiken helt enkelt?
EG: â Nej. I det hĂ€r fallet kommer vi helt enkelt att byta trafik till en annan kanal, vilket naturligtvis blir dyrare för oss, dyrare för kunderna. Men trafiken kommer inte att gĂ„ via vĂ„r direkta anslutning till Visa, MasterCard, utan via en villkorad Sberbank (vĂ€ldigt överdrivet).
Jag ber sÄ hemskt mycket om ursÀkt om jag har förolÀmpat Sberbanks anstÀllda. Men enligt vÄr statistik Àr Sberbank den ryska bank som oftast faller. Det gÄr inte en mÄnad utan att nÄgot faller i Sberbank.


NĂ„gra annonser đ
Tack för att du stannar hos oss. Gillar du vĂ„ra artiklar? Vill du se mer intressant innehĂ„ll? Stöd oss ââgenom att lĂ€gga en bestĂ€llning eller rekommendera till vĂ€nner, , en unik analog av ingĂ„ngsservrar, som uppfanns av oss för dig: (tillgĂ€nglig med RAID1 och RAID10, upp till 24 kĂ€rnor och upp till 40 GB DDR4).
Dell R730xd 2 gÄnger billigare i Equinix Tier IV datacenter i Amsterdam? Bara hÀr i NederlÀnderna! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - frÄn $99! LÀs om
KĂ€lla: will.com


























