HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

Ang tanan naghisgot bahin sa mga proseso sa pag-uswag ug pagsulay, pagbansay sa mga kawani, pagdugang sa panukmod, apan kini nga mga proseso dili igo kung ang usa ka minuto nga downtime sa serbisyo nagkantidad ug daghang kantidad sa salapi. Unsa ang buhaton kung maghimo ka mga transaksyon sa pinansyal sa ilawom sa usa ka higpit nga SLA? Giunsa pagdugang ang kasaligan ug pagtugot sa sayup sa imong mga sistema, pagkuha sa pag-uswag ug pagsulay gikan sa equation?

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

Ang sunod nga HighLoad++ nga komperensya ipahigayon sa Abril 6 ug 7, 2020 sa St. Petersburg. Mga detalye ug mga tiket alang sa link. Nobyembre 9, 18:00. HighLoad++ Moscow 2018, Delhi + Kolkata hall. Theses ug pagpasundayag.

Evgeniy Kuzovlev (pagkahuman niini - EC): - Mga higala, kumusta! Ang akong ngalan mao si Kuzovlev Evgeniy. Ako gikan sa EcommPay nga kompanya, usa ka piho nga dibisyon mao ang EcommPay IT, ang IT division sa grupo sa mga kompanya. Ug karon maghisgot kita bahin sa mga downtime - kung giunsa kini paglikay, kung giunsa ang pagminus sa ilang mga sangputanan kung dili kini malikayan. Ang hilisgutan gipahayag ingon sa mosunod: "Unsa ang buhaton kung ang usa ka minuto nga downtime nagkantidad og $100"? Sa pagtan-aw sa unahan, ang among mga numero ikatandi.

Unsa ang gibuhat sa EcommPay IT?

Kinsa man ta? Nganong nagbarog ko dinhi sa imong atubangan? Ngano nga ako adunay katungod sa pagsulti kanimo dinhi? Ug unsa ang atong hisgutan dinhi sa mas detalyado?

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

Ang grupo sa mga kompanya sa EcommPay usa ka internasyonal nga nakakuha. Giproseso namo ang mga bayad sa tibuok kalibutan - sa Russia, Europe, Southeast Asia (All Tibuok Kalibutan). Kami adunay 9 nga mga opisina, 500 nga mga empleyado sa kinatibuk-an, ug gibana-bana nga wala’y gamay sa katunga kanila mga espesyalista sa IT. Ang tanan nga atong gibuhat, ang tanan nga kita makakwarta, gibuhat nato sa atong kaugalingon.

Gisulat namo ang tanan namong mga produkto (ug daghan kami niini - sa among linya sa dagkong mga produkto sa IT kami adunay mga 16 ka lain-laing mga sangkap) sa among kaugalingon; Gisulat nato ang atong kaugalingon, gipalambo nato ang atong kaugalingon. Ug sa pagkakaron nagpahigayon kami mga usa ka milyon nga mga transaksyon sa usa ka adlaw (minilyon tingali ang husto nga paagi sa pagsulti niini). Kami usa ka medyo batan-on nga kompanya - kami mga unom pa lang ka tuig ang edad.

6 ka tuig na ang milabay kini usa ka pagsugod sa dihang ang mga lalaki nag-uban sa negosyo. Nahiusa sila sa usa ka ideya (walay lain gawas sa usa ka ideya), ug kami midagan. Sama sa bisan unsang pagsugod, mas paspas ang among dagan... Para namo, ang katulin mas importante kay sa kalidad.

Sa pila ka punto mihunong kami: nakaamgo kami nga dili na kami mabuhi sa kana nga katulin ug sa kana nga kalidad ug kinahanglan namon nga mag-focus una sa kalidad. Niining higayona, nakahukom kami sa pagsulat og bag-ong plataporma nga sakto, scalable, ug kasaligan. Gisugdan nila ang pagsulat niini nga plataporma (nagsugod sila sa pagpamuhunan, pagpalambo sa kalamboan, pagsulay), apan sa usa ka punto ilang naamgohan nga ang pag-uswag ug pagsulay wala magtugot kanamo sa pagkab-ot sa usa ka bag-ong lebel sa kalidad sa serbisyo.

Naghimo ka usa ka bag-ong produkto, gibutang nimo kini sa produksiyon, apan sa gihapon adunay mahitabo nga sayup sa bisan diin. Ug karon maghisgot kami kung giunsa pagkab-ot ang usa ka bag-ong lebel sa kalidad (kung giunsa namon kini nahimo, bahin sa among kasinatian), pagkuha sa pag-uswag ug pagsulay gikan sa equation; hisgutan namon kung unsa ang magamit sa operasyon - kung unsa ang mahimo sa operasyon sa iyang kaugalingon, kung unsa ang mahimo niini sa pagsulay aron maimpluwensyahan ang kalidad.

Mga downtime. Mga sugo sa operasyon.

Kanunay ang nag-unang bato sa pamag-ang, kung unsa ang atong hisgutan karon mao ang downtime. Usa ka makalilisang nga pulong. Kung kita adunay downtime, ang tanan dili maayo alang kanato. Nagdagan kami aron ipataas kini, ang mga admin nagkupot sa server - Gidili sa Diyos nga dili kini mahulog, ingon sa giingon nila sa kana nga kanta. Mao ni ang atong hisgotan karon.

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

Sa dihang nagsugod kami sa pag-usab sa among mga pamaagi, kami nagporma og 4 ka sugo. Gipresentar nako sila sa mga slide:

Kini nga mga sugo yano ra:

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

  • Pag-ila dayon sa problema.
  • Kuhaa kini nga mas paspas.
  • Tabangi nga masabtan ang hinungdan (sa ulahi, alang sa mga developer).
  • Ug i-standardize ang mga pamaagi.

Gusto nako nga ipunting ang imong atensyon sa punto No. 2. Atong giwagtang ang problema, dili pagsulbad niini. Ang pagdesisyon mao ang ikaduha. Alang kanamo, ang panguna nga butang mao nga ang tiggamit gipanalipdan gikan sa kini nga problema. Molungtad kini sa pipila ka nahilit nga palibot, apan kini nga palibot wala’y bisan unsang kontak niini. Sa tinuud, moagi kami niining upat ka mga grupo sa mga problema (ang uban mas detalyado, ang uban dili kaayo detalye), isulti ko kanimo kung unsa ang among gigamit, unsa ang may kalabutan nga kasinatian nga naa namo sa mga solusyon.

Pag-troubleshoot: Kanus-a kini mahitabo ug unsay buhaton niini?

Apan magsugod kami nga wala’y kahusay, magsugod kami sa punto No. 2 - kung giunsa ang dali nga pagtangtang sa problema? Adunay problema - kinahanglan naton kini ayohon. “Unsa may atong buhaton bahin niini?” - ang panguna nga pangutana. Ug sa dihang nagsugod kami sa paghunahuna kon unsaon pag-ayo ang problema, among gimugna alang sa among kaugalingon ang pipila ka mga kinahanglanon nga kinahanglang sundon sa pag-troubleshoot.

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

Aron maporma kini nga mga kinahanglanon, nakahukom kami nga pangutan-on ang among kaugalingon sa pangutana: "Kanus-a kami adunay mga problema"? Ug ang mga problema, ingon sa nahitabo, mahitabo sa upat ka mga kaso:

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

  • Pagkapakyas sa hardware.
  • Napakyas ang mga serbisyo sa gawas.
  • Pag-usab sa bersyon sa software (sama nga pag-deploy).
  • Mabuto nga load nga pagtubo.

Dili kami maghisgot bahin sa una nga duha. Ang pagkadaot sa hardware mahimong masulbad sa yano: kinahanglan nimo nga doblehon ang tanan. Kung kini mga disk, ang mga disk kinahanglan nga tipunon sa RAID; kung kini usa ka server, ang server kinahanglan nga doblehon; kung ikaw adunay imprastraktura sa network, kinahanglan nimo nga maghatag usa ka ikaduha nga kopya sa imprastraktura sa network, kana, kuhaon nimo kini ug duplicate kini. Ug kung adunay mapakyas, mobalhin ka sa pagreserba sa gahum. Lisud nga isulti ang bisan unsa pa dinhi.

Ang ikaduha mao ang kapakyasan sa mga serbisyo sa gawas. Alang sa kadaghanan, ang sistema dili usa ka problema, apan dili alang kanamo. Tungod kay giproseso namon ang mga pagbayad, kami usa ka aggregator nga nagbarug taliwala sa tiggamit (nga nagsulod sa data sa iyang kard) ug mga bangko, mga sistema sa pagbayad (Visa, MasterCard, Mira, ug uban pa). Ang among mga serbisyo sa gawas (mga sistema sa pagbayad, mga bangko) lagmit nga mapakyas. Dili kami o ikaw (kung aduna kay mga serbisyo) ang makaimpluwensya niini.

Unsa man unya ang buhaton? Adunay duha ka kapilian dinhi. Una, kung mahimo nimo, kinahanglan nimo nga doblehon kini nga serbisyo sa usa ka paagi. Pananglitan, kung mahimo namon, gibalhin namon ang trapiko gikan sa usa ka serbisyo ngadto sa lain: pananglitan, ang mga kard giproseso pinaagi sa Sberbank, ang Sberbank adunay mga problema - gibalhin namon ang trapiko [kondisyon] sa Raiffeisen. Ang ikaduha nga butang nga mahimo namon mao ang pagmatikod sa kapakyasan sa mga serbisyo sa gawas nga dali, ug busa maghisgot kami bahin sa katulin sa pagtubag sa sunod nga bahin sa taho.

Sa tinuud, niining upat, mahimo naton nga espesipikong maimpluwensyahan ang pagbag-o sa mga bersyon sa software - paghimo mga aksyon nga mosangput sa usa ka pag-uswag sa kahimtang sa konteksto sa mga pag-deploy ug sa konteksto sa eksplosibo nga pagtubo sa load. Actually, mao na among gibuhat. Dinhi, pag-usab, usa ka gamay nga nota ...

Niining upat ka mga problema, daghan ang masulbad dayon kung ikaw adunay panganod. Kung naa ka sa Microsoft Azhur, Ozone nga mga panganod, o gigamit ang among mga panganod, gikan sa Yandex o Mail, nan labing menos usa ka malfunction sa hardware ang mahimo nga ilang problema ug ang tanan mahimo’g maayo alang kanimo sa konteksto sa pagkadaot sa hardware.

Kami usa ka gamay nga dili naandan nga kompanya. Dinhi ang tanan naghisgot bahin sa "Kubernets", bahin sa mga panganod - wala kami "Kubernets" o mga panganod. Apan kami adunay mga racks sa hardware sa daghang mga data center, ug napugos kami sa pagpuyo niini nga hardware, napugos kami nga mahimong responsable sa tanan. Busa, maghisgot kita niini nga konteksto. Busa, mahitungod sa mga problema. Ang una nga duha gikuha gikan sa mga bracket.

Pag-usab sa bersyon sa software. Mga base

Ang among mga developers walay access sa produksyon. Ngano man? Kini ra nga kami sertipikado sa PCI DSS, ug ang among mga developer wala’y katungod nga makasulod sa "produkto". Mao na, period. Sa tanan. Busa, ang responsibilidad sa pag-uswag natapos sa tukma sa higayon nga ang pag-uswag nagsumite sa pagtukod alang sa pagpagawas.

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

Ang among ikaduha nga sukaranan nga naa namo, nga nakatabang usab kaayo kanamo, mao ang pagkawala sa talagsaon nga wala’y dokumento nga kahibalo. Manghinaut ko nga mao usab kini alang kanimo. Kay kung dili ingon niini, magproblema ka. Ang mga problema motungha kung kining talagsaon, dili dokumentado nga kahibalo wala sa husto nga oras sa husto nga lugar. Ingnon ta nga adunay usa ka tawo nga nahibal-an kung giunsa ang pag-deploy sa usa ka piho nga sangkap - wala ang tawo didto, nagbakasyon siya o nasakit - kana, naa kay mga problema.

Ug ang ikatulo nga sukaranan diin kita mianhi. Naabot namo kini pinaagi sa kasakit, dugo, mga luha - nakahinapos kami nga bisan unsa sa among mga pagtukod adunay mga sayup, bisan kung kini wala’y sayup. Kami nakahukom niini alang sa among kaugalingon: kung kami mag-deploy og usa ka butang, kung kami mag-roll sa usa ka butang ngadto sa produksiyon, kami adunay usa ka pagtukod nga adunay mga sayup. Nahimo namon ang mga kinahanglanon nga kinahanglan matagbaw sa among sistema.

Mga kinahanglanon alang sa pagbag-o sa bersyon sa software

Adunay tulo ka kinahanglanon:

HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

  • Kinahanglang dali natong ibalik ang deployment.
  • Kinahanglan natong pamenosan ang epekto sa usa ka dili malampuson nga pagdeploy.
  • Ug kinahanglan naton nga dali nga ma-deploy nga managsama.
    Eksakto sa maong han-ay! Ngano man? Tungod kay, una sa tanan, sa diha nga ang pag-deploy sa usa ka bag-ong bersyon, ang katulin dili hinungdanon, apan kini hinungdanon alang kanimo, kung adunay usa ka butang nga sayup, nga dali nga ibalik ug adunay gamay nga epekto. Apan kung ikaw adunay usa ka hugpong sa mga bersyon sa produksiyon, diin kini nahimo nga usa ka sayup (gikan sa asul, wala’y pag-deploy, apan adunay sayup) - ang katulin sa sunud nga pag-deploy hinungdanon kanimo. Unsa ang atong nahimo aron matubag kini nga mga panginahanglan? Naggamit kami sa mosunod nga pamaagi:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Nailhan na kaayo, wala pa gyud namo kini naimbento - kini ang Blue/Green deploy. Unsa ni? Kinahanglan nga adunay usa ka kopya alang sa matag grupo sa mga server diin gi-install ang imong mga aplikasyon. Ang kopya "mainit": wala'y trapiko niini, apan bisan unsang orasa kini nga trapiko mahimong ipadala niini nga kopya. Kini nga kopya naglangkob sa miaging bersyon. Ug sa panahon sa pag-deploy, imong i-roll out ang code ngadto sa dili aktibo nga kopya. Dayon imong ibalhin ang bahin sa trapiko (o tanan) ngadto sa bag-ong bersyon. Busa, aron mabag-o ang dagan sa trapiko gikan sa daan nga bersyon ngadto sa bag-o, kinahanglan nimo nga buhaton ang usa lamang ka aksyon: kinahanglan nimo nga usbon ang balancer sa upstream, usba ang direksyon - gikan sa usa ka upstream ngadto sa lain. Kini sayon ​​​​kaayo ug masulbad ang problema sa dali nga pagbalhin ug dali nga pag-rollback.

    Dinhi ang solusyon sa ikaduhang pangutana mao ang pagminus: mahimo nimong ipadala ang bahin lamang sa imong trapiko sa usa ka bag-ong linya, sa usa ka linya nga adunay bag-ong code (pasagdi kini, pananglitan, 2%). Ug kini nga 2% dili 100%! Kung nawala nimo ang 100% sa imong trapiko tungod sa usa ka dili malampuson nga pag-deploy, makahadlok kana; kung nawala nimo ang 2% sa imong trapiko, dili kana maayo, apan dili kini makahadlok. Dugang pa, ang mga tiggamit lagmit dili gani makamatikod niini, tungod kay sa pipila ka mga kaso (dili sa tanan) ang sama nga tiggamit, pagpindot sa F5, dad-on ngadto sa lain, nagtrabaho nga bersyon.

    Asul/Berde nga deploy. Pagruta

    Bisan pa, dili tanan yano ra nga "Blue/Green deploy"... Ang tanan namong mga sangkap mahimong bahinon sa tulo ka grupo:

    • kini ang frontend (mga panid sa pagbayad nga makita sa among mga kliyente);
    • pagproseso sa kinauyokan;
    • adapter alang sa pagtrabaho sa mga sistema sa pagbayad (mga bangko, MasterCard, Visa...).

    Ug adunay usa ka nuance dinhi - ang nuance anaa sa routing tali sa mga linya. Kung ibalhin lang nimo ang 100% sa trapiko, wala ka niini nga mga problema. Apan kung gusto nimong ibalhin ang 2%, magsugod ka sa pagpangutana: "Unsaon pagbuhat niini?" Ang pinakasimple nga butang diretso sa unahan: mahimo nimong i-set up ang Round Robin sa nginx pinaagi sa random nga pagpili, ug ikaw adunay 2% sa wala, 98% sa tuo. Apan kini dili kanunay nga angay.

    Pananglitan, sa among kaso, ang usa ka tiggamit nakig-uban sa sistema nga adunay labaw sa usa ka hangyo. Normal kini: 2, 3, 4, 5 nga mga hangyo - ang imong mga sistema mahimong parehas. Ug kung kini hinungdanon alang kanimo nga ang tanan nga mga hangyo sa tiggamit moabut sa parehas nga linya diin ang una nga hangyo moabut, o (ikaduha nga punto) ang tanan nga mga hangyo sa tiggamit moabut sa bag-ong linya pagkahuman sa switch (mahimo unta siyang magsugod sa pagtrabaho sa sayo pa sa sistema, sa wala pa ang switch), - nan kini nga random nga pag-apod-apod dili angay alang kanimo. Unya adunay mga mosunod nga mga kapilian:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Ang una nga kapilian, ang pinakasimple, gibase sa sukaranan nga mga parameter sa kliyente (IP Hash). Ikaw adunay IP, ug imong gibahin kini gikan sa tuo ngadto sa wala pinaagi sa IP address. Unya ang ikaduha nga kaso nga akong gihulagway molihok alang kanimo, sa diha nga ang deployment nahitabo, ang user mahimo na magsugod sa pagtrabaho uban sa imong sistema, ug gikan sa panahon sa deployment ang tanan nga mga hangyo moadto sa usa ka bag-o nga linya (sa mao usab nga, ingon).

    Kung sa usa ka hinungdan dili kini angay kanimo ug kinahanglan nimo ipadala ang mga hangyo sa linya kung diin ang una, una nga hangyo sa tiggamit miabot, nan adunay ka duha nga kapilian...
    Unang kapilian: makapalit ka ug bayad nga nginx+. Adunay usa ka mekanismo sa Sticky session, nga, sa una nga hangyo sa tiggamit, nag-assign sa usa ka sesyon sa tiggamit ug gihigot kini sa usa o lain nga upstream. Ang tanan nga nagsunod nga mga hangyo sa tiggamit sulod sa tibuok kinabuhi sa sesyon ipadala sa parehas nga upstream diin ang sesyon gi-post.

    Dili kini angay kanamo tungod kay kami adunay regular nga nginx. Ang pag-ilis sa nginx+ dili kay mahal, pero medyo sakit para namo ug dili kaayo tama. Ang "Sticks Sessions", pananglitan, wala nagtrabaho alang kanamo tungod sa yano nga rason nga ang "Sticks Sessions" wala magtugot sa pag-ruta base sa "Either-or". Didto mahimo nimong ipiho kung unsa ang among gibuhat sa "Sticks Sessions", pananglitan, pinaagi sa IP address o pinaagi sa IP address ug cookies o pinaagi sa postparameter, apan ang "Bisan-o" mas komplikado didto.

    Busa, miabut kami sa ikaupat nga kapilian. Gikuha namon ang nginx sa mga steroid (kini mao ang openresty) - parehas kini nga nginx, nga dugang nga nagsuporta sa paglakip sa katapusan nga mga script. Mahimo nimong isulat ang katapusan nga script, hatagan kini usa ka "bukas nga pahulay", ug kini nga katapusan nga script ipatuman kung moabut ang hangyo sa gumagamit.

    Ug gisulat namon, sa tinuud, ang ingon nga script, nagbutang sa among kaugalingon nga "openresti" ug sa kini nga script gisunud namon ang 6 nga lainlaing mga parameter pinaagi sa pagdugtong nga "O". Depende sa presensya sa usa o lain nga parameter, nahibal-an namon nga ang tiggamit mianhi sa usa ka panid o lain, usa ka linya o lain.

    Asul/Berde nga deploy. Mga bentaha ug mga disbentaha

    Siyempre, posible nga himoon kini nga mas simple (gamita ang parehas nga "Sticky Sessions"), apan kami usab adunay usa ka nuance nga dili lamang ang user ang nakig-uban kanamo sulod sa gambalay sa usa ka pagproseso sa usa ka transaksyon... Apan ang mga sistema sa pagbayad nakig-interact usab kanamo: Human namo maproseso ang transaksyon (pinaagi sa pagpadala og hangyo sa sistema sa pagbayad), makadawat kami og coolback.
    Ug ingnon ta, kung sa sulod sa among sirkito mahimo namon ipasa ang IP address sa tiggamit sa tanan nga mga hangyo ug bahinon ang mga tiggamit base sa IP address, nan dili namon isulti ang parehas nga "Visa": "Dude, kami usa ka retro nga kompanya, ingon kami nga mahimong internasyonal (sa website ug sa Russia)... Palihug ihatag kanamo ang IP address sa user sa usa ka dugang nga field, ang imong protocol gi-standardize”! Klaro nga di sila mosugot.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Busa, kini wala molihok alang kanamo - kami nag-openresty. Tungod niini, sa pag-ruta nakakuha kami usa ka butang nga sama niini:

    Ang Blue/Green Deployment adunay, sumala niana, ang mga bentaha nga akong gihisgutan ug mga disbentaha.

    Duha ka disadvantages:

    • kinahanglan ka maghasol sa pag-ruta;
    • ang ikaduha nga nag-unang disbentaha mao ang gasto.

    Kinahanglan nimo doble ang daghang mga server, kinahanglan nimo doble ang daghang mga kapanguhaan sa pag-opera, kinahanglan nimo nga mogasto kaduha sa daghang paningkamot aron mapadayon ang tibuuk nga zoo.

    Pinaagi sa dalan, taliwala sa mga bentaha adunay usa pa ka butang nga wala nako nahisgutan kaniadto: adunay ka reserba kung adunay pagtaas sa karga. Kung ikaw adunay usa ka eksplosibo nga pag-uswag sa load, ikaw adunay daghang mga tiggamit, unya imong ilakip ang ikaduha nga linya sa 50 hangtod 50 nga pag-apod-apod - ug adunay ka dayon nga x2 nga mga server sa imong cluster hangtod nga masulbad nimo ang problema nga adunay daghang mga server.

    Giunsa paghimo ang dali nga pag-deploy?

    Naghisgot kami kung unsaon pagsulbad ang problema sa pagkunhod ug dali nga pag-rollback, apan ang pangutana nagpabilin: "Unsaon pag-deploy dayon?"

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Kini mubo ug yano dinhi.

    • Kinahanglan nga adunay CD system (Continuous Delivery) - dili ka mabuhi kung wala kini. Kung ikaw adunay usa ka server, mahimo nimo nga i-deploy ang mano-mano. Kami adunay mga usa ug tunga ka libo nga mga server ug usa ug tunga ka libo nga mga gunitanan, siyempre - mahimo kaming magtanom og usa ka departamento sa gidak-on niini nga kwarto aron lang ma-deploy.
    • Ang deployment kinahanglang parallel. Kung ang imong deployment sunud-sunod, nan ang tanan dili maayo. Normal ang usa ka server, mag-deploy ka og usa ug tunga ka libo nga mga server sa tibuok adlaw.
    • Sa makausa pa, alang sa pagpadali, kini lagmit dili na kinahanglan. Atol sa pag-deploy, ang proyekto kasagarang gitukod. Adunay ka usa ka proyekto sa web, adunay usa ka front-end nga bahin (naghimo ka usa ka web pack didto, nag-compile ka npm - usa ka butang nga ingon niana), ug kini nga proseso, sa prinsipyo, mubo nga kinabuhi - 5 minuto, apan kini nga 5 minuto mahimo mahimong kritikal. Mao nga, pananglitan, wala namo buhata kana: gitangtang namo kining 5 minutos, nag-deploy kami og mga artifact.

      Unsa ang usa ka artifact? Ang usa ka artifact usa ka gitigum nga pagtukod diin ang tanan nga mga bahin sa asembliya nahuman na. Gitipigan namon kini nga artifact sa pagtipig sa artifact. Sa usa ka higayon migamit kami og duha ka ingon nga mga storage - kini mao ang Nexus ug karon jFrog Artifactory).Among gigamit sa sinugdanan ang "Nexus" tungod kay nagsugod kami sa pagpraktis niini nga pamaagi sa mga aplikasyon sa java (kini haum kaayo niini). Dayon ilang gibutang ang pipila sa mga aplikasyon nga gisulat sa PHP didto; ug ang "Nexus" dili na angay, ug busa gipili namo ang jFrog Artefactory, nga makahimo sa pag-artifactor sa halos tanan. Miabot pa gani mi sa punto nga niining artifact repository among gitipigan ang among kaugalingong binary packages nga among gikolekta para sa mga server.

    Mabuto nga load nga pagtubo

    Naghisgot kami bahin sa pagbag-o sa bersyon sa software. Ang sunod nga butang nga naa kanato mao ang usa ka eksplosibo nga pagtaas sa karga. Dinhi, tingali gipasabut nako ang eksplosibo nga pagtubo sa karga nga dili husto nga butang ...

    Nagsulat kami usa ka bag-ong sistema - kini nakapunting sa serbisyo, uso, matahum, mga trabahante bisan diin, pila bisan diin, asynchrony bisan diin. Ug sa ingon nga mga sistema, ang datos mahimong modagayday sa lainlaing mga dagan. Alang sa unang transaksyon, mahimong gamiton ang 1st, 3rd, 10th nga trabahante, alang sa ikaduhang transaksyon - ang 2nd, 4th, 5th. Ug karon, ingnon ta, sa buntag ikaw adunay dagan sa datos nga naggamit sa unang tulo ka mga trabahante, ug sa gabii kini nag-usab-usab, ug ang tanan naggamit sa laing tulo ka mga trabahante.

    Ug dinhi kini nahimo nga kinahanglan nimo nga usbon ang mga trabahante, kinahanglan nimo nga usbon ang imong mga serbisyo, apan sa samang higayon mapugngan ang pag-uswag sa kapanguhaan.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Gipasabot namo ang among mga kinahanglanon. Kini nga mga kinahanglanon yano ra: nga adunay pagdiskubre sa Serbisyo, pag-parameter - ang tanan mga sumbanan alang sa pagtukod sa ingon nga mga scalable nga sistema, gawas sa usa ka punto - pagkunhod sa mga kapanguhaan. Giingon namon nga dili kami andam nga mag-amortize sa mga kapanguhaan aron ang mga server magpainit sa hangin. Gikuha namo ang "Consul", gikuha namo ang "Nomad", nga nagdumala sa among mga trabahante.

    Ngano nga kini usa ka problema alang kanato? Moatras ta gamay. Kami karon adunay mga 70 ka sistema sa pagbayad sa among luyo. Sa buntag, ang trapiko moagi sa Sberbank, dayon nahulog ang Sberbank, pananglitan, ug gibalhin namo kini sa laing sistema sa pagbayad. Kami adunay 100 nga mga trabahante sa wala pa ang Sberbank, ug pagkahuman kinahanglan namon nga madugangan ang 100 nga mga trabahante alang sa lain nga sistema sa pagbayad. Ug tilinguhaon nga kining tanan mahitabo nga walay pag-apil sa tawo. Tungod kay kung adunay partisipasyon sa tawo, kinahanglan adunay usa ka inhenyero nga naglingkod didto 24/7, nga kinahanglan ra nga buhaton kini, tungod kay ang ingon nga mga kapakyasan, kung ang 70 nga mga sistema sa imong luyo, mahitabo kanunay.

    Busa, among gitan-aw ang Nomad, nga adunay bukas nga IP, ug gisulat ang among kaugalingon nga butang, Scale-Nomad - ScaleNo, nga naghimo sa gibana-bana nga mga musunud: gibantayan niini ang pagtubo sa pila ug gipakunhod o gidugangan ang gidaghanon sa mga trabahante depende sa dinamika. sa pila. Sa dihang gibuhat namo kini, naghunahuna kami: "Tingali mahimo namong ablihan ang tinubdan niini?" Unya sila mitan-aw kaniya - siya yano sama sa duha ka kopecks.

    Sa pagkakaron wala pa namo kini open sourced, apan kung kalit lang human sa report, human makaamgo nga kinahanglan nimo ang ingon nga butang, kinahanglan nimo kini, ang akong mga kontak anaa sa katapusang slide - palihug pagsulat kanako. Kung adunay labing menos 3-5 ka tawo, among i-sponsor kini.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Giunsa kini paglihok? Atong tan-awon! Pagtan-aw sa unahan: sa wala nga bahin adunay usa ka piraso sa among pag-monitor: kini usa ka linya, sa ibabaw mao ang oras sa pagproseso sa panghitabo, sa tunga ang gidaghanon sa mga transaksyon, sa ilawom ang gidaghanon sa mga trabahante.

    Kung imong tan-awon, adunay glitch sa kini nga litrato. Sa ibabaw nga tsart, usa sa mga tsart nahagsa sa 45 segundos - usa sa mga sistema sa pagbayad nahulog. Diha-diha dayon, ang trapiko gidala sulod sa 2 ka minuto ug ang pila nagsugod sa pagtubo sa laing sistema sa pagbayad, diin walay mga trabahante (wala kami naggamit sa mga kahinguhaan - sa sukwahi, among gilabay ang kapanguhaan sa husto). Dili namo gusto nga magpainit - adunay gamay nga gidaghanon, mga 5-10 nga mga trabahante, apan dili nila makaya.

    Ang katapusang graph nagpakita sa usa ka "hump", nga nagpasabot lamang nga ang "Skaleno" nagdoble niini nga kantidad. Ug unya, sa dihang ang graph mius-os og gamay, gikunhoran niya kini og gamay - ang gidaghanon sa mga trabahante awtomatikong nausab. Ingon niana kung giunsa kini nga butang molihok. Naghisgot kami bahin sa punto numero 2 - "Unsaon kadali nga mawala ang mga hinungdan."

    Pagmonitor. Unsaon pag-ila dayon sa problema?

    Karon ang unang punto mao ang "Unsaon pag-ila dayon sa problema?" Pagmonitor! Kinahanglan natong masabtan dayon ang pipila ka mga butang. Unsang mga butanga ang angay natong masabtan dayon?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Tulo ka butang!

    • Kinahanglan natong masabtan ug masabtan dayon ang pagbuhat sa atong kaugalingong mga kahinguhaan.
    • Kinahanglang dali natong masabtan ang mga kapakyasan ug bantayan ang pasundayag sa mga sistema nga gawas kanato.
    • Ang ikatulo nga punto mao ang pag-ila sa lohikal nga mga sayup. Kini kung ang sistema nagtrabaho alang kanimo, ang tanan normal sumala sa tanan nga mga timailhan, apan adunay sayup.

    Tingali dili ko isulti kanimo ang bisan unsa nga cool dinhi. Ako mahimong Kapitan Obvious. Gipangita namo kung unsa ang naa sa merkado. Naa mi “fun zoo”. Mao kini ang matang sa zoo nga naa nato karon:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Gigamit namo ang Zabbix sa pagmonitor sa hardware, sa pagmonitor sa mga nag-unang indicators sa mga server. Gigamit namo ang Okmeter alang sa mga database. Gigamit namon ang "Grafana" ug "Prometheus" alang sa tanan nga uban pang mga timailhan nga dili mohaum sa una nga duha, ang uban adunay "Grafana" ug "Prometheus", ug ang uban adunay "Grafana" nga adunay "Influx" ug Telegraf.

    Usa ka tuig ang milabay gusto namong gamiton ang New Relic. Cool nga butang, mahimo niini ang tanan. Apan kutob sa mahimo niya ang tanan, mahal kaayo siya. Sa dihang mitubo kami ngadto sa gidaghanon nga 1,5 ka libo nga mga server, usa ka vendor ang mianhi kanamo ug miingon: "Maghimo kita og usa ka kasabutan alang sa sunod tuig." Gitan-aw namon ang presyo ug giingon nga dili, dili namon kana buhaton. Karon gibiyaan namon ang Bag-ong Relic, kami adunay mga 15 nga server nga nahabilin sa ilawom sa pag-monitor sa Bag-ong Relic. Ang presyo nahimo nga hingpit nga ihalas.

    Ug adunay usa ka himan nga among gipatuman sa among kaugalingon - kini ang Debugger. Sa sinugdan gitawag namo kinig “Bagger,” apan nilabay ang usa ka magtutudlo sa English, nikatawa og kusog, ug giilisan kinig “Debagger.” Unsa ni? Kini usa ka himan nga, sa tinuud, sa 15-30 segundos sa matag sangkap, sama sa usa ka "itom nga kahon" sa sistema, nagpadagan sa mga pagsulay sa kinatibuk-ang pasundayag sa sangkap.

    Pananglitan, kung adunay usa ka eksternal nga panid (panid sa pagbayad), ablihan lang niya kini ug tan-awon kung unsa ang hitsura niini. Kung giproseso kini, nagpadala siya usa ka pagsulay nga "transaksyon" ug gisiguro nga kini nga "transaksyon" moabut. Kung kini usa ka koneksyon sa mga sistema sa pagbayad, gisunog namon ang usa ka hangyo sa pagsulay sumala niana, kung mahimo namon, ug tan-awon nga maayo ang tanan kanamo.

    Unsa nga mga indicators ang importante sa pagmonitor?

    Unsa ang panguna natong gibantayan? Unsa nga mga indicators ang importante kanato?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    • Ang oras sa pagtubag / RPS sa mga atubangan usa ka hinungdanon nga timailhan. Nitubag dayon siya nga naay problema nimo.
    • Ang gidaghanon sa mga naprosesong mensahe sa tanang pila.
    • Gidaghanon sa mga trabahante.
    • Panguna nga mga sukatan sa pagkatul-id.

    Ang katapusan nga punto mao ang "negosyo", "negosyo" nga sukatan. Kung gusto nimo nga bantayan ang parehas nga butang, kinahanglan nimo nga ipasabut ang usa o duha nga mga sukatan nga mao ang panguna nga mga timailhan alang kanimo. Ang among metric mao ang throughput (kini ang ratio sa gidaghanon sa malampuson nga mga transaksyon ngadto sa kinatibuk-ang dagan sa transaksyon). Kung adunay usa ka butang nga nagbag-o niini sa usa ka gilay-on nga 5-10-15 minuto, kini nagpasabut nga kita adunay mga problema (kung kini nagbag-o nga radikal).

    Ang hitsura niini alang kanamo usa ka pananglitan sa usa sa among mga tabla:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Sa wala nga bahin adunay 6 nga mga graph, kini sumala sa mga linya - ang gidaghanon sa mga trabahante ug ang gidaghanon sa mga mensahe sa mga pila. Sa tuo nga bahin - RPS, RTS. Sa ubos mao ang parehas nga "negosyo" nga sukatan. Ug sa metric nga "negosyo" makita dayon nato nga adunay nahitabo nga sayup sa duha ka tunga nga mga graph ... Kini usa lamang ka sistema nga nagbarug sa atong luyo nga nahulog.

    Ang ikaduha nga butang nga kinahanglan namon buhaton mao ang pag-monitor sa pagkahulog sa mga sistema sa pagbayad sa gawas. Dinhi among gikuha ang OpenTracing - usa ka mekanismo, sumbanan, paradigm nga nagtugot kanimo sa pagsubay sa mga gipang-apod-apod nga mga sistema; ug kini nausab ug gamay. Ang sumbanan nga OpenTracing paradigm nag-ingon nga naghimo kami usa ka pagsubay alang sa matag indibidwal nga hangyo. Wala namo kini kinahanglana, ug among giputos kini sa usa ka summary, aggregation trace. Naghimo kami usa ka himan nga nagtugot kanamo nga masubay ang katulin sa mga sistema sa among luyo.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Ang graph nagpakita kanamo nga ang usa sa mga sistema sa pagbayad nagsugod sa pagtubag sa 3 segundos - kami adunay mga problema. Dugang pa, kini nga butang molihok kung magsugod ang mga problema, sa usa ka gilay-on nga 20-30 segundos.

    Ug ang ikatulo nga klase sa mga sayup sa pag-monitor nga naglungtad mao ang lohikal nga pag-monitor.

    Sa tinuud, wala ko mahibal-an kung unsa ang iguhit sa kini nga slide, tungod kay dugay na kaming nangita sa merkado alang sa usa ka butang nga angay kanamo. Wala kami'y nakit-an, mao nga kami mismo ang naghimo niini.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Unsay buot ipasabot sa lohikal nga pagmonitor? Aw, hunahunaa: gihimo nimo ang imong kaugalingon nga usa ka sistema (pananglitan, usa ka Tinder clone); gihimo nimo kini, gilunsad kini. Ang malampuson nga manedyer nga si Vasya Pupkin nagbutang niini sa iyang telepono, nakakita sa usa ka babaye didto, nakagusto kaniya ... ug ang susama dili moadto sa babaye - ang sama moadto sa security guard nga si Mikhalych gikan sa samang sentro sa negosyo. Nanaog ang manedyer, ug unya nahibulong: “Nganong nindot kaayong mopahiyom kaniya kining guwardiya nga si Mikhalych?”

    Sa ingon nga mga sitwasyon... Alang kanamo, kini nga sitwasyon medyo lahi, tungod kay (akong gisulat) kini usa ka pagkawala sa reputasyon nga dili direkta nga nagdala sa pagkawala sa pinansyal. Ang atong sitwasyon mao ang sukwahi: kita mahimong mag-antus sa direkta nga pinansyal nga kapildihan - pananglitan, kon kita nagpahigayon sa usa ka transaksyon ingon nga malampuson, apan kini wala molampos (o vice versa). Kinahanglan kong isulat ang akong kaugalingon nga himan nga nagsubay sa gidaghanon sa malampuson nga mga transaksyon sa paglabay sa panahon gamit ang mga timailhan sa negosyo. Wala'y nakit-an nga bisan unsa sa merkado! Mao gyud ni ang ideya nga gusto nakong ipaabot. Wala’y bisan unsa sa merkado aron masulbad kini nga klase nga problema.

    Mahitungod kini kung unsaon pag-ila dayon ang problema.

    Giunsa mahibal-an ang mga hinungdan sa pag-deploy

    Ang ikatulo nga grupo sa mga problema nga atong sulbaron mao ang human nato mailhan ang problema, human nato kini mawagtang, maayo nga masabtan ang rason sa pag-uswag, sa pagsulay, ug pagbuhat og usa ka butang mahitungod niini. Subay niini, kinahanglan natong imbestigahan, kinahanglan natong ipataas ang mga troso.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Kung naghisgot kami bahin sa mga troso (ang panguna nga hinungdan mao ang mga troso), ang kadaghanan sa among mga troso naa sa ELK Stack - hapit tanan parehas. Alang sa uban, mahimo nga wala kini sa ELK, apan kung nagsulat ka og mga log sa gigabytes, unya sa madugay o sa madali moabut ka sa ELK. Gisulat namo kini sa terabytes.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Adunay problema dinhi. Giayo namo kini, gitul-id ang sayup alang sa tiggamit, nagsugod sa pagkalot kung unsa ang naa didto, misaka sa Kibana, gisulod ang transaction id didto ug nakakuha og footcloth nga sama niini (nagpakita og daghan). Ug hingpit nga wala’y klaro sa kini nga panapton. Ngano man? Oo, tungod kay dili klaro kung unsang bahina ang nahisakop sa mamumuo, kung unsang bahina ang nahisakop sa unsang sangkap. Ug nianang higayuna nahibal-an namon nga kinahanglan namon ang pagsubay - parehas nga OpenTracing nga akong gisulti.

    Gihunahuna namon kini usa ka tuig na ang milabay, gipunting ang among atensyon sa merkado, ug adunay duha nga mga himan didto - "Zipkin" ug "Jaeger". Ang "Jager" sa pagkatinuod usa ka ideolohikal nga manununod, usa ka ideolohikal nga manununod sa "Zipkin". Maayo ang tanan sa Zipkin, gawas nga wala kini mahibal-an kung giunsa ang pag-aggregate, wala kini mahibal-an kung giunsa ang paglakip sa mga troso sa pagsubay, pagsubay ra sa oras. Ug gisuportahan kini ni "Jager".

    Gitan-aw namon ang "Jager": mahimo nimo ang mga aplikasyon sa instrumento, mahimo nimong isulat sa Api (ang sumbanan sa Api alang sa PHP niadtong panahona, bisan pa, wala maaprobahan - kini usa ka tuig na ang milabay, apan karon kini naaprobahan na), apan didto hingpit nga walay kliyente. “Okay,” naghunahuna kami, ug misulat sa among kaugalingong kliyente. Unsa may among nakuha? Kini halos sama sa hitsura niini:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Sa Jaeger, ang mga span gihimo para sa matag mensahe. Kana mao, kung ang usa ka tiggamit magbukas sa sistema, iyang makita ang usa o duha ka mga bloke alang sa matag umaabot nga hangyo (1-2-3 - ang gidaghanon sa umaabot nga mga hangyo gikan sa tiggamit, ang gidaghanon sa mga bloke). Aron mas sayon ​​​​alang sa mga tiggamit, gidugang namo ang mga tag sa mga log ug mga pagsubay sa oras. Tungod niini, kung adunay sayup, markahan sa among aplikasyon ang log gamit ang angay nga Error tag. Mahimo nimong i-filter pinaagi sa Error tag ug ang mga span lang nga adunay kini nga block nga adunay sayup ang ipakita. Kini ang hitsura kung atong palapdan ang span:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Sa sulod sa span adunay usa ka hugpong sa mga pagsubay. Sa kini nga kaso, kini ang tulo nga mga pagsulay sa pagsulay, ug ang ikatulo nga pagsubay nagsulti kanamo nga adunay usa ka sayup nga nahitabo. Sa samang higayon, dinhi atong makita ang usa ka pagsubay sa panahon: kita adunay usa ka sukdanan sa panahon sa ibabaw, ug atong makita sa unsang agwat sa panahon kini o kana nga talaan natala.

    Busa, maayo ang kahimtang alang kanamo. Gisulat namo ang among kaugalingong extension ug among gi-open sourced kini. Kung gusto nimo nga magtrabaho uban ang pagsubay, kung gusto nimo magtrabaho kauban ang "Jager" sa PHP, naa ang among extension, welcome nga gamiton, ingon sa ilang giingon:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Kami adunay kini nga extension - kini usa ka kliyente alang sa OpenTracing Api, gihimo kini ingon php-extention, nga mao, kinahanglan nimo nga i-assemble kini ug i-install kini sa sistema. Usa ka tuig ang milabay walay kalainan. Karon adunay ubang mga kliyente nga sama sa mga sangkap. Anaa kini kanimo: mahimo nimo nga i-pump out ang mga sangkap gamit ang usa ka kompositor, o gamiton nimo ang extension alang kanimo.

    Mga sumbanan sa korporasyon

    Naghisgot kami bahin sa tulo ka mga sugo. Ang ikaupat nga sugo mao ang pag-standardize sa mga pamaagi. Mahitungod sa unsa kini? Kini mahitungod niini:

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Ngano nga ang pulong "corporate" dinhi? Dili tungod kay dako ta o burukratikong kompanya, no! Gusto nakong gamiton ang pulong nga "corporate" dinhi sa konteksto nga ang matag kompanya, matag produkto kinahanglan adunay kaugalingon nga mga sumbanan, lakip kanimo. Unsa ang atong mga sumbanan?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    • Adunay kami mga regulasyon sa pag-deploy. Wala mi maglihok bisan asa nga wala siya, dili namo mahimo. Nag-deploy kami mga 60 ka beses sa usa ka semana, sa ato pa, nag-deploy kami hapit kanunay. Sa samang higayon, aduna kitay, pananglitan, sa mga regulasyon sa deployment usa ka bawal sa deployment sa Biyernes - sa prinsipyo, wala kita mag-deploy.
    • Nagkinahanglan kami og dokumentasyon. Wala’y bisan usa ka bag-ong sangkap nga makuha sa produksiyon kung wala’y dokumentasyon alang niini, bisan kung kini natawo sa ilawom sa panulat sa among mga espesyalista sa RnD. Nagkinahanglan kami gikan kanila sa mga instruksyon sa pag-deploy, usa ka mapa sa pagmonitor ug usa ka dili maayo nga paghulagway (maayo, ingon nga masulat sa mga programmer) kung giunsa kini nga sangkap molihok, kung giunsa kini pag-troubleshoot.
    • Dili nato sulbaron ang hinungdan sa problema, kondili ang problema - ang akong nasulti na. Importante alang kanato ang pagpanalipod sa tiggamit gikan sa mga problema.
    • Naa mi mga clearance. Pananglitan, wala namo isipa kini nga downtime kung nawala ang 2% sa trapiko sulod sa duha ka minuto. Kini sa batakan wala maapil sa among estadistika. Kung labaw pa sa porsyento nga termino o temporaryo, nag-ihap na kita.
    • Ug kanunay kaming nagsulat og mga postmortem. Bisan unsa ang mahitabo kanato, bisan unsang sitwasyon diin ang usa ka tawo naggawi abnormal sa produksyon makita sa post-mortem. Ang postmortem usa ka dokumento diin imong isulat kung unsa ang nahitabo kanimo, usa ka detalyado nga oras, kung unsa ang imong gihimo aron matul-id kini ug (kini usa ka mandatory block!) kung unsa ang imong buhaton aron mapugngan kini nga mahitabo sa umaabot. Kini mao ang mandatory ug gikinahanglan alang sa sunod nga pagtuki.

    Unsa ang gikonsiderar nga downtime?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Unsa ang misangpot niining tanan?

    Kini misangpot sa kamatuoran nga (kami adunay pipila ka mga problema sa kalig-on, kini dili haum sa bisan hain sa mga kliyente o kanato) sa miaging 6 ka bulan ang atong kalig-on indicator mao ang 99,97. Makaingon ta nga dili kaayo kini. Oo, aduna kitay paninguhaon. Niini nga timailhan, mga katunga mao ang kalig-on, ingon nga kini, dili sa atoa, kondili sa among web application firewall, nga nagbarog sa among atubangan ug gigamit isip usa ka serbisyo, apan ang mga kliyente wala magtagad niini.

    Nakakat-on kami sa pagkatulog sa gabii. Sa kataposan! Unom ka bulan ang milabay dili kami mahimo. Ug sa kini nga nota uban ang mga resulta, gusto kong maghimo usa ka nota. Kagabii adunay usa ka nindot nga taho mahitungod sa sistema sa pagkontrol alang sa usa ka nukleyar nga reaktor. Kung ang mga tawo nga nagsulat niini nga sistema makadungog kanako, palihug kalimti ang akong gisulti bahin sa "2% dili downtime." Para nimo, ang 2% kay downtime, bisag duha ka minuto!

    Mao ra na! Imong mga pangutana.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Mahitungod sa mga balanse ug paglalin sa database

    Pangutana gikan sa mamiminaw (pagkahuman niini – B): – Maayong gabii. Salamat kaayo sa ingon nga admin nga report! Usa ka mubo nga pangutana bahin sa imong mga balanse. Gihisgutan nimo nga ikaw adunay WAF, nga mao, sa akong nasabtan, naggamit ka usa ka matang sa external balancer...

    EK: – Dili, gigamit namo ang among mga serbisyo isip balanse. Sa kini nga kaso, ang WAF usa ra ka himan sa pagpanalipod sa DDoS alang kanamo.

    SA: – Makasulti ka ba og pipila ka mga pulong mahitungod sa mga balanse?

    EK: – Sama sa ako nang giingon, kini usa ka grupo sa mga server sa openresty. Naa na miy 5 ka reserba nga grupo nga eksklusibong motubag... kana mao, usa ka server nga ekslusibong openresty, nagproxy ra kini sa trapiko. Tungod niini, aron masabtan kung unsa kadaghan ang among gihuptan: kami karon adunay usa ka regular nga dagan sa trapiko nga pila ka gatos ka megabit. Gisagubang nila, maayo ang ilang gibati, wala gani nila gipugos ang ilang kaugalingon.

    SA: - Usa usab ka yano nga pangutana. Ania ang Blue/Green deployment. Unsa ang imong buhaton, pananglitan, sa mga paglalin sa database?

    EK: - Maayong pangutana! Tan-awa, sa Blue/Green deployment aduna kitay bulag nga mga pila para sa matag linya. Sa ato pa, kung maghisgot kita bahin sa mga pila sa panghitabo nga gipasa gikan sa trabahante ngadto sa trabahante, adunay lahi nga pila alang sa asul nga linya ug alang sa berde nga linya. Kung naghisgut kami bahin sa database mismo, nan tinuyo namon nga gipakunhod kini kutob sa among mahimo, gibalhin ang tanan sa mga pila; sa database nagtipig lamang kami usa ka stack sa mga transaksyon. Ug ang among stack sa transaksyon parehas sa tanan nga linya. Uban sa database niini nga konteksto: wala namo kini gibahin sa asul ug berde, tungod kay ang duha ka bersyon sa code kinahanglan mahibal-an kung unsa ang nahitabo sa transaksyon.

    Mga higala, naa sab koy gamay nga premyo nga dasigon ka - usa ka libro. Ug ako kinahanglan nga hatagan kini alang sa labing kaayo nga pangutana.

    SA: - Hello. Salamat sa report. Ang pangutana mao kini. Gibantayan nimo ang mga pagbayad, imong gimonitor ang mga serbisyo nga imong gipakigsultihan... Apan giunsa nimo pag-monitor aron ang usa ka tawo sa usa ka paagi moabut sa imong panid sa pagbayad, nagbayad, ug gi-kredito siya sa proyekto sa salapi? Kana mao, giunsa nimo pag-monitor nga ang marchant anaa ug gidawat ang imong callback?

    EK: - Ang "Merchant" alang kanamo sa kini nga kaso parehas nga serbisyo sa gawas sama sa sistema sa pagbayad. Among gimonitor ang katulin sa pagtubag sa negosyante.

    Mahitungod sa pag-encrypt sa database

    SA: - Hello. Naa koy gamay nga related nga pangutana. Adunay ka sensitibo nga datos sa PCI DSS. Gusto nako mahibal-an kung giunsa nimo pagtipig ang mga PAN sa mga pila nga kinahanglan nimo ibalhin? Gigamit ba nimo ang bisan unsang pag-encrypt? Ug kini modala ngadto sa ikaduha nga pangutana: sumala sa PCI DSS, gikinahanglan nga matag karon ug unya re-encrypt ang database sa kaso sa mga kausaban (dismissal sa mga administrador, ug uban pa) - unsa ang mahitabo sa accessibility niini nga kaso?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    EK: - Nindot nga pangutana! Una, wala kami magtipig sa mga PAN sa pila. Wala kami katungod sa pagtipig sa PAN bisan asa sa tin-aw nga porma, sa prinsipyo, mao nga naggamit kami usa ka espesyal nga serbisyo (gitawag namon kini nga "Kademon") - kini usa ka serbisyo nga usa ra ang nahimo: nakadawat kini usa ka mensahe ingon input ug gipadala gikan sa usa ka naka-encrypt nga mensahe. Ug among gitipigan ang tanan niining naka-encrypt nga mensahe. Tungod niini, ang among yawe nga gitas-on ubos sa usa ka kilobyte, aron kini seryoso ug kasaligan.

    SA: – Kinahanglan ba nimo ang 2 kilobytes karon?

    EK: – Murag gahapon 256... Aw, asa pa?!

    Subay niini, kini ang una. Ug ikaduha, ang solusyon nga naglungtad, kini nagsuporta sa re-encryption nga pamaagi - adunay duha ka parisan sa "keks" (mga yawe), nga naghatag sa "deck" nga encrypt (key mao ang mga yawe, dek ang mga derivatives sa mga yawe nga encrypted) . Ug kung ang pamaagi gisugdan (kini mahitabo kanunay, gikan sa 3 ka bulan ngadto sa ± pipila), nag-download kami og bag-ong parisan sa "mga cake", ug among gi-encrypt ang datos. Kami adunay bulag nga mga serbisyo nga nag-agaw sa tanan nga datos ug nag-encrypt niini sa bag-ong paagi; Ang datos gitipigan sunod sa identifier sa yawe diin kini gi-encrypt. Tungod niini, sa diha nga among gi-encrypt ang data gamit ang bag-ong mga yawe, among gitangtang ang daan nga yawe.

    Usahay ang mga pagbayad kinahanglan nga himuon nga mano-mano ...

    SA: - Kana mao, kung ang usa ka refund moabut alang sa usa ka operasyon, imo pa ba kining i-decrypt gamit ang daan nga yawe?

    EK: - Oo.

    SA: – Unya usa pa ka gamay nga pangutana. Kung adunay usa ka matang sa kapakyasan, pagkahulog, o insidente nga mahitabo, gikinahanglan nga iduso ang transaksyon sa mano-mano. Adunay ingon nga kahimtang.

    EK: - Oo, usahay.

    SA: – Diin nimo makuha kini nga datos? O moadto ka ba sa kini nga pasilidad sa pagtipig sa imong kaugalingon?

    EK: - Dili, maayo, siyempre, kami adunay usa ka matang sa back-office nga sistema nga adunay usa ka interface alang sa among suporta. Kung wala kami nahibal-an kung unsa ang kahimtang sa transaksyon (pananglitan, hangtod nga ang sistema sa pagbayad mitubag nga adunay usa ka timeout), wala kami nahibal-an nga priori, nga mao, among gi-assign ang katapusan nga kahimtang nga adunay bug-os nga pagsalig. Sa kini nga kaso, among gi-assign ang transaksyon sa usa ka espesyal nga kahimtang alang sa manual nga pagproseso. Sa buntag, sa sunod nga adlaw, sa diha nga ang suporta makadawat og impormasyon nga ang ingon ug ang maong mga transaksyon magpabilin sa sistema sa pagbayad, sila mano-mano nga nagproseso niini niini nga interface.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    SA: – Naa koy duha ka pangutana. Usa niini mao ang pagpadayon sa PCI DSS zone: giunsa nimo pag-log ang ilang circuit? Kini nga pangutana tungod kay ang developer mahimo nga magbutang bisan unsa sa mga troso! Ikaduha nga pangutana: giunsa nimo pagpalupad ang mga hotfix? Ang mga pagdumala sa database usa ka kapilian, apan mahimo’g adunay libre nga mga pag-ayo sa init - unsa ang pamaagi didto? Ug ang ikatulo nga pangutana lagmit may kalabotan sa RTO, RPO. Ang imong pagkaanaa kay 99,97, hapit upat ka nuwebe, apan sa akong nasabtan, aduna kay ikaduhang data center, ikatulo nga data center, ug ikalima nga data center... Giunsa nimo kini pag-synchronize, pagkopya niini, ug uban pa?

    EK: - Magsugod ta sa una. Ang una ba nga pangutana bahin sa mga troso? Kung nagsulat kami mga troso, kami adunay usa ka layer nga nagtago sa tanan nga sensitibo nga datos. Gitan-aw niya ang maskara ug ang dugang nga mga uma. Tungod niini, ang among mga troso migawas nga adunay nakamaskara nga datos ug usa ka sirkito sa PCI DSS. Usa kini sa mga regular nga buluhaton nga gihatag sa departamento sa pagsulay. Kinahanglan nga susihon nila ang matag buluhaton, lakip ang mga troso nga ilang gisulat, ug kini usa sa mga regular nga buluhaton sa panahon sa mga pagsusi sa code, aron makontrol nga wala isulat sa developer ang usa ka butang. Ang sunud-sunod nga mga pagsusi niini kanunay nga gihimo sa departamento sa seguridad sa impormasyon mga kausa sa usa ka semana: ang mga troso alang sa katapusang adlaw gipili nga gikuha ug gipadagan kini pinaagi sa usa ka espesyal nga scanner-analyzer gikan sa mga server sa pagsulay aron masusi ang tanan.
    Mahitungod sa mga hot-fix. Nalakip kini sa among mga regulasyon sa pag-deploy. Kami adunay lahi nga clause bahin sa mga hotfix. Kami nagtuo nga nag-deploy kami og mga hotfix sa tibuok orasan kung gikinahanglan namo kini. Sa diha nga ang bersyon gitigum, sa diha nga kini midagan, sa diha nga kita adunay usa ka artifact, kita adunay usa ka sistema administrator sa katungdanan sa usa ka tawag gikan sa suporta, ug siya deploy kini sa higayon nga kini gikinahanglan.

    Mga "upat ka siyam". Ang numero nga naa namo karon tinuod nga nakab-ot, ug among gipaningkamotan kini sa laing sentro sa datos. Karon kami adunay ikaduha nga sentro sa datos, ug nagsugod kami sa ruta sa taliwala nila, ug ang isyu sa pagkopya sa cross-data center sa tinuud usa ka dili hinungdanon nga pangutana. Gisulayan namon nga sulbaron kini sa usa ka higayon gamit ang lainlaing mga paagi: gisulayan namon nga gamiton ang parehas nga "Tarantula" - wala kini molihok alang kanamo, isulti ko kanimo dayon. Mao nga gitapos namon ang pag-order sa "sens" nga mano-mano. Sa tinuud, ang matag aplikasyon sa among sistema nagpadagan sa kinahanglan nga "pagbag-o - nahimo" nga pag-synchronize tali sa mga sentro sa datos nga asynchronously.

    SA: - Kung nakuha nimo ang ikaduha, nganong wala nimo makuha ang ikatulo? Kay wala pa may split-brain...

    EK: – Apan wala mi Split Brain. Tungod sa kamatuoran nga ang matag aplikasyon gimaneho sa usa ka multimaster, dili igsapayan kanamo kung asa nga sentro ang gihangyo. Andam kami sa kamatuoran nga kung ang usa sa among mga data center mapakyas (kami nagsalig niini) ug sa tunga-tunga sa usa ka user request switch ngadto sa ikaduha nga data center, kami andam nga mawala kini nga user, sa pagkatinuod; apan kini mahimong mga yunit, hingpit nga mga yunit.

    SA: - Maayong gabii. Salamat sa report. Naghisgot ka bahin sa imong debugger, nga nagpadagan sa pipila nga mga transaksyon sa pagsulay sa produksiyon. Apan sultihi kami bahin sa pagsulay nga mga transaksyon! Unsa ka lawom kini?

    EK: – Kini moagi sa bug-os nga cycle sa tibuok component. Alang sa usa ka sangkap, wala’y kalainan tali sa usa ka transaksyon sa pagsulay ug usa ka transaksyon sa produksiyon. Apan gikan sa usa ka lohikal nga punto sa panglantaw, kini usa lamang ka bulag nga proyekto sa sistema, diin ang mga transaksyon sa pagsulay lamang ang gipadagan.

    SA: - Asa nimo kini giputol? Dinhi gipadala ni Core...

    EK: – Kami anaa sa luyo sa “Kor” niining kasoha alang sa pagsulay nga mga transaksyon... Kami adunay usa ka butang sama sa routing: “Kor” nahibalo kon hain nga sistema sa pagbayad ipadala sa - kita ipadala ngadto sa usa ka peke nga sistema sa pagbayad, nga naghatag lamang sa usa ka http signal ug kana lang.

    SA: - Sultihi ako, palihug, ang imong aplikasyon gisulat sa usa ka dako nga monolith, o giputol ba nimo kini sa pipila ka mga serbisyo o bisan mga microservice?

    EK: - Wala kami usa ka monolith, siyempre, kami adunay usa ka aplikasyon nga nakabase sa serbisyo. Kami nangomedya nga ang among serbisyo gihimo sa mga monolith - kini dako kaayo. Lisud tawgon kini nga mga microservice, apan kini ang mga serbisyo diin ang mga trabahante sa gipang-apod-apod nga mga makina naglihok.

    Kung ang serbisyo sa server nakompromiso...

    SA: – Unya naa koy sunod nga pangutana. Bisan kung kini usa ka monolith, giingon gihapon nimo nga daghan ka sa mga instant server, silang tanan nagproseso sa datos, ug ang pangutana mao: "Kung adunay pagkompromiso sa usa sa mga instant server o aplikasyon, bisan unsang indibidwal nga link. , aduna ba silay usa ka matang sa kontrol sa pag-access? Kinsa kanila ang makahimo sa unsa? Kinsa ang akong kontakon alang sa unsang kasayuran?

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    EK: - Oo, sigurado. Ang mga kinahanglanon sa seguridad seryoso kaayo. Una, kami adunay bukas nga mga paglihok sa datos, ug ang mga pantalan mao lamang ang among gipaabut nga abante nga paglihok sa trapiko. Kung ang usa ka component makigkomunikar sa database (ingon, uban sa Muskul) pinaagi sa 5-4-3-2, 5-4-3-2 lamang ang bukas niini, ug ang ubang mga pantalan ug uban pang direksyon sa trapiko dili magamit. Dugang pa, kinahanglan nimong masabtan nga sa among produksiyon adunay mga 10 ka lainlaing mga loop sa seguridad. Ug bisan kung ang aplikasyon sa usa ka paagi nakompromiso, ang Dios nagdili, ang tig-atake dili maka-access sa server management console, tungod kay kini usa ka lahi nga network security zone.

    SA: – Ug sa niini nga konteksto, unsa ang mas makapaikag kanako mao nga ikaw adunay pipila ka mga kontrata uban sa mga serbisyo - unsa ang ilang mahimo, pinaagi sa unsa nga "mga aksyon" sila makontak sa usag usa... Ug sa usa ka normal nga dagan, ang pipila ka piho nga mga serbisyo naghangyo sa pipila row, usa ka lista sa "mga aksyon" sa pikas. Morag dili sila modangop sa uban sa usa ka normal nga kahimtang, ug sila adunay ubang mga bahin sa responsibilidad. Kung ang usa kanila makompromiso, makabalda ba kini sa "mga aksyon" sa maong serbisyo?..

    EK: - Nakasabot ko. Kung sa usa ka normal nga sitwasyon sa lain nga komunikasyon sa server gitugotan sa tanan, nan oo. Sumala sa kontrata sa SLA, wala kami nag-monitor nga gitugotan ka lamang sa una nga 3 nga "mga aksyon", ug dili ka gitugotan sa 4 nga "mga aksyon". Lagmit kini kadaghanon alang kanato, tungod kay aduna na kitay 4-level nga sistema sa pagpanalipod, sa prinsipyo, alang sa mga sirkito. Gipalabi namon nga panalipdan ang among kaugalingon sa mga contour, kaysa sa lebel sa sulod.

    Giunsa pagtrabaho ang Visa, MasterCard ug Sberbank

    SA: – Gusto nakong ipatin-aw ang usa ka punto mahitungod sa pagbalhin sa usa ka user gikan sa usa ka data center ngadto sa lain. Sa akong nahibal-an, ang Visa ug MasterCard naglihok gamit ang 8583 binary synchronous protocol, ug adunay mga pagsagol didto. Ug gusto nako mahibal-an, karon gipasabut namon ang pagbalhin - direkta ba kini nga "Visa" ug "MasterCard" o sa wala pa ang mga sistema sa pagbayad, sa wala pa iproseso?

    EK: - Kini sa wala pa ang mga pagsagol. Ang among mga pagsagol nahimutang sa parehas nga sentro sa datos.

    SA: - Sa kasagaran nga pagsulti, aduna ka bay usa ka punto sa koneksyon?

    EK: – “Visa” ug “MasterCard” - oo. Tungod lang kay ang Visa ug MasterCard nanginahanglan ug seryoso nga pagpamuhunan sa imprastraktura aron mahuman ang bulag nga mga kontrata aron makakuha usa ka ikaduha nga pares sa mga pagsagol, pananglitan. Gireserba sila sulod sa usa ka data center, apan kung, idili sa Dios, ang among data center, diin adunay mga pagsagol sa pagkonektar sa Visa ug MasterCard, mamatay, nan kami adunay koneksyon sa Visa ug MasterCard nga nawala...

    SA: – Sa unsang paagi sila mapareserba? Nahibal-an ko nga ang Visa nagtugot lamang sa usa ka koneksyon sa prinsipyo!

    EK: – Sila mismo ang nagsuplay sa kagamitan. Sa bisan unsa nga kaso, nakadawat kami og mga ekipo nga hingpit nga sobra sa sulod.

    SA: - Busa ang baruganan gikan sa ilang Connects Orange?..

    EK: - Oo.

    SA: - Apan komosta kini nga kaso: kung ang imong data center mawala, unsaon nimo pagpadayon sa paggamit niini? O mohunong lang ang trapiko?

    EK: - Dili. Sa kini nga kaso, ibalhin ra namon ang trapiko sa lain nga channel, nga, natural, mas mahal alang kanamo ug labi ka mahal alang sa among mga kliyente. Apan ang trapiko dili moagi sa among direktang koneksyon sa Visa, MasterCard, apan pinaagi sa conditional Sberbank (sobra kaayo).

    Nangayo kog pasaylo kung nasakitan ko ang mga empleyado sa Sberbank. Apan sumala sa among estadistika, taliwala sa mga bangko sa Russia, ang Sberbank kanunay nga nahulog. Wala’y usa ka bulan nga wala’y nahulog sa Sberbank.

    HighLoad++, Evgeniy Kuzovlev (EcommPay IT): unsay buhaton kung ang usa ka minuto nga downtime nagkantidad ug $100000

    Pipila ka mga ad 🙂

    Salamat sa pagpabilin kanamo. Ganahan ka ba sa among mga artikulo? Gusto nga makakita og mas makapaikag nga sulod? Suportahi kami pinaagi sa pag-order o pagrekomenda sa mga higala, cloud VPS alang sa mga developers gikan sa $4.99, usa ka talagsaon nga analogue sa mga entry-level server, nga giimbento namo alang kanimo: Ang tibuok kamatuoran bahin sa VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps gikan sa $19 o unsaon pagpaambit sa usa ka server? (anaa sa RAID1 ug RAID10, hangtod sa 24 ka mga core ug hangtod sa 40GB DDR4).

    Dell R730xd 2 ka beses nga mas barato sa Equinix Tier IV data center sa Amsterdam? Dinhi lang 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV gikan sa $199 sa Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - gikan sa $99! Basaha ang mahitungod sa Unsaon pagtukod sa infrastructure corp. klase sa paggamit sa Dell R730xd E5-2650 v4 server nga nagkantidad ug 9000 euros sa usa ka sentimos?

Source: www.habr.com

Idugang sa usa ka comment