
Siit algab lugu, mis muutis igaveseks mu lĂ€henemist devops tööle. Veel enne koronakriisi, ammu-ammu enne seda, kui me poisid alles mĂ”tlesime oma ettevĂ”tte peale ja tegime juhutöid, sain mina ĂŒhte ettepanekut messengeri.
EttevĂ”te, kes selle kirjutas, tegeles andmeanalĂŒĂŒsiga. Igal pĂ€eval töötles ta tuhandeid pĂ€ringuid. Nad tulid meie juurde sĂ”nadega: poisid, meil on ClickHouse ja me tahame automatiseerida selle seadistamist ja installimist. Soovime Ansible'i, Terraformi, Dockert ja et see kĂ”ik oleks talletatud git'is. Soovime neli sĂ”lme kahes replikas igas.
Tavaline palve, selliseid on kĂŒmneid, ja vajalik on sama hea standardlahendus. Me ĂŒtlesime "okei", ja kahe kuni kolme nĂ€dala jooksul oli kĂ”ik valmis. Nad aktsepteerisid töö ja hakkasid meie utiliidi abil uuele ClickHouse klastrile kolima.
Nendel ei olnud kedagi, kes ClickHouse'iga tegeleks. Siis arvasime me, et see on nende peamine probleem, ja seetÔttu andis ettevÔtte CTO lihtsalt kÀsu minu meeskonnale maksimaalselt automatiseerida töö, et enam sinna mitte ronida.
Me toetasime kolimist, ilmusid muud ĂŒlesanded â seadistada varukoopiad ja jĂ€lgimine. Samal ajal lahkus ettevĂ”tte CTO teise projekti, jĂ€ttes meile komandöriks ĂŒhe oma töötaja â Leonidi. LĂ”e ei olnud just kuigi andekas poiss. Lihtne arendaja, kelle Ă€kki pandi ClickHouse'i pealikuks. Tundus, et see oli tema esimene juhtimise mÀÀramine, ja au tĂ”ttu, mis talle sobis, tekkis tal tĂ€htsus.
Koos hakkasime varukoopiate kallale. Ma soovitasin kohe algandmeid varundada. Lihtsalt vĂ”tta, zipida ja elegantsetesse s3-sse visata. Algandmed on kuld. Oli ka teine variant â varundada tabelid ise ClickHouse'is, kasutades kĂŒlmumist ja kopeerimist. Kuid LĂ”e leidis enda lahenduse.
Ta kuulutas, et meil on vaja teist ClickHouse klastrit. Ja edaspidi kirjutame andmeid kahte klastrisse â peamisele ja varukoopiale. Ma ĂŒtlen talle, et LĂ”e, see ei ole varukoopia â vaid aktiivne replikatsioon. Ja kui andmed hakkavad tootmises kaduma, on su varukoopias sama asi.
Aga LĂ”e haaras kindlalt roolist ja keeldus mu argumente kuulamast. Me vaidleme pikalt chat'is, aga midagi pole teha â LĂ”e juhtis projekti, meie olime lihtsalt kohale palgatud poisid.
Me jĂ€lgisime klasteri seisundit ja vĂ”tsime tasu vaid administraatorite töö eest. Puhtalt ClickHouse'i haldamine, ilma andmetesse sĂŒĂŒvimata. Klaster oli saadaval, kettad korras, sĂ”lmed toimisid hĂ€sti.
Me ei kahtlustanud veel, et saime selle tellimuse pahanduse tÔttu nende meeskonna sees.
Juht oli rahulolematu, et ClickHouse töötab aeglaselt ja aeg-ajalt kaotavad nad andmeid. Ta andis oma CTO-le ĂŒlesande olukord selgeks teha. See uuris, mida suudab, ja jĂ”udis jĂ€reldusele, et tuleb lihtsalt ClickHouse automatiseerida â ja kĂ”ik. Kuid peagi selgus, et neile polnud absoluutselt vaja devopsi meeskonda.
KĂ”ik see selgus vĂ€ga-vĂ€ga valusalt. Ja kĂ”ige rohkem hĂ€iris, et see juhtus minu sĂŒnnipĂ€eval.
Reede Ôhtu. Olin broneerinud laua oma lemmikveinibaaris ja kutsunud sÔbrad.
Peaaegu enne lahkumist tuli meile ĂŒlesanne teha alternatiiv, tegime Ă€ra, kĂ”ik oli okei. Alternatiiv toimis, ClickHouse kinnitas. Olime juba baaris, kui kirjutati, et andmeid on puudu. Arvutasime â kĂ”ik nĂ€is olevat korras. Ja lĂ€ksime pidutsema.
Baaris oli reede Ôhtuks valjult. Tellisime jooke ja toitu, kerisime diivanitele. KÔik selle aja minu Slack tÀitus vaikselt sÔnumitega. Kirjutati midagi andmete puuduse kohta. MÔtlesin, et hommikul on targem mÔelda. Eriti tÀna.
Kella ĂŒheksakĂŒmne lĂ€hedal hakkasid nad juba helistama. See oli ettevĂ”tte juht⊠âPidasin tĂ”enĂ€oliselt mind Ă”nnitlemiseks,â â mĂ”tlesin vĂ€ga ebakindlalt ja vĂ”tsin telefoni vastu.
Ja kuulsin midagi sellist: âTe olete meie andmed Ă€ra kaotanud! Ma maksan teile, aga miski ei tööta! Te vastutasite varukoopiate eest, aga ei teinud midagi! Tehke korda!â â ainult veel roppem teha.
â Tea mida, mine sa pekki! TĂ€na on minu sĂŒnnipĂ€ev ja ma hakkan nĂŒĂŒd jooma, mitte ei tegele teie algajate jura ja sopaga!
Nii ma ei öelnudki. Selle asemel vÔtsin arvuti vÀlja ja asusin tööle.
Ei, ma olin vihane, ma olin kohutavalt vihane! Viska chat'i teravat "ma ju ĂŒtlesin" â sest varukoopia, mis polnud sugugi varukoopia, ei pÀÀstnud midagi.
Meie poisid mĂ”tlesid, kuidas manuaalselt salvestamise peatada ja kĂ”ik ĂŒle vaadata. Kontrollisime tĂ”eliselt, et osa andmeid ei salvestu.
Salvestus peatati, loeti pĂ€eva jooksul toimunud sĂŒndmuste arvu. Lisati veel andmeid, millest vaid kolmandik ei salvestunud. Kolm shardi kahes replikas. Kui sisestad 100 000 rida, siis 33 000 ei salvestu.
Tekkis tĂ€ielik segadus. KĂ”ik saatsid ĂŒksteist jĂ€rjestikku peedile: esimesena lĂ€ks sinna LŃnja ja seejĂ€rel jĂ€rgnesin mina ning ettevĂ”tte asutaja. Ainult hiljuti liitunud CTO ĂŒritas meie kĂ”nesid kriiskamise ja kirjavahetuse lĂ€bi lahenduse otsimise suunata.
Mis tegelikult toimus â keegi ei saanud aru.
Meie tiim lihtsalt ĆĄokeerus, kui saime aru, et kolmandik kĂ”igist andmetest mitte lihtsalt ei salvestunud â nad kadusid! Selgus, et ettevĂ”ttes oli selline kord: pĂ€rast sisestamist andmed kustutati pöördumatult ja sĂŒndmused kaotsime partii kaupa. Kujutasin ette, kuidas Sergei konverteerib selle kaotatud rubladeks.
Minu sĂŒnnipĂ€ev lĂ€ks ka prĂŒgisse. Istusime baaris ja genereerisime ideid, ĂŒritades lahendada pakutud mĂ”istatust. Kliikhausi kukkumise pĂ”hjus ei olnud ilmne. VĂ”ib-olla on sĂŒĂŒdistatav vĂ”rk, vĂ”ib-olla linukis seaded. KĂ”ikvĂ”imalikud hĂŒpoteesid kĂ”lasid.
Ma ei andnud arendaja tĂ”otust, aga poiste jĂ€tmine teisele otsa oli ebaaus â isegi kui nad sĂŒĂŒdistasid meid. Olin 99% kindel, et probleem ei olnud meie lahendustes, mitte meie poolel. 1% tĂ”enĂ€osus, et Ă€kki olime me siiski eksinud, pani muretsema. Aga sĂ”ltumata sellest, kelle poolel hĂ€da oli â seda tuli parandada. Kliente, olgu nad millised tahes, ei tohtinud jĂ€tta sellise rĂ€ige andmelekke juurde â see oli liiga tĂ”sine.
Kuni kella kolmeni hommikul töötasime restorani laua taga. Lisades sĂŒndmusi, insert select â ja hakkasime tĂ€itma vahepealseid kohti. Kui oled andmeid kaotanud, siis teed nii â vĂ”tad eelmiste pĂ€evade keskmised andmed ja asetad need kadunud kohtadesse.
PĂ€rast kella kolme hommikul lĂ€ksin sĂ”braga minu juurde, tellisime alkomarketist Ă”lut. Istusin sĂŒlearvuti ja Klickhausi probleemide ees, sĂ”ber rÀÀkis mulle millestki. LĂ”puks, tunni pĂ€rast, vihastas ta selle peale, et töötan, mitte ei joo temaga Ă”lut, ja lahkus. Klasika â kasvasin devopsi sĂ”pruseks.
Kell kuus hommikul loon uuesti tabeli ja andmed hakkasid voolama. KÔik hakkas töötama ilma kaotusteta.
Edasi lĂ€ks keeruliseks. KĂ”ik sĂŒĂŒdistasid ĂŒksteist andmete kaotsiminekus. Kui juhtuks uus viga, olen ma kindel, et algaks tulistamine.
Nendel vĂ”itlustes hakkasime lĂ”puks aru saama â ettevĂ”ttes arvati, et me oleme need tĂŒĂŒbid, kes töötavad andmete kallal ja jĂ€lgivad tabelite struktuuri. Nad segasid administraatoreid ja andmebaasi spetsialiste. Ja tulid kĂŒsima meilt kaugel mitte kui administraatoritelt.
Nende peamine kaebus oli â milleks, kuradi pĂ€rast, vastasite varukoopiate eest ja ei teinud neid korralikult, lasite andmed kaotsi minna. Ja kĂ”ik see koos sĂ”imuga.
Mulle oli vajalik Ă”iglus. Otsisin vĂ€lja sĂ”numivahetuse ja lisasin kĂ”ik ekraanipildid, kus Leonid pĂŒĂŒab igal vĂ”imalusel teha sellist varukoopiat, nagu see tehti. Nende CTO leidis mu poole pĂ€rast minu telefonihelistamist.
EttevĂ”tte juht seevastu ei tahtnud oma inimesi sĂŒĂŒdistada. Ekraanipildid ja sĂ”nad ei mĂ”junud talle. Ta arvas, et kuna meie oleme siin eksperdid, siis pidime kĂ”ik ĂŒmber veenma ja oma otsust kaitsema. Ilmselt kuulus meie ĂŒlesannete hulka Ă”petada Leonid ja otse tema ringi sĂ”ites jĂ”uda pĂ”hijuhtini ning talle isiklikult kĂ”ik meie kahtlused varukoopiate kontseptsiooni osas vĂ€lja öelda.
Vestluses voolas vihkamine, varjatud ja pealetĂŒkkiv agressioon. Ma ei teadnud, mida teha. KĂ”ik oli ummikus. Siis soovitasid mulle kĂ”ige lihtsamat viisi â kirjutada juhile ja korraldada temaga kohtumine. Vassil, inimesed ei ole pĂ€riselus nii julged, kui vestluses. Minu sĂ”numile vastas boss: tule, pole probleemi.
See oli kĂ”ige ebameeldivam kohtumine mu karjÀÀri jooksul. Minu liitlane kliendi poolt â CTO â ei suutnud leida aega. Kohtumisele sĂ”itsin mina koos bosi ja Leoni.
Kord pĂ€rast kordat lĂ€bimĂ”tlemine meie vĂ”imaliku dialooge kĂ€is mu peast lĂ€bi. Ănnestus saabuda palju varem, pool tundi enne. Algasid nĂ€rvid, suitsetasin 10 sigaretti. Ma mĂ”istsin, et kĂ”ik â ma olen, kurat, ĂŒksi. Ma ei suuda neid ĂŒmber veenda. Ja astusin lifti.
Kuna tÔusin, kriibisin ma enda kergendaja katki.
LĂ”puks ei olnud Leoni kohtumisel. Ja me rÀÀkisime suurepĂ€raselt kĂ”igest peajuhiga! Sergei rÀÀkis mulle oma muredest. Ta ei tahtnud "automatiseerida ClickHouse'i" â ta soovis, "et pĂ€ringud töötaksid".
Ma ei nĂ€inud seal rumalat, vaid head tĂŒĂŒpi, kes muretseb oma Ă€ri pĂ€rast, sĂŒvenenud tööle 24/7. Vestlusmaal mĂ”nikord joonistab meile kurikaelu, petiste ja lollide kujusid. Kuid elus on nad samasugused inimesed nagu sina.
Sergeile ei olnud vaja ainult paar DevOps'i tööle. Probleem, mis neil tekkis, oli palju suurem.
Ma ĂŒtlesin, et suudan tema probleemid lahendada â lihtsalt, see on hoopis teine töö ja mul on selle jaoks tuttav DB-ehitaja. Kui oleksime alguses teada saanud, et see on neile vajalik, oleksime paljusid asju vĂ€ltinud. Hilja, aga me mĂ”istsime, et probleem oli halbades andmetes, mitte infrastruktuuris.
Me shook hands, our pay was raised two and a half times, but on the condition â I take all the hassle with their data and ClickHouse. In the elevator, I messaged that same DB guy Max and got him on board. We needed to overhaul the entire cluster.
VastuvĂ”etud projektis oli nagu palju jama. Alustades eelmainitud âvarundusestâ. Selgus, et see sama âvarundusâ-klaster ei olnud isoleeritud. KĂ”ike testiti seal, mĂ”nikord isegi viidi tootmisse.
EttevĂ”tte arendajad lĂ”id oma kohandatud âandmete sisestajaâ. See töötas nii: faili batĆĄid, kĂ€ivitas skripti ja lĂ”i andmed tabelisse. Kuid peamine probleem oli see, et tohutu hulk andmeid tuli ĂŒhe lihtsa pĂ€ringu jaoks. PĂ€ring ĂŒhendas andmeid sekunditi. KĂ”ik ĂŒhe numbriga â pĂ€eva kokkuvĂ”ttega.
EttevĂ”tte arendajad kasutasid analĂŒĂŒtikat valesti. Nad lĂ€ksid Grafanasse, kirjutasid oma kuningliku pĂ€ringu. See tĂ”i vĂ€lja andmed kahe nĂ€dala jooksul. Saadi ilus diagramm. Aga tegelikult kĂ€is andmete pĂ€ring iga 10 sekundi tagant. KĂ”ik see kogunes jĂ€rjekorda, kuna ClickHouse lihtsalt ei suutnud töötlemist vĂ€lja kannatada. Just siin peitus pĂ”hjus. Grafanas ei töötanud midagi, pĂ€ringud seisisid jĂ€rjekorras, pidevalt saabusid vanad, ebaolulised andmed.
Me seadistasi ĂŒmber klastrit, tegime sisestuse uuesti. EttevĂ”tte arendajad kirjutasid oma âandmete sisestajaâ ĂŒmber ja see hakkas andmeid Ă”igesti jagama.
Max tegi infrastruktuuri tĂ€ieliku auditi. Ta koostas plaani ĂŒleminekuks tĂ€ieĂ”iguslikule tagakĂŒljele. Kuid see ei rahuldanud ettevĂ”tet. Nad ootasid Maxilt maagilist saladust, mis vĂ”imaldaks töötada vanamoodsalt, aga tĂ”husalt. Projekti eest vastutas ikka Leonia, kes ei olnud midagi Ă”ppinud. KĂ”igest, mis pakuti, valis ta jĂ€lle oma alternatiivi. Nagu alati, oli see kĂ”ige valikulisem⊠julge lahendus. Leonia arvates oli tema ettevĂ”ttel eriline tee. KĂ”rge ja tĂ€is jÀÀberge.
Ongi kĂ”ik, nii me lahku lĂ€ksime â tegime, mis suudame.
TÀis sinikate ja kogemustega avasime oma Àri ning kehtestasime endale mitmeid pÔhimÔtteid. Praegu ei alusta me tööd enam kunagi nagu tookord.
DibiayĆĄik Max liitus meiega pĂ€rast seda projekti ja me töötame siiani suurepĂ€raselt koos. Klikihausiga seotud juhtum Ă”petas meid enne töö alustamist infrastruktuuri tĂ€ielikku ja pĂ”hjalikku auditi tegemist. Me hindame, kuidas kĂ”ik töötab, ja siis vĂ”tame alles ĂŒlesanded. Ja kui varem oleksime kohe infrastruktuuri teenindama lĂ€inud, siis nĂŒĂŒd teeme kĂ”igepealt ĂŒhekordse projekti, mis aitab mĂ”ista, kuidas see töökorraldusse viia.
Ja jah, me lĂ”petame halva infrastruktuuriga projektide kĂ”rvalehoidmise. Isegi kui need maksavad palju, isegi sĂ”prade tĂ”ttu. Haigete projektide juhtimine ei ole kasulik. Selle mĂ”istmine aitas meil kasvada. Kas tuleb ĂŒhekordne projekt infrastruktuuri korda tegemiseks ja seejĂ€rel teenindusleping, vĂ”i lihtsalt möödaminne. Mööda jĂ€rgmist jÀÀmĂ€ge.
P.S. Nii et kui teil on kĂŒsimusi oma infrastruktuuri kohta, .
Meil on kuus kaks tasuta auditi, vÔib-olla on just teie projekt nende seas.
Allikas: habr.com
