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

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

Ovo je priča koja je zauvijek promijenila moj pristup devops radu. Još u vrijeme prije Covida, puno, puno prije njih, kada smo dečki i ja tek planirali vlastiti posao i radili freelance po nasumičnim narudžbama, u košaricu mi je pala jedna ponuda.

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

To je standardni zahtjev, ima ih na desetke, a potrebno vam je jednako dobro standardno rješenje. Rekli smo “ok” i nakon 2-3 tjedna sve je bilo spremno. Prihvatili su posao i počeli se seliti u novi Clickhouse klaster pomoću našeg uslužnog programa.

Nitko nije htio niti znao petljati s Clickhouseom. Tada smo mislili da je to njihov glavni problem i stoga je servis tvrtke jednostavno dao zeleno svjetlo mom timu da maksimalno automatizira posao, kako više nikada ne bih otišao tamo.

Ispratili smo selidbu, pojavili su se drugi zadaci - postavljanje sigurnosnih kopija i nadzor. Istog trenutka servis ove tvrtke spojio se s drugim projektom, ostavljajući nam za zapovjednika jednog našeg - Leonida. Lenya nije bio baš nadaren tip. Jednostavan programer koji je iznenada postavljen na čelo Clickhousea. Čini se da mu je ovo bio prvi zadatak da upravlja nečim, a ogromna čast učinila ga je zapanjenim.

Zajedno smo krenuli u izradu sigurnosnih kopija. Predložio sam da odmah napravite sigurnosnu kopiju izvornih podataka. Samo ga uzmi, zakopčaj i elegantno ubaci u neki c3. Neobrađeni podaci su zlato. Postojala je još jedna opcija - napraviti sigurnosnu kopiju samih tablica u Clickhouseu, koristeći zamrzavanje i kopiranje. Ali Lenya je smislio vlastito rješenje.

Najavio je da nam treba drugi Clickhouse klaster. I od sada ćemo zapisivati ​​podatke u dva klastera - glavni i rezervni. Kažem mu, Lenya, to neće biti rezervna, nego aktivna replika. A ako se podaci počnu gubiti u proizvodnji, isto će se dogoditi s vašom sigurnosnom kopijom.

Ali Lenya je čvrsto zgrabio volan i odbio poslušati moje argumente. Dugo smo razgovarali s njim u chatu, ali nismo imali što raditi - Lenya je vodio projekt, mi smo bili samo unajmljena djeca s ulice.

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

Nismo ni znali da smo ovu narudžbu dobili zbog užasnog nesporazuma unutar njihovog tima

Upravitelj je bio nezadovoljan što je Clickhouse spor i podaci su se ponekad gubili. Postavio je svom servisu zadatak da to shvati. Shvatio je to najbolje što je mogao i zaključio da samo trebamo automatizirati Clickhouse - to je sve. No, kako je ubrzo postalo jasno, uopće im nije trebao tim devopa.

Sve se to pokazalo jako, jako bolno. A najuvredljivije je bilo to što je bilo na moj rođendan.

Petak navečer. Rezervirao sam u svom omiljenom vinskom baru i pozvao prijatelje.

Skoro prije odlaska dobivamo zadatak da napravimo alter, završimo ga, sve je ok. Promjena je prošla, Clickhouse potvrđen. Već idemo u birtiju, a oni nam pišu da nema dovoljno podataka. Računali smo da je izgleda sve dovoljno. I otišli su slaviti.

Restoran je bio bučan u petak. Nakon što smo naručili piće i hranu, izvalili smo se na sofe. Cijelo to vrijeme moju opuštenost polako su preplavljivale poruke. Napisali su nešto o nedostatku podataka. Mislio sam – jutro je mudrije od večeri. Posebno danas.

Bliže jedanaest počeli su zvati. Bio je to šef tvrtke... “Vjerojatno mi je odlučio čestitati”, pomislio sam vrlo oklijevajući i podignuo slušalicu.

I čuo sam nešto poput: “Zeznuo si naše podatke! Plaćam te, ali ništa ne ide! Bio si odgovoran za sigurnosne kopije, a nisi učinio ništa! Popravimo to!" - samo još grublje.

- Znaš što, odjebi van! Danas mi je rođendan, a sada ću piti, a ne baviti se vašim lipanjskim domaćim proizvodima od sranja i štapića!

To je ono što nisam rekao. Umjesto toga, izvadio sam laptop i bacio se na posao.

Ne, bombardirao sam, bombardirao sam kao vrag! U chat je izlio jetko "rekao sam ti" - jer sigurnosna kopija, koja uopće nije bila rezervna, - naravno, nije spasila ništa.

Dečki i ja smo smislili kako ručno zaustaviti snimanje i provjeriti sve. Zapravo smo se pobrinuli da neki podaci ne budu zapisani.

Prestali smo snimati i brojali smo događaje koji su bili tamo po danu. Učitali su više podataka, od kojih samo trećina nije zabilježena. Tri krhotine s po 2 replike. Umetnete 100.000 redaka - 33.000 se ne bilježi.

Nastala je potpuna zbrka. Svi su jedan drugome redom govorili da odjebemo: prvi je otišao Lenya, a za njim ja i osnivač tvrtke. Jedino je servis koji se uključio pokušao preusmjeriti naše vikajuće pozive i dopisivanje prema pronalasku rješenja problema.

Nitko nije shvaćao što se zapravo događa

Dečki i ja smo bili jednostavno oduševljeni kada smo shvatili da trećina svih podataka ne samo da nije zabilježena, nego je izgubljena! Pokazalo se da je red u tvrtki bio sljedeći: nakon umetanja podaci su se nepovratno brisali, događaji su se bacali u serijama. Zamišljao sam kako će Sergej sve to pretvoriti u izgubljene rublje.

I moj rođendan je bačen u smeće. Sjedili smo za šankom i stvarali ideje, pokušavajući riješiti zagonetku koja nam je bila bačena. Razlog Clickhouseova pada nije bio očit. Možda je do mreže, možda do postavki Linuxa. Da, kako god hoćete, dosta je bilo 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 bio, morao se popraviti. Preokrutno je ostaviti kupce, bez obzira tko su, s tako strašnim curenjem podataka.

Radili smo za restoranskim stolom do tri ujutro. Dodali smo događaje, umetnuli odabir i krenuli s popunjavanjem praznina. Kad zeznete podatke, to radite ovako: uzmete prosječne podatke za prethodne dane i ubacite ih u one zeznute.

Nakon tri sata ujutro, moj prijatelj i ja otišli smo do moje kuće i naručili pivo iz alkoholne tržnice. Sjedio sam s laptopom i Clickhouse problemima, prijatelj mi je nešto pričao. Kao rezultat toga, nakon sat vremena uvrijedio se što radim, a ne pijem pivo s njim, i otišao je. Classic - Bio sam prijatelj Devopsa.

Do 6 ujutro ponovno sam napravio tablicu i podaci su počeli pljuštati. Sve je radilo bez ikakvih gubitaka.

Tada je bilo teško. Svi su krivili jedni druge za gubitak podataka. Da se dogodio novi bug, siguran sam da bi došlo do pucnjave

U tim svađama konačno smo počeli shvaćati – tvrtka je mislila da smo mi tipovi koji rade s podacima i prate strukturu tablica. Pobrkali su administratore s trgovcima. I došli su nas pitati nešto drugo od admina.

Njihova glavna zamjerka je - dovraga, vi ste bili odgovorni za sigurnosne kopije i niste ih pravilno napravili, nastavili ste gubiti podatke. I sve to s otiračima za premotavanje.

Htio sam pravdu. Iskopao sam prepisku i priložio screenshotove svih, gdje ih Leonid svom snagom tjera da naprave backup koji je napravljen. Njihov servis je stao na našu stranu nakon mog telefonskog poziva. Kasnije je Lenya priznao krivnju.

Šef tvrtke, naprotiv, nije želio kriviti vlastite ljude. Slike zaslona i riječi nisu imale nikakav učinak na njega. Smatrao je da, budući da smo mi ovdje stručnjaci, moramo sve uvjeriti i inzistirati na svojoj odluci. Navodno je naš zadatak bio naučiti Lenyu i, štoviše, zaobići njega, koji je imenovan voditeljem projekta, da dođemo do glavne stvari i osobno mu izlijemo sve naše sumnje o konceptu sigurnosnih kopija.

Čavrljanje je odisalo mržnjom, skrivenom i neskrivenom agresijom. Nisam znala što da radim. Sve je stalo. A onda su mi savjetovali najlakši način - da napišem osobnu poruku upravitelju i dogovorim sastanak s njim. Vasya, ljudi u stvarnom životu nisu tako brzi kao u chatu. Na moju poruku šef je odgovorio: dođi, nema pitanja.

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

Uvijek iznova vrtio sam naš mogući dijalog u glavi. Uspio sam doći vrlo rano, pola sata unaprijed. Počeo sam biti nervozan, popušio sam 10 cigareta, shvatio sam, to je to - jebem se sam. Neću ih moći uvjeriti. I ušao je u dizalo.

Dok je ustao, udario je upaljačem tako jako da ga je razbio.

Kao rezultat toga, Lenya nije bio na sastanku. I super smo porazgovarali o svemu sa šefom! Sergej mi je pričao o svojoj boli. Nije želio "automatizirati Clickhouse" - želio je "učiniti da upiti funkcioniraju".

Nisam vidio kozu, već dobrog momka, zabrinutog za svoj posao, uronjen u posao 24/7. Chat nam često privuče negativce, nitkove i glupe ljude. Ali u životu to su ljudi kao i vi.

Sergej nije trebao nekoliko devopa za najam. Problem koji su imali pokazao se puno veći.

Rekao sam da mogu riješiti njegove probleme - to je samo sasvim drugačiji posao, a ja imam prijatelja koji radi za njega. Da smo od početka znali da je to dogovor za njih, puno toga bismo izbjegli. Kasno je, ali shvatili smo da je problem u lošem upravljanju podacima, a ne u infrastrukturi.

Rukovali smo se, povisili su nam plaću dva i pol puta, ali pod uvjetom da apsolutno cijelu zavrzlamu s njihovim podacima i Clickhouseom preuzmem na sebe. U liftu sam komunicirao s tim istim detektivom Maxom i spojio ga na posao. Trebalo je lopatom pregrnuti cijeli grozd.

U usvojenom projektu bilo je dosta smeća. Počevši od spomenutog “backupa”. Ispostavilo se da taj isti "rezervni" klaster nije izoliran. Sve su testirali na njemu, ponekad ga i pustili u proizvodnju.

Naši interni programeri stvorili su vlastiti prilagođeni alat za umetanje podataka. Radio je ovako: grupirao je datoteke, pokrenuo skriptu i spojio podatke u tablicu. Ali glavni problem je bio što je ogromna količina podataka bila prihvaćena za jedan jednostavan zahtjev. Zahtjev je spajao podatke svake sekunde. Sve radi jedne brojke - količine po danu.

Interni programeri pogrešno su koristili analitički alat. Otišli su do grafane i napisali svoju kraljevsku molbu. Učitavao je podatke 2 tjedna. Ispao je prekrasan graf. Ali u stvarnosti, zahtjev za podacima bio je 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.

Ponovno smo konfigurirali klaster, ponovno napravili umetanje. Interni razvojni programeri ponovno su napisali svoj "inserter" i on je ispravno počeo dijeliti podatke.

Max je proveo potpuni pregled infrastrukture. Iznio je plan za prijelaz na punopravni backend. Ali to nije odgovaralo tvrtki. Od Maxa su očekivali magičnu tajnu koja će im omogućiti da rade na staromodan način, ali samo učinkovito. Lenya je još uvijek bio zadužen za projekt, a 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 tvrtka ima poseban put. Trnovit i pun santi leda.

Zapravo, tu smo se rastali - učinili smo što smo mogli.

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

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

I da, izbjegavamo projekte s lošom infrastrukturom. Pa makar i za velike novce, makar i iz prijateljstva. Neisplativo je voditi bolesne projekte. Shvativši to pomoglo nam je rasti. Ili jednokratni projekt sređivanja infrastrukture pa ugovor o održavanju ili samo proletimo. Pokraj još jedne sante leda.

PS Dakle, ako imate pitanja o svojoj infrastrukturi, slobodno ostavite zahtjev.

Imamo 2 besplatne revizije mjesečno, možda će baš vaš projekt biti jedna od njih.

Izvor: www.habr.com

Dodajte komentar