Dok su svi slavili moj rođendan, ja sam popravljao klaster do jutra - a programeri su za svoje greške krivili mene

Dok su svi slavili moj rođendan, ja sam popravljao klaster do jutra - a programeri su za svoje greške krivili mene

Evo priče koja je zauvijek promijenila moj pristup devops radu. Još u vrijeme prije Covida, mnogo, mnogo prije njih, kada smo momci i ja samo planirali vlastiti posao i radili honorarno po nasumičnoj narudžbi, jedna ponuda je pala u moja kolica.

Kompanija koja je ovo napisala bila je kompanija za analizu podataka. Dnevno je obrađivala hiljade zahtjeva. Došli su do nas s riječima: momci, imamo ClickHouse i želimo automatizirati njegovu konfiguraciju i instalaciju. Želimo Ansible, Terraform, Docker i da sve to bude pohranjeno u Gitu. Želimo klaster od četiri čvora sa po dvije replike.

To je standardni zahtjev, ima ih na desetine i potrebno vam je jednako dobro standardno rješenje. Rekli smo “ok”, i nakon 2-3 sedmice sve je bilo spremno. Prihvatili su posao i počeli se preseliti u novi Clickhouse klaster koristeći naš uslužni program.

Niko nije želeo niti znao kako da petlja sa Clickhouse-om. Tada smo mislili da je to njihov glavni problem, pa je servis kompanije jednostavno dao zeleno svetlo mom timu da što više automatizuje posao, kako ne bih više išla tamo.

Ispratili smo selidbu, pojavili su se i drugi zadaci - postavljanje rezervnih kopija i praćenje. U istom trenutku, servis ove kompanije spojio se sa drugim projektom, ostavljajući nam jednog našeg - Leonida - kao komandira. Lenja nije bio baš nadaren momak. Jednostavan programer koji je iznenada stavljen na čelo Clickhousea. Čini se da mu je ovo bio prvi zadatak da upravlja nečim, a ogromna čast ga je natjerala da se osjeća kao zvijezda.

Zajedno smo krenuli u pravljenje rezervnih kopija. Predložio sam da odmah napravite sigurnosnu kopiju originalnih podataka. Samo ga uzmi, zakopčaj i elegantno baci u neki c3. Sirovi podaci su zlato. Postojala je još jedna opcija - napraviti sigurnosnu kopiju samih tablica u Clickhouseu, koristeći zamrzavanje i kopiranje. Ali Lenya je smislio svoje rješenje.

Najavio je da nam treba drugi Clickhouse klaster. I od sada ćemo podatke pisati u dva klastera - glavni i rezervni. Kažem mu, Lenja, to neće biti rezervna, već aktivna replika. A ako podaci počnu da se gube u proizvodnji, isto će se dogoditi i na vašoj sigurnosnoj kopiji.

Ali Lenja je čvrsto uhvatio volan i odbio da sasluša moje argumente. Dugo smo ćaskali sa njim u ćaskanju, ali nije bilo šta da radimo - Lenya je bio zadužen za projekat, samo smo bili angažovani klinci sa ulice.

Pratili smo stanje klastera i naplaćivali samo rad administratora. Čista Clickhouse administracija bez ulaska u podatke. Klaster je bio dostupan, diskovi su bili u redu, čvorovi su bili u redu.

Nismo znali da smo ovu naredbu dobili zbog strašnog nesporazuma u njihovom timu

Menadžer je bio nezadovoljan što je Clickhouse spor i podaci su se ponekad gubili. Svojoj servisnoj stanici je postavio zadatak da to otkrije. Shvatio je to najbolje što je mogao i zaključio da samo trebamo automatizirati Clickhouse - to je sve. Ali kako je ubrzo postalo jasno, tim devopova im uopšte nije bio potreban.

Ispostavilo se da je sve ovo veoma, veoma bolno. A najvrednije je to što je to bilo na moj rođendan.

petak uveče. Napravio sam rezervaciju u svom omiljenom wine baru i pozvao drugare.

Skoro pred odlazak dobijemo zadatak da napravimo alter, završimo ga, sve je u redu. Izmjena je prošla, klikhouse potvrđeno. Već idemo u lokal, a oni nam pišu da nema dovoljno podataka. Računali smo da je sve izgleda dovoljno. I otišli su da slave.

U restoranu je bilo bučno petkom. Nakon što smo naručili piće i hranu, izvalili smo se na sofe. Sve ovo vrijeme, moja opuštenost je polako bila preplavljena porukama. Napisali su nešto o nedostatku podataka. Mislio sam - jutro je mudrije od večeri. Posebno danas.

Bliže jedanaest su počeli da zovu. Bio je to šef kompanije... „Vjerovatno je odlučio da mi čestita“, pomislio sam vrlo oklijevajući i podigao slušalicu.

I čuo sam nešto poput: „Zeznuo si naše podatke! Plaćam te, ali ništa ne radi! Vi ste bili odgovorni za sigurnosne kopije, a niste uradili ništa! Hajde da to popravimo!" - samo još grublje.

- Znaš šta, odjebi! Danas mi je rođendan, a sad ću piti, a ne baviti se vašim lipanjskim domaćim proizvodima od sranja i štapa!

To nisam rekao. Umjesto toga, izvadio sam laptop i krenuo na posao.

Ne, bombardovao sam, bombardovao sam kao pakao! U razgovor je ulio zajedljivo "rekao sam ti" - jer rezervna kopija, koja uopće nije bila rezervna, - naravno, nije ništa spasila.

Momci i ja smo smislili kako da ručno zaustavimo snimanje i provjerimo sve. Zapravo smo se pobrinuli da neki od podataka nisu napisani.

Prestali smo sa snimanjem i prebrojali događaje koji su tamo bili po danu. Učitali su više podataka, od kojih samo trećina nije zabilježena. Tri krhotine sa po 2 replike. Ubacite 100.000 redova - 33.000 se ne evidentira.

Nastala je potpuna konfuzija. Svi su naizmjence govorili jedni drugima da odjebu: tamo je prvi otišao Lenya, a zatim ja i osnivač kompanije. Samo je servis koji se pridružio pokušao da preusmeri naše vičuće pozive i prepisku ka pronalaženju rešenja za problem.

Niko nije razumeo šta se zaista dešava

Momci i ja smo jednostavno bili oduševljeni kada smo shvatili da trećina svih podataka ne samo da nije snimljena, već je izgubljena! Ispostavilo se da je red u kompaniji bio sljedeći: nakon umetanja podaci su neopozivo izbrisani, događaji su protraćeni u serijama. Zamišljao sam kako će Sergej sve ovo pretvoriti u izgubljene rublje.

Moj rođendan je također bačen u smeće. Sjeli smo za šank i generirali ideje, pokušavajući riješiti zagonetku koja nam je bila bačena. Razlog za Clickhouseov pad nije bio očigledan. Možda je u pitanju mreža, možda Linux podešavanja. Da, šta god hoćete, bilo je dovoljno hipoteza.

Nisam položio zakletvu programera, ali bilo je nepošteno napustiti momke s druge strane linije - čak i ako su nas krivili za sve. Bio sam 99% siguran da problem nije u našim odlukama, ne na našoj strani. Šansa od 1% da smo zeznuli gorjela je od tjeskobe. Ali bez obzira na kojoj je strani problem, morao se popraviti. Ostavljanje kupaca, bez obzira ko su, sa tako strašnim curenjem podataka je previše okrutno.

Za stolom u restoranu smo radili do tri ujutro. Dodali smo događaje, ubacili odabir i krenuli da popunimo praznine. Kada zeznete podatke, to radite ovako: uzmete prosječne podatke za prethodne dane i ubacite ih u zeznute.

Poslije tri sata ujutro, prijatelj i ja smo otišli do moje kuće i naručili pivo sa pijace alkohola. Sjedio sam sa laptopom i Clickhouse problemi, prijatelj mi je nešto govorio. Kao rezultat toga, nakon sat vremena on se uvrijedio što radim i ne pijem pivo s njim i otišao. Klasika - bio sam Devopsov prijatelj.

Do 6 ujutro sam ponovo kreirao tabelu i podaci su počeli da preplavljuju. Sve je funkcionisalo bez ikakvih gubitaka.

Onda je bilo teško. Svi su jedni druge krivili za gubitak podataka. Da se dogodila nova greška, siguran sam da bi došlo do pucnjave

U tim svađama konačno smo počeli da shvatamo – u kompaniji su mislili da smo mi momci koji rade sa podacima i prate strukturu tabela. Pobrkali su administratore sa dilerima. I došli su da nas pitaju nešto drugačije od admina.

Njihova glavna zamjerka je - koji vrag, bili ste odgovorni za sigurnosne kopije i niste ih radili kako treba, nastavili ste da trošite podatke. I sve to sa prostirkama za premotavanje.

Hteo sam pravdu. Iskopao sam prepisku i priložio screenshot svih, gdje ih Leonid svom snagom tjera da naprave sigurnosnu kopiju koja je napravljena. Njihov servis je stao na našu stranu nakon mog telefonskog poziva. Kasnije je Lenya priznao svoju krivicu.

Šef kompanije, naprotiv, nije želio da krivi svoje ljude. Snimke ekrana i riječi nisu imale utjecaja na njega. Smatrao je da, pošto smo mi ovdje stručnjaci, moramo sve uvjeravati i insistirati na svojoj odluci. Očigledno, naš zadatak je bio da naučimo Lenju i, štoviše, zaobiđemo njega, koji je imenovan za voditelja projekta, da dođe do glavne stvari i lično mu izlije sve svoje sumnje u koncept rezervnih kopija.

Čavrljanje je odisalo mržnjom, skrivenom i neskrivenom agresijom. Nisam znao šta da radim. Sve je stalo. A onda su mi savjetovali najlakši način - da napišem ličnu poruku menadžeru i dogovorim sastanak s njim. Vasja, ljudi u stvarnom životu nisu tako brzi kao u ćaskanju. Šef mi je na poruku odgovorio: dođi, nema pitanja.

Bio je to najstrašniji sastanak u mojoj karijeri. Moj saveznik od klijenta - STO - nije mogao naći vremena. Otišao sam na sastanak sa šefom i Lenom.

Iznova i iznova sam u glavi ponavljao naš mogući dijalog. Uspeo sam da stignem veoma rano, pola sata unapred. Počeo sam da se nerviram, popušio sam 10 cigareta, shvatio sam, to je to - jebeno sam. Neću ih moći uvjeriti. I ušao je u lift.

Dok je ustajao, toliko je snažno udario upaljač da ga je razbio.

Kao rezultat toga, Lenya nije bio na sastanku. I odlično smo razgovarali o svemu sa šefom! Sergej mi je pričao o svom bolu. Nije želio da "automatizira Clickhouse" - želio je "da upiti funkcioniraju".

Nisam video kozu, ali dobrog momka, zabrinut za svoja posla, uronjen u posao 24/7. Ćaskanje nas često privlači negativce, nitkove i glupe ljude. Ali u životu su to ljudi poput vas.

Sergeju nije trebalo nekoliko devopova za iznajmljivanje. Ispostavilo se da je problem koji su imali mnogo veći.

Rekao sam da mogu da rešim njegove probleme - to je sasvim drugi posao, a ja imam prijatelja koji radi za to. Da smo od početka znali da je ovo dogovor za njih, mnogo bismo toga izbjegli. Kasno je, ali shvatili smo da je problem u lošem upravljanju podacima, a ne u infrastrukturi.

Rukovali smo se, podigli su nam platu dva i po puta, ali pod uslovom da ja preuzmem apsolutno cijelu zbrku sa njihovim podacima i Clickhouseom za sebe. U liftu sam komunicirao s tim istim DI tipom Maxom i povezao ga s poslom. Trebalo je lopatom otkopati cijeli grozd.

U usvojenom projektu bilo je mnogo smeća. Počevši od spomenutog “backup-a”. Ispostavilo se da ovaj isti "backup" klaster nije izoliran. Sve su testirali na njemu, ponekad čak i pustili u proizvodnju.

Naši interni programeri kreirali su svoj vlastiti umetač podataka. Radio je ovako: skupio je fajlove, pokrenuo skriptu i spojio podatke u tabelu. Ali glavni problem je bio što je ogromna količina podataka prihvaćena za jedan jednostavan zahtjev. Zahtjev je spajao podatke svake sekunde. Sve radi jednog broja - iznosa po danu.

In-house programeri su pogrešno koristili alat za analizu. Otišli su do grafana i napisali svoju kraljevsku molbu. Uploadovao je podatke 2 sedmice. Ispostavilo se da je to prekrasan grafikon. Ali u stvarnosti, zahtjev za podacima je bio svakih 10 sekundi. Sve se to gomilalo u redu jer Clickhouse jednostavno nije uzeo obradu. Tu se krio glavni razlog. U Grafani ništa nije radilo, zahtjevi su stajali u redu, a stalno su pristizali stari, nebitni podaci.

Ponovo smo konfigurisali klaster, ponovo uradili umetanje. In-house programeri su ponovo napisali svoj "inserter" i on je počeo ispravno dijeliti podatke.

Max je izvršio potpunu reviziju infrastrukture. Izložio je plan za prelazak na punopravni backend. Ali to kompaniji nije odgovaralo. Od Maxa su očekivali magičnu tajnu koja će im omogućiti da rade na starinski način, ali samo efikasno. Lenja je i dalje bio zadužen za projekat i ništa nije naučio. Od svega ponuđenog, opet je izabrao svoju alternativu. Kao i uvijek, ovo je bila najselektivnija... hrabra odluka. Lenya je vjerovao da njegova kompanija ima poseban put. Trnovit i pun santi leda.

Zapravo, tu smo se rastali – uradili smo šta smo mogli.

Puni znanja i mudrosti iz ove istorije, otvorili smo sopstveni biznis i formirali nekoliko principa za sebe. Nikada sada nećemo početi raditi na isti način kao tada.

DJ Max nam se pridružio nakon ovog projekta i još uvijek odlično sarađujemo. Slučaj Clickhouse naučio me je kako provesti potpunu i temeljitu reviziju infrastrukture prije početka rada. Razumijemo kako sve funkcionira i tek onda prihvatamo zadatke. I ako smo ranije odmah žurili da održavamo infrastrukturu, sada prvo radimo jednokratni projekat, koji nam pomaže da shvatimo kako da je dovedemo u radno stanje.

I da, izbjegavamo projekte sa usranom infrastrukturom. Pa makar i za mnogo novca, makar i iz prijateljstva. Neisplativo je voditi bolesne projekte. Shvatanje ovoga pomoglo nam je da rastemo. Ili jednokratni projekat dovođenja infrastrukture u red pa ugovor o održavanju, ili samo proletimo. Pored drugog sante leda.

PS Dakle, ako imate pitanja o vašoj infrastrukturi, Slobodno podnesite zahtjev.

Imamo 2 besplatne revizije mjesečno, možda će vaš projekat biti jedan od njih.

izvor: www.habr.com

Dodajte komentar