KanÄrija ir maza putna suga, kas nepÄrtraukti dzied. Å ie putni ir jutÄ«gi pret metÄnu un ogļmonoksÄ«du. Pat no mazas gÄzu koncentrÄcijas gaisÄ tie zaudÄ samaÅu vai mirst. Zelta meklÄtÄji un kalnraÄi ÅÄma kanÄrijus lÄ«dzi uz ieguvi: kamÄr kanÄriji dzied, var strÄdÄt, ja tie apklust ā tÄtad pazemÄ ir gÄze un jÄiznÄk ÄrÄ. KalnraÄi upurÄja mazo putniÅu, lai izkļūtu no raktuvÄm dzÄ«vi.

Å Äda prakse ir atradusi pielietojumu arÄ« IT. PiemÄram, standarta uzdevumÄ izvietot jaunÄ versijÄ servisu vai lietotni ražoÅ”anÄ ar iepriekÅ”Äju testÄÅ”anu. Testa vide var bÅ«t pÄrÄk dÄrga, automatizÄtie testi neaptver visu, ko vÄlÄtos, bet netestÄt un upurÄt kvalitÄti ir riskanti. TieÅ”i Å”ÄdÄs situÄcijÄs noder KanÄrija izvietojums, kad nedaudz Ä«stÄ ražoÅ”anas kustÄ«bas tiek virzÄ«ta uz jauno versiju. Pieeja palÄ«dz droÅ”i pÄrbaudÄ«t jauno versiju ražoÅ”anÄ, upurÄjot maz, lai gÅ«tu lielu mÄrÄ·i. SÄ«kÄk, kÄ darbojas pieeja, kÄda ir tÄs izmantoÅ”ana un kÄ to Ä«stenot, pastÄstÄ«s Andrej Markelov (), ļaujot izprast tÄs Ä«stenojumu uzÅÄmumÄ Infobip.
Andrej Markelov ā vadoÅ”ais inženierprogrammatÅ«rÄ Infobip, jau 11 gadus nodarbojas ar lietotÅu izstrÄdi Java jomÄ finansÄs un telekomunikÄcijÄs. IzstrÄdÄ Open Source produktus, aktÄ«vi piedalÄs Atlassian kopienÄ un raksta paplaÅ”inÄjumus Atlassian produktiem. Prometheus, Docker un Redis evaÅÄ£Älists.

Par uzÅÄmumu Infobip
Tas ir globÄls telekomunikÄciju platforma, kas ļauj bankÄm, mazumtirdzniecÄ«bai, interneta veikaliem un transporta uzÅÄmumiem nosÅ«tÄ«t ziÅojumus saviem klientiem, izmantojot SMS, push, e-pastus un balss ziÅojumus. Å ÄdÄ biznesÄ svarÄ«ga ir stabilitÄte un uzticamÄ«ba, lai klienti savlaicÄ«gi saÅemtu ziÅojumus.
Infobip IT infrastruktūra skaitļos:
- 15 datu centru visÄ pasaulÄ;
- 500 unikÄlu pakalpojumu ekspluatÄcijÄ;
- 2500 pakalpojumu instance, kas ir daudz vairÄk nekÄ komandu;
- 4,5 TByte mÄneÅ”a datu plÅ«sma;
- 4,5 miljardi tÄlruÅu numuru;
Bizness aug, un ar to palielinÄs izlaidumu skaits. MÄs veicam ap 60 izlaidumu dienÄ, jo klienti vÄlas vairÄk iespÄju un jaudu. Bet tas ir grÅ«ti ā pakalpojumu ir daudz, bet komandu maz. JÄstrÄdÄ Ätri, rakstot kodu, kam jÄdarbojas ražoÅ”anÄ bez kļūdÄm.
Izlaidumi
Tipisks mÅ«su izlaidums norisinÄs Å”Ädi. PiemÄram, ir pakalpojumi A, B, C, D un E, katru no tiem izstrÄdÄ atseviŔķa komanda.

KÄdÄ brÄ«dÄ« pakalpojuma A komanda nolemj izvietot jaunu versiju, bet pakalpojumu B, C, D un E komandas par to nezina. Ir divi iespÄjamie veidi, kÄ rÄ«kosies pakalpojuma A komanda.
Veiks inkrementÄlo izlaidumu: vispirms nomainÄ«s vienu versiju, pÄc tam otro.

Bet ir otra iespÄja: komanda atradÄ«s papildu jaudas un iekÄrtas, izvietos jauno versiju, pÄc tam pÄrslÄgs marÅ”rutÄtÄju, un versija sÄks darboties ražoÅ”anÄ.

JebkurÄ gadÄ«jumÄ pÄc izvietoÅ”anas gandrÄ«z vienmÄr raduÅ”Äs problÄmas, pat ja versija ir pÄrbaudÄ«ta. Var testÄt manuÄli, var automatizÄti, var arÄ« netestÄt ā problÄmas radÄ«sies jebkurÄ gadÄ«jumÄ. VisvienkÄrÅ”Äkais un pareizÄkais veids, kÄ tÄs atrisinÄt, ir atgriezties pie strÄdÄjoÅ”Äs versijas. Tikai pÄc tam varam izprast zaudÄjumus, cÄloÅus un labot tos.
TÄtad, ko mÄs vÄlamies?
Mums nav nepiecieÅ”amas problÄmas. Ja klienti tÄs atklÄs ÄtrÄk par mums, tas ietekmÄs mÅ«su reputÄciju. TÄdÄļ mums jÄdara problÄmu atraÅ”ana ÄtrÄk nekÄ klienti.. StrÄdÄjot uz priekÅ”u, mÄs minimizÄjam zaudÄjumus.
Vienlaikus mÄs vÄlamies paÄtrinÄt izvietoÅ”anu, lai tas notiktu Ätri, viegli, dabiski un bez spriedzes no komandas puses. Inženierus, DevOps inženierus un programmÄtÄjus jÄsaudzÄ ā jaunu versiju izlaide ir stress. Komanda nav patÄriÅa materians, mÄs tiecamies efektÄ«vi izmantot cilvÄkresursus..
IzvietoÅ”anas problÄmas
Klientu trafiks ir neparedzams.. Nav iespÄjams prognozÄt, kad klientu trafiks bÅ«s minimÄls. MÄs nezinÄm, kur un kad klienti uzsÄks savas kampaÅas ā varbÅ«t Å”ovakar IndijÄ, bet rÄ«t HonkongÄ. Å emot vÄrÄ lielÄs laika zonas atŔķirÄ«bas, izvietoÅ”ana pat plkst. 2 naktÄ« nenozÄ«mÄ, ka klienti netiks ietekmÄti.
Pakalpojumu sniedzÄju problÄmas. ZiÅojumapmaiÅas programmas un pakalpojumu sniedzÄji ir mÅ«su partneri. Dažreiz viÅiem ir traucÄjumi, kas izraisa kļūdas, izvietojot jaunas versijas.
IzkliedÄtas komandas.. Komandas, kas izstrÄdÄ klientu pusi un aizmuguri, atrodas dažÄdÄs laika zonÄs. TÄdÄļ viÅi bieži nespÄj vienoties savÄ starpÄ.
Datu centri nav pÄrkopÄjami uz testa vidÄm.. VienÄ datu centrÄ ir 200 stendi ā pÄrkopÄt to smilÅ”u kastÄ pat aptuveni nesanÄks.
DÄ«kstÄvesnav pieļaujamas! Mums ir pieļaujamais pieejamÄ«bas lÄ«menis (Error Budget), kad mÄs darbojamies 99,99% laika, piemÄram, un atlikuÅ”Äs procenti ir "tiesÄ«bas uz kļūdu". Sasniegt 100% droŔību nav iespÄjams, taÄu ir svarÄ«gi nepÄrtraukti uzraudzÄ«t avÄrijas un dÄ«kstÄves.
Klassiskie risinÄjumu varianti
RakstÄ«t kodu bez kļūdÄm. Kad es biju jauns izstrÄdÄtÄjs, pie manis piegÄja vadÄ«tÄji ar lÅ«gumu veikt laidienu bez kļūdÄm, taÄu tas ne vienmÄr ir iespÄjams.
RakstÄ«t testus. Testi darbojas, taÄu dažreiz tie nemaz nenotiek tÄ, kÄ biznesa vajadzÄ«bas prasa. Nauda ir tas, kas testiem nav uzdevums.
TestÄt uz posma. Manam darbam Infobip bija 3,5 gadi, un es ne reizi neesmu redzÄjis, ka posma stÄvoklis vismaz daļÄji sakristu ar ražoÅ”anu.

MÄs pat centÄmies attÄ«stÄ«t Å”o ideju: vispirms mums bija posms, tad priekÅ”produkcija, un pÄc tam priekÅ”produkcija priekÅ”produkcijas. Bet arÄ« tas nepalÄ«dzÄja ā tie nesakrÄ«t pat pÄc jaudas. Ar posmu mÄs varam garantÄt pamata funkcionalitÄti, taÄu nezinÄm, kÄ tÄ darbosies slodzes apstÄkļos.
Izlaidumu veic tas, kurÅ” izstrÄdÄ. Tas ir laba prakse: pat ja kÄds maina komentÄra nosaukumu, uzreiz tiek pievienots ražoÅ”anai. Tas palÄ«dz attÄ«stÄ«t atbildÄ«bu un neaizmirst par veiktajÄm izmaiÅÄm.
Papildu sarežģījumi ir arÄ«. IzstrÄdÄtÄjam ir stress ā veltÄ«t daudz laika, lai visu pÄrbaudÄ«tu manuÄli.
SaskaÅoti izlaidumi. Å o variantu parasti piedÄvÄ vadÄ«ba: «Ļaujiet mums vienoties, ka katru dienu jÅ«s testÄsiet un pievienosiet jaunus variantusĀ». Tas nedarbojas: vienmÄr ir komanda, kas gaida pÄrÄjÄs vai otrÄdi.
Dūmu testi
VÄl viens veids, kÄ atrisinÄt mÅ«su problÄmas ar izvietoÅ”anu. ApskatÄ«sim, kÄ strÄdÄ dÅ«mu testi iepriekÅ”ÄjÄ piemÄrÄ, kad komanda A vÄlas izjaukt jauno versiju.
Vispirms komanda ievieto vienu instanci ražoÅ”anÄ. Ar ziÅojumiem instancÄ no mokiem tiek imitÄta reÄlÄ satiksme, lai tÄ sakristu ar parasto dienas satiksmi. Ja viss ir kÄrtÄ«bÄ, komanda pÄrslÄdz jauno versiju uz lietotÄju satiksmi.

Otrais variants ā izvietot ar papildu aparatÅ«ru. Komanda to testÄ ražoÅ”anÄ, pÄc tam pÄrslÄdz, un viss darbojas.

Dūmu testu trūkumi:
- Testiem nevar uzticÄties. Kur iegÅ«t to paÅ”u trafiku, kÄ ražoÅ”anÄ? Var izmantot vakardienas vai nedÄļas veco, bet tas ne vienmÄr sakrÄ«t ar paÅ”reizÄjo.
- GrÅ«ti uzturÄt. BÅ«s jÄtur testÄÅ”anas konti un jÄatjauno pirms katras izvietoÅ”anas, kad aktÄ«vÄs ieraksti tiek nosÅ«tÄ«ti uz krÄtuvi. Tas ir grÅ«tÄk nekÄ rakstÄ«t testu savÄ smilÅ”u kastÄ.
VienÄ«gais bonuss Å”eit ā var pÄrbaudÄ«t veiktspÄju.
Canary izlaiŔanas
SakarÄ ar smoke-testu trÅ«kumiem mÄs sÄkÄm izmantot canary izlaiÅ”anas.
Prakse, lÄ«dzÄ«ga tam, kÄ kalnraÄu izmantotÄs kanarÄ«tes gÄzes lÄ«meÅa norÄdīŔanai, ir atradusi vietu arÄ« IT. MÄs palaidÄm mazliet Ä«sta ražoÅ”anas trafika jaunajÄ versijÄ, vienlaikus cenÅ”oties ievÄrot Service Level Agreement (SLA). SLA ir mÅ«su "kļūdas tiesÄ«bas", ko mÄs varam izmantot reizi gadÄ (vai kÄdÄ citÄ laika posmÄ). Ja viss bÅ«s labi, pievienosim vairÄk trafika. Ja nÄ ā atgriezÄ«sim iepriekÅ”ÄjÄs versijas.

Izpilde un nianses
KÄ mÄs Ä«stenojÄm canary izlaiÅ”anas? PiemÄram, klients sÅ«ta ziÅas caur mÅ«su pakalpojumu.

IzvietoÅ”ana notiek Å”Ädi: no lÄ«dzsvarotÄja noÅemam vienu mezglu (1), mainÄm versiju (2) un atseviŔķi palaidÄm mazliet trafika (3).

KopumÄ grupÄ visi bÅ«s laimÄ«gi pat ja viens lietotÄjs nebÅ«s apmierinÄts. Ja viss ir kÄrtÄ«bÄ ā mainÄm visas versijas.

ParÄdīŔu shÄmÄ, kÄ tas izskatÄs mikropakalpojumiem lielÄkoties.
Ir Service Discovery un vÄl divi pakalpojumi: S1N1 un S2. Pirmais pakalpojums (S1N1) informÄ Service Discovery, kad tas startÄ, un Service Discovery to atceras. Otrais pakalpojums ar diviem mezgliem (S2N1 un S2N2) arÄ« informÄ Service Discovery, kad startÄ.

Otrais pakalpojums pirmajam darbojas kÄ serveris. Pirmais pieprasa no Service Discovery informÄciju par saviem serveriem, un, kad to saÅem, meklÄ un pÄrbauda tos ("health check"). Kad pÄrbaude ir veikta, tas nosÅ«ta viÅiem ziÅas.
Kad kÄds vÄlas izvietot jaunu versiju otrajam pakalpojumam, viÅÅ” paziÅo Service Discovery, ka otrs mezgls bÅ«s canary mezgls: uz to tiks nosÅ«tÄ«ts mazÄk trafika, jo drÄ«z notiks izvietoÅ”ana. NoÅemam canary mezglu no lÄ«dzsvarotÄja, un pirmais pakalpojums nesÅ«ta tam trafiku.

MainÄm versiju, un Service Discovery zina, ka otrÄ noda tagad ir canary ā varam tai pieŔķirt mazÄku slodzi (5%). Ja viss ir kÄrtÄ«bÄ, mainÄm versiju, atgriežam slodzi un turpinÄm strÄdÄt.
Lai to visu īstenotu, mums nepiecieŔams:
- balansÄjums;
- uzraudzÄ«ba, jo ir svarÄ«gi zinÄt, ko sagaida katrs lietotÄjs, un kÄ detalizÄti strÄdÄ mÅ«su servisi;
- versiju analÄ«ze, lai saprastu, cik labi jaunÄ versija darbosies ražoÅ”anÄ;
- automatizÄcija ā rakstÄm izpildes secÄ«bu (deployment pipeline).

BalansÄjums
Tas ir pirmais, par ko mums jÄpadomÄ. Ir divas balansÄÅ”anas stratÄÄ£ijas.
Pavisam vienkÄrÅ”s variants, kad viena noda vienmÄr ir canary. Å Ä« noda vienmÄr saÅem mazÄk trafika, un mÄs sÄkam izvietoÅ”anu ar to. ProblÄmu gadÄ«jumÄ mÄs salÄ«dzinÄsim tÄs darbÄ«bu pirms izvietoÅ”anas un tÄs laikÄ. PiemÄram, ja kļūdu ir kļuvis divreiz vairÄk, tad arÄ« zaudÄjumi ir pieauguÅ”i divreiz.
Canary noda tiek noteikta izvietoÅ”anas procesÄ. Kad izvietoÅ”ana ir pabeigta un mÄs noÅemam no tÄs canary nodas statusu, trafika lÄ«dzsvars tiek atjaunots. Ar mazÄk maŔīnÄm mÄs iegÅ«stam godÄ«gu sadalÄ«jumu.
Uzraudzība
Pamatakmens canary izlaiÅ”anÄm. Mums precÄ«zi jÄzina, kÄpÄc mÄs to darÄm un kÄdus rÄdÄ«tÄjus vÄlamies vÄkt.
PiemÄri rÄdÄ«tÄjiem, kurus vÄcam no mÅ«su servisiem.
- Kļūdu skaits, kas tiek ierakstÄ«ts žurnÄlos. Tas ir acÄ«mredzams rÄdÄ«tÄjs, ka viss darbojas kÄ vajag. KopumÄ Å”is ir labs rÄdÄ«tÄjs.
- PieprasÄ«jumu izpildes laiks (latency). Å o rÄdÄ«tÄju uzrauga visi, jo visi vÄlas strÄdÄt Ätri.
- Rindas lielums (throughput).
- SekmÄ«gu atbilžu skaits sekundÄ.
- Izpildes laiks 95% no visiem pieprasījumiem.
- Biznesa rÄdÄ«tÄji: cik daudz naudas bizness nopelna noteiktÄ laikÄ vai lietotÄju aizplÅ«de. Å ie rÄdÄ«tÄji mÅ«su jaunajai versijai var bÅ«t svarÄ«gÄki nekÄ tie, ko pievieno inženieri.
PiemÄri rÄdÄ«tÄjiem lielÄkajÄ daÄ¼Ä populÄro uzraudzÄ«bas sistÄmu.
Counter. Tas ir noteikts pieaugoÅ”s apjoms, piemÄram, kļūdu skaits. Å o rÄdÄ«tÄju ir viegli interpolÄt un analizÄt grafiku: vakar bija 2 kļūdas, bet Å”odien 500, tÄtad, kaut kas nav kÄrtÄ«bÄ.
Kļūdu skaits minÅ«tÄ vai sekundÄ ir vissvarÄ«gÄkais rÄdÄ«tÄjs, ko var aprÄÄ·inÄt, izmantojot Counter. Å ie dati sniedz skaidru priekÅ”statu par sistÄmas darbÄ«bu no attÄluma. ApskatÄ«sim piemÄru grafikai par kļūdu skaitu sekundÄ divÄm ražoÅ”anas sistÄmas versijÄm.

PirmajÄ versijÄ bija maz kļūdu, iespÄjams, audita funkcionalitÄte nedarbojÄs. OtrajÄ versijÄ viss ir ievÄrojami sliktÄk. Var droÅ”i teikt, ka ir problÄmas, tÄpÄc mums jÄatgriežas pie iepriekÅ”ÄjÄs versijas.
Gauge. Metrikas ir lÄ«dzÄ«gas Counter, bet mÄs pierakstÄm vÄrtÄ«bas, kas var gan pieaugt, gan samazinÄties. PiemÄram, pieprasÄ«jumu izpildes laiks vai rindu lielums.
GrafikÄ ir parÄdÄ«ts atbildes laiks (latency). No grafika var redzÄt, ka versijas ir lÄ«dzÄ«gas, tÄs var izmantot. Bet, ja pievÄrs pÄcpusdienÄ uzmanÄ«bu, var pamanÄ«t, kÄ mainÄs lielums. Ja pieprasÄ«jumu izpildes laiks pieaug ar lietotÄju skaita pieaugumu, tas uzreiz parÄda, ka ir problÄmas ā agrÄk tÄ nebija.

Summary. Viens no svarÄ«gÄkajiem rÄdÄ«tÄjiem biznesÄ ir percentÄ«li. Metrika parÄda, ka 95% gadÄ«jumu mÅ«su sistÄma darbojas tÄ, kÄ mÄs vÄlamies. MÄs varam samierinÄties, ja kaut kur ir problÄmas, jo saprotam vispÄrÄjo tendenci, cik labi vai slikti viss ir.
Rīki
ELK Stack. Canary var Ä«stenot, izmantojot Elasticsearch ā mÄs pierakstÄm kļūdas, kad notiek notikumi. Ar vienkÄrÅ”u API izsaukumu var iegÅ«t kļūdu skaitu jebkurÄ laikÄ un salÄ«dzinÄt ar iepriekÅ”Äjiem periodiem: GET /applg/_count?q=level:error.
Prometheus. Labi sevi parÄdÄ«jis Infobip. Tas ļauj realizÄt daudzdimensiju metrikas, jo tiek izmantoti etiÄ·etes.
MÄs varam izmantot level, instance, service, kombinÄjot tÄs vienÄ sistÄmÄ. Ar offset var apskatÄ«t, piemÄram, vÄrtÄ«bas lielumu pirms nedÄļas ar vienu komandu GET /api/v1/query?query={query}, kur {query}:
rate(logback_appender_total{
level="error",
instance=~"$instance"
}[5m] offset $offset_value)Versiju analīze
Ir vairÄkas versiju analÄ«zes stratÄÄ£ijas.
Sekt pie metriku tikai canary mezglam. Viens no vienkÄrÅ”Äkajiem variantiem: ieviesta jauna versija un izpÄtÄm tikai tÄs darbu. Bet, ja inženieris Å”ajÄ laikÄ sÄks pÄtÄ«t žurnÄlus, pastÄvÄ«gi nervozi atsvaidzinot lapas, tad Å”is risinÄjums neatŔķiras no citiem.
Canary mezgls tiek salÄ«dzinÄts ar jebkuru citu mezglu. Å Ä« salÄ«dzinÄÅ”ana ar citiem instanciem, kas strÄdÄ ar pilnu trafiku. PiemÄram, ja ar mazÄku trafiku lietas ir sliktÄkas vai nav labÄkas nekÄ reÄlajÄs instancÄs, tad kaut kas nav kÄrtÄ«bÄ.
Canary mezgls tiek salÄ«dzinÄts ar sevi pagÄtnÄ. Canary nodus var var, salÄ«dzinot ar vÄsturiskajiem datiem. PiemÄram, ja pirms nedÄļas viss bija kÄrtÄ«bÄ, mÄs varam balstÄ«ties uz Å”iem datiem, lai saprastu paÅ”reizÄjo situÄciju.
AutomatizÄcija
MÄs vÄlamies atbrÄ«vot inženierus no manuÄlas salÄ«dzinÄÅ”anas, tÄpÄc ir svarÄ«gi ieviest automatizÄciju. IzvietoÅ”anas process (deployment pipeline) parasti izskatÄs Å”Ädi:
- sÄkam;
- noÅemam nodu no lÄ«dzsvara;
- uzstÄdÄm canary nodu;
- ieslÄdzam lÄ«dzsvara ierÄ«ci ar ierobežotu trafiku;
- salÄ«dzinÄm.

Å ajÄ posmÄ mÄs Ä«stenojam automÄtisko salÄ«dzinÄÅ”anu. KÄ tas var izskatÄ«ties un kÄpÄc tas ir labÄk nekÄ pÄrbaude pÄc izvietoÅ”anas, aplÅ«kosim, izmantojot piemÄru no Jenkins.
Tas ir kanÄls uz Groovy.
while (System.currentTimeMillis() < endCanaryTs) {
def isOk = compare(srv, canary, time, base, offset, metrics)
if (isOk) {
sleep DEFAULT SLEEP
} else {
echo "Canary neizdevÄs, ir nepiecieÅ”ams atgriezt"
return false
}
} Å eit ciklÄ mÄs nosakÄm, ka salÄ«dzinÄsim jauno nodu stundas laikÄ. Ja canary process vÄl nav beidzies, mÄs izsaucam funkciju. TÄ informÄ, vai viss ir kÄrtÄ«bÄ vai nÄ: def isOk = compare(srv, canary, time, base, offset, metrics).
Ja viss ir labi ā sleep DEFAULT SLEEP, piemÄram, uz sekundi un turpinÄm. Ja nÄ, iziet ā izvietoÅ”ana neizdevÄs.
Metrikas apraksts. PaskatÄ«simies, kÄ var izskatÄ«ties funkcija compare izmantojot DSL piemÄru.
metric(
'errorCounts',
'rate(errorCounts{node=~"$canaryInst"}[5m] offset $offset)',
{ baseValue, canaryValue ->
if (canaryValue > baseValue * 1.3) return false
return true
}
)PieÅemsim, ka mÄs salÄ«dzinÄm kļūdu skaitu un vÄlamies uzzinÄt kļūdu skaitu sekundÄ pÄdÄjÄs 5 minÅ«tÄs.
Mums ir divi rÄdÄ«tÄji: bÄzes un canary nodam. CanÄrija nodas vÄrtÄ«ba ā paÅ”reizÄjÄ. BÄzes ā baseValue ā tÄ ir jebkuras citas ne canary nodas vÄrtÄ«ba. SalÄ«dzinÄm vÄrtÄ«bas savÄ starpÄ, izmantojot formulu, kuru izmantojam, balstoties uz mÅ«su pieredzi un novÄrojumiem. Ja vÄrtÄ«ba canaryValue ir slikta, tad izvietoÅ”ana neizdevÄs, un mÄs atgriežamies.
KÄpÄc tas viss nepiecieÅ”ams?
CilvÄks nevar pÄrbaudÄ«t simtiem un tÅ«kstoÅ”iem metrikas, jo Ä«paÅ”i Ätri. AutomÄtiska salÄ«dzinÄÅ”ana palÄ«dz pÄrbaudÄ«t visas metrikas un Ätri brÄ«dinÄt par problÄmÄm. BrÄ«dinÄjuma laiks ir kritisks: ja kaut kas notika pÄdÄjÄs 2 sekundÄs, radÄ«tÄ bojÄjuma apmÄrs nebÅ«s tik liels kÄ tad, ja tas bÅ«tu noticis pirms 15 minÅ«tÄm. KamÄr kÄds pamanÄ«s problÄmu, uzrakstÄ«s uz atbalstu, un atbalsts mums, lai atgrieztos, varam zaudÄt klientus.
Ja, ja process ir veiksmÄ«gs un viss ir kÄrtÄ«bÄ, mÄs automÄtiski izvietojam pÄrÄjÄs mezglus. Å ajÄ laikÄ inženieri neko nedara. Tikai tad, kad viÅi sÄk canary, viÅi izlemj, kuras metrikas Åemt, cik ilgi salÄ«dzinÄt, kÄdu stratÄÄ£iju izmantot.

Ja rodas problÄmas, mÄs automÄtiski atgriezÄ«sim canary mezglu, strÄdÄsim ar iepriekÅ”ÄjÄm versijÄm un labosim atrastÄs kļūdas. PÄc metrikÄm tÄs ir viegli atrast un redzÄt jaunÄs versijas nodarÄ«tos zaudÄjumus.
Ierobežojumi
IzpildÄ«t to, protams, nav viegli. PirmkÄrt, ir nepiecieÅ”ama kopÄja uzraudzÄ«bas sistÄma. Inženieriem ir savas metrikas, atbalstam un analÄ«tiÄ·iem ā citas, bet biznesam treÅ”as. KopÄja sistÄma ir kopÄja valoda, kurÄ runÄ bizness un izstrÄde.
Ir jÄnoskaidro praksÄ metrikas stabilitÄte. PÄrbaude palÄ«dz saprast, kÄds ir minimÄlais metrikas kopums, lai nodroÅ”inÄtu kvalitÄti.
KÄ to panÄkt? Izmantot canary pakalpojumu neizvietoÅ”anas brÄ«dÄ«. Pievienojam kÄdu pakalpojumu vecajÄ versijÄ, kas jebkurÄ brÄ«dÄ« var pÄrÅemt jebkuru norobežotu mezglu, samazinÄt trafiku bez izvietoÅ”anas. PÄc tam salÄ«dzinÄm: pÄta kļūdas un meklÄ to robežu, kad mÄs sasniedzam kvalitÄti.

KÄda ir ieguvums no canary laidieniem
MÄs minimizÄjÄm kļūdu procentu. LielÄkÄ daļa izvietoÅ”anas kļūdu rodas nesakritÄ«bu dÄļ vai prioritÄÅ”u problÄmu dÄļ. Å Ädu kļūdu ir kļuvis ievÄrojami mazÄk, jo mÄs varam atrisinÄt problÄmas pirmajÄs sekundÄs.
Esam optimizÄjuÅ”i komandu darbu. Jauniem darbiniekiem ir "kļūdu tiesÄ«bas": viÅi var izvietot ražoÅ”anÄ bez bailÄm ieviest kļūdas, viÅiem parÄdÄs papildus iniciatÄ«va, stimuls strÄdÄt. Ja viÅi kaut ko sabojÄ, tas nebÅ«s kritiski, un kļūdÄ«tais netiks atlaists.
AutomatizÄjÄm izvietoÅ”anu. Tagad tÄ vairs nav roku process, kÄ agrÄk, bet reÄla automatizÄcija. TaÄu tas aizÅem ilgÄku laiku.
IezÄ«mÄjÄm svarÄ«gÄs metrikas. Visa kompÄnija, sÄkot no biznesa un inženieriem, saprot, kas patiesÄ«bÄ ir svarÄ«gs mÅ«su produktÄ, kÄdas metrikas, piemÄram, lietotÄju atteikÅ”anÄs un pieplÅ«dums. MÄs kontrolÄjam procesu: pÄrbaudÄm metrikas, ievieÅ”am jaunas, skatÄmies, kÄ darbojas vecÄs, lai veidotu sistÄmu, kas pelna naudu efektÄ«vÄk.
Mums ir daudz lielisku prakÅ”u un sistÄmu, kas palÄ«dz. Neskatoties uz to, mÄs cenÅ”amies bÅ«t profesionÄļi un veikt savu darbu kvalitatÄ«vi, neatkarÄ«gi no tÄ, vai mums ir sistÄma, kas mums palÄ«dz, vai nÄ.
Inženiertehniskie piegÄjieni un prakses ā . Ja esat sasniedzis panÄkumus ceÄ¼Ä uz tehnisko izcilÄ«bu un esat gatavs pastÄstÄ«t, kas jums palÄ«dzÄjis, ā .
PlÄnojam rÄ«kot 8. jÅ«nijÄ. MÄs saprotam, ka Å”obrÄ«d ir grÅ«ti pieÅemt lÄmumus par dalÄ«bu konferencÄ. Bet tajÄ paÅ”Ä laikÄ uzskatÄm, ka karantÄ«na nav iemesls pÄrtraukt profesionÄlo saziÅu un attÄ«stÄ«bu. TÄpÄc jebkurÄ gadÄ«jumÄ mÄs atradÄ«sim veidu, kÄ apspriest tech lead uzdevumus un pieejas to risinÄÅ”anai ā ja nepiecieÅ”ams, pÄriesim tieÅ”saistÄ un organizÄsim tÄ«klu tur!
Avots: habr.com
