Kuni kĂ”ik tĂ€histasid minu sĂŒnnipĂ€eva, parandasin ma hommikuni klastrit — ja arendajad sĂ€utsusid oma vigu minu suunas.

Kuni kĂ”ik tĂ€histasid minu sĂŒnnipĂ€eva, parandasin ma hommikuni klastrit — ja arendajad sĂ€utsusid oma vigu minu suunas.

Siin on lugu, mis muutis igaveseks minu lĂ€henemist DevOpsile. Veel enne Covidit, kaua-kaua enne neid aegu, kui me oma meeskonnaga alles hakkasime mĂ”tlema oma Ă€ri peale ja tegelesime juhuslike tellimustega, sain ma Telegrami kaudu ĂŒhe pakkumise.

EttevĂ”te, kes kirjutas, tegeles andmeanalĂŒĂŒsiga. Igal pĂ€eval töötlesid nad tuhandeid pĂ€ringuid. Nad tulid meie juurde sĂ”nadega: "Meil on ClickHouse ja me tahame automatiseerida selle seadistamist ja paigaldamist. Soovime Ansible'it, Terraform'i, Dockerit ja kĂ”ike seda, et see oleks salvestatud GIT-i. Tahame nelja sĂ”lme klastrit, kus igaĂŒhes on kaks koopiat."

TavapĂ€rane palve, milliseid on kĂŒmneid, ning vajame sama head standardlahendust. Me ĂŒtlesime: "okei", ja 2-3 nĂ€dala jooksul oli kĂ”ik valmis. Nad aktsepteerisid töö ja hakkasid meie utiliidi abil uuele ClickHouse'i klassile ĂŒle minema.

Neil ei soovinud ega osanud keegi ClickHouse'iga tegeleda. Siis mÔtlesime, et see on nende peamine probleem, ja seetÔttu andis ettevÔtte CTO lihtsalt kÀskluse minu meeskonnale, et automatiseerida töö maksimaalselt, et sinna enam mitte kunagi sekkuda.

Meie asusime kolimisega, kuid ilmusid uued ĂŒlesanded — seadistada varukoopiad ja jĂ€lgimine. Just sel hetkel lahkus selle ettevĂ”tte CTO teisele projektile, jĂ€ttes meile komandöriks ĂŒhe oma inimestest — Leonidi. Lёnya polnud just kĂ”ige andekam tĂŒĂŒp. Tavaline arendaja, kelle Ă€kki pandi ClickHouse'i peamiseks. Tundub, et see oli tema esimene mÀÀramine mingitki juhtida, ja aukohust tuntud kuulsus mĂ”jus talle nagu paljudele.

Koos asusime varukoopiate kallale. Ma pakkusin kohe algandmeid varundama. Lihtsalt vĂ”tta, zipida ja elegantset S3'le ĂŒles laadida. Algandmed on kuld. Oli ka teine vĂ”imalus — varundada tabelid ClickHouse'is, abil kĂŒlmutamist ja kopeerimist. Kuid Đ›Ń‘ĐœŃ tuli vĂ€lja oma lahendusega.

Ta kuulutas, et meil on vaja teist ClickHouse'i klastrit. Edaspidi kirjutame andmed kahe klastrisse — peamise ja varukoopiale. Ma ĂŒtlen talle, kuule, Lёnya, see pole varukoopia — vaid aktiivne peegeldus. Ja kui andmed hakkavad kaduma tootmises, on sinu varukoopias sama asi.

Aga Ljonja hoidis kindlalt rooli ja keeldus mu argumendid kuulamast. Me arutasime pikka aega chatis, aga muud midagi ei jÀÀnud — Ljonja juhtis projekti, meie olime lihtsalt tĂ€navalĂ”bustajateks palgatud poisid.

Me jÀlgisime klastrite seisukorda ja maksime ainult administraatorite töö eest. Puhtalt ClickHouse'i haldamine, ilma andmetesse sekkumata. Klastri ligipÀÀs oli olemas, kettad olid normaalsed, sÔlmed olid korras.

Me ei kahtlustanud veel, et saime selle tellimuse hirmuÀratseva arusaamatuse tÔttu nende meeskonna seest.

Juht oli rahulolematu, et ClickHouse töötab aeglaselt ja andmed kaovad mĂ”nikord. Ta seadis oma CTO-le ĂŒlesande asja uurida. Too uuris, kuidas oskas, ja tegi jĂ€relduse, et on lihtsalt vaja ClickHouse automatiseerida — ja kĂ”ik. Kuid nagu peagi selgus — nad vajasid tĂ€iesti teistsugust devopsi meeskonda.

Kogu see teave tuli vĂ€lja vĂ€ga-vĂ€ga valulikult. Ja kĂ”ige hĂ€bivÀÀrsem oli see, et see juhtus mu sĂŒnnipĂ€eval.

Reede Ôhtu. Ma broneerisin laua oma lemmikveinibaaris ja kutsusin sÔpru.

Peaaegu vĂ€ljasĂ”idu eel saime ĂŒlesande teha alternatiivi, tegime selle Ă€ra, kĂ”ik oli korras. Alternatiiv lĂ€ks lĂ€bi, klikhaus kinnitas. Me olime juba baaris koos, kui meilt kirjutati, et andmed on puudu. Kontrollisime — tundus, et kĂ”ik on olemas. Ja lĂ€ksime pidutsema.

Restoranis oli nagu reede Ă”htul ikka, mĂŒrarikka. Tellisime joogid ja toidu ning vajusime diivanitele. Kogu selle aja tulid mu Slaki sĂ”numid ĂŒha rohkem. Mingi teema andmete puudusest. MĂ”tlesin, et hommik on Ă”htust targem. Eriti veel tĂ€nasel pĂ€eval.

Kella ĂŒksteist hakkasime juba helistama. See oli ettevĂ”tte juht... "KĂŒllap tahtis mind Ă”nnitleda," mĂ”tlesin vĂ€ga ebakindlalt ning vastasin telefonile.

Ja kuulsin midagi stiilis: "Teie esitasite meie andmed! Ma maksan teile, aga mitte miski ei tööta! Te vastutasite varukoopiate eest ja ei teinud mitte midagi! Tehke korda!" — ainult veel jĂ€medamalt.

— Tead, mine sa pekki! TĂ€na on mu sĂŒnnipĂ€ev ja ma hakkan nĂŒĂŒd jooma, mitte ei tegele teie algajate oma toimetustega, mis on tehtud liigse ja paksu palkidest!

Nii et ma ei öelnud seda. Selle asemel vĂ”tsin sĂŒlearvuti ja asusin tööle.

Ei, ma pommitasin, ma pommitasin tĂ”eliselt! Kaatsin vestlusesse teravaid 'ma ju ĂŒtlesin' — kuna varukoopia, mis tegelikult ei olnud varukoopia, ei pÀÀstnud muidugi midagi.

Me kutid mĂ”tlesime vĂ€lja, kuidas kĂ€sitsi peatada salvestamise ja kĂ”ik ĂŒle kontrollida. Me tĂ”esti veendusime, et osa andmeid ei salvestunud.

Peatasime salvestamise, lugesime kokku sĂŒndmused, mis seal pĂ€eva jooksul olid. Lisatasime veel andmeid, millest ainult kolmandik ei salvestunud. Kolm shard'i kaks koopiat. Paned 100.000 rida — 33.000 ei salvestu.

Toimus tĂ€ielik segadus. KĂ”ik saatsid teineteist jĂ€rjestikusele pĂ”rgusse: esimesena lĂ€ks Leenia, siis jĂ€rgnesin mina ja ettevĂ”tte asutaja. Ainult hiljuti liitunud CTO ĂŒritas meie kĂ”nesid karjudes ning vestlust lahenduse leidmiseks suunata.

Mis tegelikult juhtus — keegi ei saanud aru.

Me olime kutidega lihtsalt ĆĄokeeritud, kui mĂ”istsime, et kolmandik kĂ”igist andmetest mitte lihtsalt ei salvestunud — need kaotasid! Selgus, et ettevĂ”ttes oli selline kord: pĂ€rast sisestamist kustutati andmed pöördumatult, sĂŒndmused kadusid hulgiti. Kujutlesin, kuidas Sergei kĂ”ike seda soovimatuks saanud rubla sisse muundab.

Ka minu sĂŒnnipĂ€ev visati ka prĂŒgikasti. Me istusime baaris ja genereerisime ideid, pĂŒĂŒdes Ă€ra arvata visatud mĂ”istatust. ClickHouse'i kukkumise pĂ”hjus ei olnud ilmne. VĂ”ib-olla on see vĂ”rguga seotud, vĂ”ib-olla Linuxi seadetega. Mis iganes, hĂŒpoteese tuli piisavalt.

Ma ei andnud arendaja vande, kuid poiste ootamine teisel pool kaablit oli ebaaus — isegi kui nad sĂŒĂŒdistasid meid kĂ”iges. Olin 99% kindel, et probleem ei olnud meie lahendustes, mitte meie poolel. 1% vĂ”imalus, et ikkagi eksisime, kurnas Ă€revust. Kuid olenemata sellest, kummal poolel hĂ€da ei olnud — see tuli parandada. Kliendiga, olgugi et nad olid, sellise hirmuĂ€ratava andmelekkega jĂ€tta — see on liiga julm.

Kella kolme hommikul töötasime restoranis laua taga. Me lisasime sĂŒndmusi, insert select — ja hakkasime lĂŒnki tĂ€itma. Kui oled andmed kaotanud, toimib asi nii — vĂ”tad keskmised andmed eelmistest pĂ€evadest ja sisestad need kaotatud kohtadesse.

PĂ€rast kolm öösel lĂ€ksin koos sĂ”bra juurde, tellisime alkomarketist Ă”lut. Istusin sĂŒlearvuti ja Clickhouse'i probleemide kallal, sĂ”ber rÀÀkis mulle midagi. Tulemuseks, tunni pĂ€rast solvus ta selle peale, et ma töötan, mitte ei joo temaga Ă”lut, ja sĂ”itis Ă€ra. Klassika — devopsi sĂ”ber.

Kell 6 hommikul lĂ”in tabeli uuesti ĂŒles ja andmed hakkasid laadima. KĂ”ik toimis ilma kaotusteta.

Edasi lĂ€ks keeruliseks. KĂ”ik sĂŒĂŒdistasid teineteist andmete kaotuses. Kui ilmneks uus bug, olen ma kindel, et algaks tulevahetus.

Nendes tĂŒlikates aruteludes hakkasime lĂ”puks aru saama — ettevĂ”ttes arvasid, et oleme need tĂŒĂŒbid, kes töötavad andmete kallal ja hoolitsevad tabelite struktuuri eest. Nad segasid administraatorid DB adminidega kokku. Ja tulid kĂŒsima meie kĂ€est kaugelt mitte nagu administraatorite poole.

Nende peamine kaebus oli — kuradi eest, te vastutasite varukoopiate eest ja ei teinud neid korralikult, rikkusite andmed. Ja kĂ”ik see koos roppuste ja sĂ”imudega.

Ma tahtsin Ă”iglust. Kaevusin vestlusesse ja lisasin kĂ”ik ekraanipiltidega, kus Leonid kĂ”igest jĂ”ust nĂ”uab teha selline varukoopia, nagu oli tehtud. Nende CTO asus pĂ€rast minu telefonikĂ”net meie poolele. LĂ”puks tunnustas ka Lena oma sĂŒĂŒd.

EttevĂ”tte juhataja ei soovinud oma alaeksperte sĂŒĂŒdistada. Ekraanipildid ja sĂ”nad ei mĂ”junud temale. Ta arvas, et kuna meie oleme siin eksperdid, siis peaksime suutma kĂ”iki veenda ja oma otsusest kinni pidama. Ilmselt oli meie ĂŒlesanne Ă”petada Ljonjat, mööda minnes temast, kes oli projekti juht, jĂ”uda peajuhini ja talle isiklikult kĂ”ik meie kahtlused varukoopia kontseptsiooni osas vĂ€lja öelda.

Vestlusvoog oli tĂ€is viha, nii varjatud kui ka avatud agressiooni. Ma ei teadnud, mida teha. KĂ”ik oli ummikus. Siis soovitati mulle kĂ”ige lihtsamat viisi — kirjutada projektijuhile ja leppida temaga kohtumise kokku. Vasja, inimesed ei ole elus nii julged nagu vestluses. Minu sĂ”numile vastas boss: „Tule, pole probleemi.”

See oli mu karjÀÀri kĂ”ige hirmuĂ€ratav kohtumine. Minu liitlane kliendi poolt — CTO — ei saanud aega leida. Ma sĂ”itsin kohtumisele enda juhiga ja Ljonjaga.

Korduvalt mĂ”tlesin meie vĂ”imalikule dialoogile. Suutsin kohale jĂ”uda varakult, poole tunni vĂ”rra varem. Alguses tekkis Ă€revus, suitsutasin 10 sigaretti. Ma mĂ”istsin, et olen tĂ€ielikult ĂŒksi. Ma ei suuda neid veenda. Asetasin end liftisse.

Kuna ma tÔusin, kriipisin tuletelega nii, et see purunes.

LĂ”puks polnud Leoni kohtumisel kohal. Ja me rÀÀkisime kĂ”igest suurepĂ€raselt! Sergei rÀÀkis mulle oma muredest. Ta ei tahtnud 'ClickHouse'i automatiseerida' — ta tahtis, et 'pĂ€ringud töötaksid'.

Ma ei nÀinud kitsed, vaid head kutti, kes muretses oma Àri pÀrast ja oli töös 24/7. Vestlus joonistab meile sageli vÀlja kurikaelu, petiseid ja lolle. Kuid elus on need inimesed samasugused nagu sina.

Sergeile ei olnud vajalikud paar allhankijat. Probleem, mis neil tekkis, osutus palju suuremaks.

Ma ĂŒtlesin, et saan tema mured lahendada — lihtsalt see on hoopis teine töö ja mul on selleks tuttav DBA. Kui me alguses oleksime teadnud, et see asi on neile, oleksime palju vĂ€ltinud. Hilja, aga me mĂ”istsime, et probleem seisnes halvas andmekĂ€itluses, mitte infrastruktuuris.

Me surusime kĂ€ed ja meie tasu tĂ”usis kaks ja pool korda, kuid tingimusel — ma vĂ”tan kĂ”ik nende andmete ja ClickHouse'i probleemid enda kanda. Liftis kirjutasin selle sama DBA Maxiga ja ĂŒhendasin ta tööle. Tuli kogu klaster lĂ€bi töötada.

Projektis oli palju segadust. Alustades juba mainitud „varundusest“. Selgus, et see „varundus“-klaster ei olnud isoleeritud. Sellel katsetati kĂ”ike ja vahel lasti isegi tootmisse.

Kohalikud arendajad lĂ”id enda kohandatud „andmete sisestaja“. See töötas nii: kogus faile, kĂ€ivitas skripti ja ĂŒhendas andmed tabelisse. Kuid peamine probleem oli see, et ÀÀrmiselt suur andmemass vĂ”eti vastu ĂŒhe kĂ”ige lihtsama pĂ€ringu jaoks. PĂ€ring liitis andmed sekundite kaupa. KĂ”ik selle ĂŒhe numbri — pĂ€eva kokkuvĂ”tte — nimel.

Kohalikud arendajad kasutasid analĂŒĂŒsitööriista valesti. Nad lĂ€ksid Grafanasse, kirjutasid oma kuninglikud pĂ€ringud. Need laadisid alla andmeid kahe nĂ€dala kaupa. Tuli ilus graafik. Kuid tegelikult kĂ€is andmete pĂ€ring iga 10 sekundi jĂ€rel. See kĂ”ik kuhjus jĂ€rjekorda, kuna ClickHouse ei suutnud lihtsalt töötlust toime tulla. Seal peituski peamine pĂ”hjus. Grafanas ei töötanud miski, pĂ€ringud seisid jĂ€rjekorras, pidevalt saabusid vanad ebaolulised andmed.

Me seadistasime klastrit ĂŒmber, muutsime sisestamise protsessi. Kohalikud arendajad kirjutasid oma „sisestaja“ ĂŒmber ja see hakkas andmeid korrektselt ĆĄardima.

Max viis tĂ€ieliku infrastruktuuri auditi lĂ€bi. Ta koostas plaani ĂŒleminekuks tĂ€ielikule backendile. Kuid see ei rahuldanud ettevĂ”tet. Nad ootasid Maxilt maagilist saladust, mis lubaks vanaviisi töötada, kuid tĂ”husalt. Projekti eest vastutas endiselt Leonja, kes ei olnud midagi Ă”ppinud. KĂ”igest, mis pakuti, valis ta taas oma alternatiivi. Nagu alati, oli see kĂ”ige valitum... julge lahendus. Leonja arvas, et tema ettevĂ”ttel on eriline tee. Pikk ja tĂ€is jÀÀmĂ€gesid.

Omanik, nii me ka lahku lĂ€ksime — tegime, mis suutsime.

Kogemustega, selle loo Ôppetunde kandes, alustasime oma Àri ja mÀÀratlesime endale mitu pÔhimÔtet. Praegu ei alusta me kunagi tööd samamoodi nagu tookord.

PĂ€rast seda projekti liitus meiega Dibiəyßik Max ja me töötame seni suurepĂ€raselt koos. Klikhausiga seotud projekt Ă”petas meid tehtud töö eel tĂ€ielikku ja pĂ”hjalikku infrastruktuuri auditi lĂ€biviimist. Me sĂŒĂŒvime, kuidas kĂ”ik toimib, ja alles seejĂ€rel vĂ”tame ĂŒlesanded. Kui varem oleksime kohe hakanud infrastruktuuri teenindama, siis nĂŒĂŒd teeme esmalt ĂŒhekorra projekti, mis aitab mĂ”ista, kuidas seda töövalmidusse viia.

Jah, me vĂ€ldime projekte, kus on kehv infrastruktuur. Isegi kui raha on palju, isegi kui sĂ”prade tĂ”ttu. Haigete projektide haldamine ei ole kasulik. Selle teadlikkus on aidanud meil kasvada. Kas ĂŒhekorra projekt infrastruktuuri korrastamiseks ja seejĂ€rel teenindusleping, vĂ”i lihtsalt jĂ€tame selle vahele. JĂ€tame vahele veel ĂŒhe jÀÀmĂ€e.

P.S. Nii et kui teil on kĂŒsimusi oma infrastruktuuri kohta, vĂ”ite julgelt jĂ€tta taotluse.

Meil on kuus 2 tasuta audiiti, vÔib-olla on just teie projekt nende seas.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster