Medtem ko so vsi proslavljali moj rojstni dan, sem jaz do jutra popravljal gručo - razvijalci pa so krivili svoje napake name

Medtem ko so vsi proslavljali moj rojstni dan, sem jaz do jutra popravljal gručo - razvijalci pa so krivili svoje napake name

Tukaj je zgodba, ki je za vedno spremenila moj pristop k delu devops. Še v časih pred covidom, dolgo, dolgo pred njimi, ko smo s fanti šele načrtovali lasten posel in delali freelance po naključnih naročilih, mi je v voziček padla ena ponudba.

Podjetje, ki je to napisalo, je bilo podjetje za analizo podatkov. Dnevno je obdelala na tisoče zahtev. Prišli so do nas z besedami: fantje, imamo ClickHouse in želimo avtomatizirati njegovo konfiguracijo in namestitev. Želimo, da se Ansible, Terraform, Docker in vse to shrani v Git. Želimo gručo štirih vozlišč s po dvema replikama.

To je standardna zahteva, na desetine jih je in potrebujete enako dobro standardno rešitev. Rekli smo "ok" in po 2-3 tednih je bilo vse pripravljeno. Sprejeli so delo in se s pomočjo našega pripomočka začeli seliti v novo gručo Clickhouse.

Nihče ni želel ali vedel, kako se ukvarjati s Clickhouseom. Potem smo mislili, da je to njihova glavna težava, zato je servis podjetja preprosto dal zeleno luč moji ekipi, da čim bolj avtomatizira delo, da sam ne bi nikoli več šel tja.

Spremljali smo selitev, pojavile so se druge naloge - postavitev varnostnih kopij in spremljanje. V istem trenutku se je bencinski servis tega podjetja združil z drugim projektom, tako da nam je za poveljnika ostal eden od naših - Leonid. Lenya ni bil zelo nadarjen fant. Preprost razvijalec, ki je bil nenadoma postavljen za vodjo Clickhousea. Zdi se, da je bila to njegova prva naloga, da nekaj vodi, in izjemna čast ga je osupnila.

Skupaj smo se lotili izdelave varnostnih kopij. Predlagal sem, da takoj varnostno kopirate izvirne podatke. Samo vzemite ga, zapnite in elegantno vrzite v kakšen c3. Surovi podatki so zlato. Obstajala je še ena možnost - varnostno kopiranje samih tabel v Clickhouseu z uporabo zamrznitve in kopiranja. Toda Lenya je našel lastno rešitev.

Napovedal je, da potrebujemo drugo gručo Clickhouse. In od zdaj naprej bomo zapisovali podatke v dve gruči - glavno in rezervno. Povem mu, Lenya, to ne bo rezervna kopija, ampak aktivna replika. In če se podatki začnejo izgubljati v proizvodnji, se bo enako zgodilo z vašo varnostno kopijo.

Toda Lenya je močno zgrabil volan in ni hotel poslušati mojih argumentov. Dolgo smo klepetali z njim v klepetu, a ni bilo kaj početi - Lenya je vodil projekt, bili smo samo najeti otroci z ulice.

Spremljali smo stanje grozda in zaračunavali le delo skrbnikov. Čista administracija Clickhouse brez poseganja v podatke. Grozd je bil na voljo, diski so bili v redu, vozlišča so bila v redu.

Nismo vedeli, da smo to naročilo prejeli zaradi groznega nesporazuma znotraj njihove ekipe

Upravitelj je bil nezadovoljen, ker je bil Clickhouse počasen in so se podatki včasih izgubili. Svojemu servisu je zadal nalogo, da to ugotovi. Ugotovil je, kolikor je lahko, in ugotovil, da moramo samo avtomatizirati Clickhouse - to je vse. A kot je kmalu postalo jasno, ekipe devopov sploh niso potrebovali.

Vse to se je izkazalo za zelo, zelo boleče. In najbolj žaljivo je bilo, da je bilo na moj rojstni dan.

Petek zvečer. Rezerviral sem v svojem najljubšem vinskem baru in povabil prijatelje.

Skoraj pred odhodom dobimo nalogo, da naredimo alter, ga opravimo, vse je ok. Sprememba sprejeta, Clickhouse potrjena. Že gremo v lokal, pa nam pišejo, da je premalo podatkov. Računali smo, da je vsega videti dovolj. In odšli so praznovat.

V petek je bilo v restavraciji hrupno. Po naročilu pijače in hrane smo poležavali na zofah. Ves ta čas so mojo slavo počasi preplavljala sporočila. Napisali so nekaj o pomanjkanju podatkov. Mislil sem si - jutro je modrejše od večera. Še posebej danes.

Bližje do enajstih so začeli klicati. To je bil vodja podjetja ... »Verjetno se je odločil, da mi čestita,« sem zelo obotavljajoče pomislil in vzel slušalko.

In slišal sem nekaj takega: »Zajebal si naše podatke! Plačam ti, pa nič ne deluje! Bil si odgovoren za varnostne kopije in nisi naredil ničesar! Popravimo!" - samo še bolj nesramen.

- Veš kaj, pojdi ven! Danes je moj rojstni dan in zdaj bom pil in se ne bom ukvarjal z vašimi junijskimi domačimi izdelki iz sranja in palic!

Tega nisem rekel. Namesto tega sem vzel prenosni računalnik in se lotil dela.

Ne, bombardiral sem, bombardiral sem kot hudič! V klepet je vlil jedko "saj sem ti rekel" - ker varnostna kopija, ki sploh ni bila varnostna kopija - seveda ni rešila ničesar.

S fanti smo se domislili, kako ročno ustaviti snemanje in vse preveriti. Pravzaprav smo poskrbeli, da nekateri podatki niso bili zapisani.

Nehali smo beležiti in šteli število dogodkov, ki so bili na dan. Naložili so več podatkov, od katerih le tretjina ni bila zapisana. Trije drobci s po 2 replikama. Vstavite 100.000 vrstic – 33.000 se ne zabeleži.

Nastala je popolna zmeda. Vsi po vrsti so drug drugemu govorili, naj odjebem: prvi je šel Lenya, za njim pa jaz in ustanovitelj podjetja. Le servis, ki se je pridružil, je poskušal naše kričeče klice in dopisovanje preusmeriti v iskanje rešitve problema.

Nihče ni razumel, kaj se v resnici dogaja

S fanti smo bili naravnost navdušeni, ko smo ugotovili, da tretjina vseh podatkov ni bila samo zabeležena, temveč izgubljena! Izkazalo se je, da je bil vrstni red v podjetju naslednji: po vnosu so bili podatki nepreklicno izbrisani, dogodki so se zapravljali v paketih. Predstavljal sem si, kako bi Sergej vse to pretvoril v izgubljene rublje.

Tudi moj rojstni dan je bil vržen v smeti. Sedeli smo za šankom in ustvarjali ideje ter poskušali rešiti uganko, ki nam je bila vržena. Razlog za Clickhouseov padec ni bil očiten. Morda je krivo omrežje, morda nastavitve Linuxa. Ja, kakor hočete, dovolj je bilo hipotez.

Nisem dal prisege razvijalca, vendar je bilo nepošteno zapustiti fante na drugi strani linije - tudi če so za vse krivili nas. Bil sem 99% prepričan, da problem ni v naših odločitvah, ne na naši strani. 1-odstotna možnost, da smo se zafrknili, je gorelo od tesnobe. Toda ne glede na to, na kateri strani je bila težava, jo je bilo treba popraviti. Prepustiti strankam, ne glede na to, kdo so, tako strašno uhajanje podatkov, je preveč kruto.

Za gostinsko mizo smo delali do treh zjutraj. Dodali smo dogodke, vstavili izbor in zapolnili vrzeli. Ko zašraufaš podatke, narediš takole: vzameš povprečne podatke za prejšnje dni in jih vstaviš v zajebane.

Po treh zjutraj sva s prijateljem odšla v mojo hišo in naročila pivo na alkoholni tržnici. Sedel sem s prenosnikom in Clickhouse težavami, prijatelj mi je nekaj pripovedoval. Posledično je bil po eni uri užaljen, ker delam in ne pijem piva z njim, in je odšel. Klasika - Bil sem prijatelj Devopsa.

Do 6. ure zjutraj sem ponovno ustvaril tabelo in podatki so začeli poplavljati. Vse je delovalo brez izgub.

Potem je bilo težko. Za izgubo podatkov so vsi krivili drug drugega. Če bi se zgodil nov hrošč, sem prepričan, da bi prišlo do streljanja

V teh bojih smo končno začeli razumeti - podjetje je mislilo, da smo fantje, ki delajo s podatki in spremljajo strukturo tabel. Zamešali so administratorje s trgovci. In prišli so nas vprašat nekaj drugega od adminov.

Njihova glavna pritožba je - kaj za vraga, vi ste bili odgovorni za varnostne kopije in jih niste naredili pravilno, še naprej ste zapravljali podatke. In vse to z navijalnimi podlogami.

Hotel sem pravico. Izkopal sem korespondenco in priložil posnetke zaslona vseh, kjer jih Leonid z vso silo sili, da naredijo varnostno kopijo, ki je bila narejena. Njihov servis se je po mojem telefonskem klicu postavil na našo stran. Kasneje je Lenya priznal svojo krivdo.

Vodja podjetja, nasprotno, ni želel kriviti svojih ljudi. Posnetki zaslona in besede nanj niso vplivali. Menil je, da ker smo tukaj strokovnjaki, moramo vse prepričati in vztrajati pri svoji odločitvi. Očitno je bila naša naloga naučiti Lenya in poleg tega mimo njega, ki je bil imenovan za vodjo projekta, priti do glavne stvari in mu osebno izliti vse naše dvome o konceptu varnostnih kopij.

Klepet je kipel od sovraštva, prikrite in neskrite agresije. Nisem vedel, kaj naj naredim. Vse se je ustavilo. In potem so mi svetovali najlažji način - da napišem osebno sporočilo upravitelju in se z njim dogovorim za sestanek. Vasya, ljudje v resničnem življenju niso tako hitri kot v klepetu. Šef mi je na sporočilo odgovoril: pridi, brez vprašanja.

To je bilo najstrašnejše srečanje v moji karieri. Moj zaveznik iz stranke - STO - ni našel časa. Na sestanek sem šel s šefom in Leno.

Znova in znova sem si v glavi ponavljal najin možen dialog. Uspelo mi je priti zelo zgodaj, pol ure prej. Začel sem postajati živčen, pokadil sem 10 cigaret. Razumel sem, to je to - prekleto sem sam. Ne bom jih mogel prepričati. In stopil je v dvigalo.

Ko je vstajal, je po vžigalniku tako močno udaril, da ga je zlomil.

Posledično Lenya ni bilo na sestanku. In s šefom sva se o vsem super pogovorila! Sergej mi je povedal o svoji bolečini. Ni želel "avtomatizirati Clickhouse" - hotel je "poskrbeti, da poizvedbe delujejo."

Nisem videl koze, ampak dobrega fanta, zaskrbljenega za svoj posel, zatopljenega v delo 24/7. Klepet nas pogosto pritegne zlikovce, barabe in neumne ljudi. Toda v življenju so to ljudje, kot ste vi.

Sergej ni potreboval nekaj devopov za najem. Težava, ki so jo imeli, se je izkazala za veliko večjo.

Rekel sem, da bi lahko rešil njegove težave - to je samo popolnoma drugačna služba in imam prijatelja, ki dela za to. Če bi že od začetka vedeli, da je to dogovor za njih, bi se marsičemu izognili. Pozno je, vendar smo ugotovili, da je problem v zanič upravljanju podatkov, ne v infrastrukturi.

Segla sva si v roke, dvakrat in pol so nama dvignili plačo, a pod pogojem, da čisto vso zmešnjavo z njihovimi podatki in Clickhouseom vzamem zase. V dvigalu sem komuniciral z istim DI Maxom in ga povezal z delom. Prelopatati je bilo treba celotno gručo.

V sprejetem projektu je bilo veliko smeti. Začenši z omenjeno “varnostno kopijo”. Izkazalo se je, da ta isti "rezervni" grozd ni izoliran. Na njem so testirali vse, včasih so ga dali tudi v proizvodnjo.

Naši interni razvijalci so ustvarili svoj vstavljalnik podatkov po meri. Delal je takole: združil je datoteke, zagnal skript in združil podatke v tabelo. Toda glavna težava je bila, da je bila za eno preprosto zahtevo sprejeta ogromna količina podatkov. Zahteva je vsako sekundo združila podatke. Vse zaradi ene številke - količine na dan.

Interni razvijalci so nepravilno uporabili analitično orodje. Odšli so do grafana in napisali svojo kraljevsko prošnjo. Podatke je nalagal 2 tedna. Izkazalo se je, da je lep graf. Toda v resnici je bila zahteva za podatke vsakih 10 sekund. Vse to se je nabiralo v čakalni vrsti, ker Clickhouse enostavno ni vzel obdelave. Tu se je skrival glavni razlog. V Grafani ni delovalo nič, zahteve so stale v čakalni vrsti, nenehno so prihajali stari nepomembni podatki.

Ponovno smo konfigurirali gručo, ponovno naredili vstavljanje. Interni razvijalci so na novo napisali svoj »inserter« in začel je pravilno deliti podatke.

Max je opravil popolno revizijo infrastrukture. Predstavil je načrt za prehod na polnopravno zaledje. A to podjetju ni ustrezalo. Od Maxa so pričakovali čarobno skrivnost, ki jim bo omogočila, da delajo na star način, a le učinkovito. Lenya je še vedno vodil projekt in se ni naučil ničesar. Izmed vsega ponujenega je spet izbral svojo alternativo. Kot vedno je bila to najbolj izbirčna... drzna odločitev. Lenya je verjel, da ima njegovo podjetje posebno pot. Trn in poln ledenih gor.

Pravzaprav smo se tam razšli - naredili smo, kar smo lahko.

Polni znanja in modrosti iz te zgodovine smo odprli lastno podjetje in si izoblikovali več načel. Nikoli ne bomo dela začeli tako kot takrat.

Po tem projektu se nam je pridružil DJ Max in še vedno odlično sodelujemo. Primer Clickhouse me je naučil, kako izvesti popolno in temeljito revizijo infrastrukture pred začetkom dela. Razumemo, kako vse poteka, in šele nato sprejmemo naloge. In če bi prej takoj hiteli vzdrževati infrastrukturo, zdaj najprej naredimo enkraten projekt, ki nam pomaga razumeti, kako jo spraviti v delovno stanje.

In ja, izogibamo se projektom z zanič infrastrukturo. Tudi če za veliko denarja, tudi če iz prijateljstva. Nerentabilno je voditi bolne projekte. Zavedanje tega nam je pomagalo rasti. Ali enkraten projekt za ureditev infrastrukture in potem vzdrževalna pogodba ali pa kar letimo mimo. Mimo še ene ledene gore.

PS Če imate vprašanja o svoji infrastrukturi, pustite prošnjo.

Imamo 2 brezplačni presoji na mesec, morda bo vaš projekt eden izmed njih.

Vir: www.habr.com

Dodaj komentar