
Iată o poveste care mi-a schimbat pentru totdeauna abordarea asupra muncii devops. În vremurile pre-Covid, cu mult, cu mult înaintea lor, când băieții și cu mine tocmai ne planificam propria afacere și făceam freelancing pe comenzi aleatorii, o ofertă a căzut în coșul meu.
Compania care a scris acest lucru a fost o companie de analiză a datelor. Ea a procesat mii de cereri zilnic. Au venit la noi cu cuvintele: băieți, avem ClickHouse și vrem să-i automatizăm configurarea și instalarea. Vrem ca Ansible, Terraform, Docker și ca totul să fie stocat în Git. Vrem un grup de patru noduri cu câte două replici fiecare.
Este o solicitare standard, există zeci de ele și aveți nevoie de o soluție standard la fel de bună. Am spus „ok”, iar după 2-3 săptămâni totul era gata. Au acceptat postul și au început să se mute într-un nou cluster Clickhouse folosind utilitarul nostru.
Nimeni nu a vrut sau nu a știut să se joace cu Clickhouse. Apoi ne-am gândit că aceasta este principala lor problemă și, prin urmare, stația de service a companiei a dat pur și simplu voie echipei mele să automatizeze cât mai mult lucrul, pentru a nu mai merge eu acolo niciodată.
Am însoțit mutarea, au apărut și alte sarcini - crearea de copii de siguranță și monitorizare. În același moment, benzinăria acestei companii a fuzionat cu un alt proiect, lăsându-ne comandant pe unul de-al nostru - Leonid. Lenya nu era un tip foarte talentat. Un dezvoltator simplu care a fost pus brusc la conducerea Clickhouse. Se pare că aceasta a fost prima lui misiune de a gestiona ceva, iar onoarea copleșitoare l-a făcut să se simtă uimit.
Împreună ne-am propus să facem copii de rezervă. Am sugerat să faceți imediat o copie de rezervă a datelor originale. Doar ia-l, fermoar-l și aruncă-l elegant într-un c3. Datele brute sunt aur. A existat o altă opțiune - să faceți copii de rezervă pentru tabelele în Clickhouse, folosind o înghețare și copiere. Dar Lenya a venit cu propria lui soluție.
El a anunțat că avem nevoie de un al doilea cluster Clickhouse. Și de acum înainte vom scrie date în două clustere - principal și de rezervă. Îi spun, Lenya, nu va fi o copie de rezervă, ci o replică activă. Și dacă datele încep să se piardă în producție, același lucru se va întâmpla și cu backup-ul.
Dar Lenya a apucat strâns volanul și a refuzat să-mi asculte argumentele. Am stat de vorbă cu el mult timp în chat, dar nu era nimic de făcut - Lenya era responsabilă de proiect, doar am fost angajați copii de pe stradă.
Am monitorizat starea clusterului și am taxat doar munca administratorilor. Administrare Clickhouse pură, fără a intra în date. Clusterul era disponibil, discurile erau în regulă, nodurile erau în regulă.
Nu știam că am primit această comandă din cauza unei neînțelegeri teribile în cadrul echipei lor
Managerul era nemulțumit că Clickhouse era lent și că uneori se pierdeau date. Și-a pus stația de service sarcina de a-și da seama. Și-a dat seama cât a putut de bine și a concluzionat că trebuie doar să automatizăm Clickhouse - asta e tot. Dar, după cum a devenit clar, nu aveau deloc nevoie de o echipă de devopți.
Toate acestea s-au dovedit a fi foarte, foarte dureroase. Și cel mai jignitor a fost că era de ziua mea.
Vineri seara. Am făcut o rezervare la barul meu de vin preferat și i-am invitat pe prieteni.
Aproape înainte de a pleca, primim o sarcină de a crea un alter, o completăm, totul este în regulă. Alter a trecut, clickhouse confirmat. Deja mergem la bar, iar ei ne scriu că nu sunt suficiente date. Am calculat că totul pare să fie suficient. Și au plecat să sărbătorească.
Restaurantul era zgomotos într-o zi de vineri. După ce am comandat băuturi și mâncare, ne-am odihnit pe canapele. În tot acest timp, slăbiciunea mea a fost inundată încet de mesaje. Au scris ceva despre lipsa de date. M-am gândit - dimineața este mai înțeleaptă decât seara. Mai ales astăzi.
Mai aproape de unsprezece au început să sune. Era șeful companiei... „Probabil că a decis să mă felicite”, m-am gândit foarte ezitant și am ridicat telefonul.
Și am auzit ceva de genul: „Ne-ați stricat datele! Te plătesc, dar nimic nu funcționează! Ai fost responsabil pentru copiile de rezervă și nu ai făcut nimic! Să o reparăm!” - doar chiar mai nepoliticos.
- Știi ce, dă-i naiba! Astăzi este ziua mea de naștere, iar acum voi bea și nu mă voi angaja în produsele tale de casă din iunie din porcării și bețișoare!
Asta nu am spus. În schimb, mi-am scos laptopul și m-am apucat de treabă.
Nu, am bombardat, am bombardat ca naiba! El a turnat caustic „Ți-am spus așa” în chat - pentru că backupul, care nu era deloc o copie de rezervă, - desigur, nu a salvat nimic.
Băieții și cu mine ne-am dat seama cum să oprim manual înregistrarea și să verificăm totul. De fapt, ne-am asigurat că unele dintre date nu au fost scrise.
Am oprit înregistrarea și am numărat numărul de evenimente care au fost acolo pe zi. Au încărcat mai multe date, dintre care doar o treime nu a fost înregistrată. Trei cioburi cu câte 2 replici fiecare. Inserați 100.000 de rânduri - 33.000 nu sunt înregistrate.
Era confuzie totală. Toți și-au spus unul altuia să ia dracu pe rând: Lenya a mers prima acolo, urmată de mine și de fondatorul companiei. Doar benzinăria care s-a alăturat a încercat să ne redirecționeze apelurile strigăte și corespondența către găsirea unei soluții la problemă.
Nimeni nu a înțeles ce se întâmplă cu adevărat
Băieții și cu mine am fost pur și simplu uimiți când ne-am dat seama că o treime din toate datele nu numai că nu au fost înregistrate, ci s-au pierdut! S-a dovedit că comanda în companie a fost următoarea: după inserare, datele au fost șterse irevocabil, evenimentele au fost irosite în loturi. Mi-am imaginat cum Serghei va transforma toate acestea în ruble pierdute.
Ziua mea de naștere a fost și ea aruncată la gunoi. Ne-am așezat la bar și am generat idei, încercând să rezolvăm puzzle-ul care ne fusese aruncat. Motivul căderii lui Clickhouse nu era evident. Poate că este rețea, poate sunt setările Linux. Da, orice vrei, au fost destule ipoteze.
Nu am depus jurământul dezvoltatorului, dar a fost necinstit să-i abandonez pe băieții de la celălalt capăt al firului - chiar dacă ne-au învinovățit pentru tot. Eram 99% sigur că problema nu stă în deciziile noastre, nu de partea noastră. Șansa de 1% că am încurcat era arsă de anxietate. Dar indiferent de ce parte era problema, trebuia remediată. Lăsarea clienților, indiferent cine sunt aceștia, cu o astfel de scurgere de date groaznică este prea crud.
Am lucrat la masa restaurantului până la trei dimineața. Am adăugat evenimente, am inserat select și am plecat să umplem golurile. Când înșurubați datele, așa procedați: luați mediile de date pentru zilele anterioare și le introduceți în cele înșelate.
După trei dimineața, eu și prietenul meu ne-am dus acasă și am comandat o bere de la piața de alcool. Stăteam cu un laptop și probleme cu Clickhouse, un prieten îmi spunea ceva. Drept urmare, după o oră a fost jignit că lucrez și nu beau bere cu el și a plecat. Clasic - Am fost prieten cu Devops.
Pe la 6 dimineața, am recreat din nou tabelul și datele au început să se aflu. Totul a funcționat fără pierderi.
Apoi a fost greu. Toată lumea s-a învinuit reciproc pentru pierderea datelor. Dacă s-ar fi întâmplat o nouă eroare, sunt sigur că ar fi avut loc un schimb de focuri
În aceste lupte, am început în sfârșit să înțelegem - compania credea că noi suntem băieții care lucrează cu date și monitorizează structura tabelelor. Au confundat administratorii cu dealerii. Și au venit să ne întrebe ceva diferit de administratorii.
Principala lor plângere este - ce naiba, ai fost responsabil pentru copiile de siguranță și nu le-ai făcut corect, ai continuat să irosești datele. Și toate acestea cu covorașe de derulare.
Am vrut dreptate. Am dezgropat corespondența și am atașat capturi de ecran ale tuturor, unde Leonid îi forțează cu toată puterea să facă backup care a fost făcut. Serviciul lor a luat partea noastră după apelul meu. Mai târziu, Lenya și-a recunoscut vinovăția.
Șeful companiei, dimpotrivă, nu a vrut să-și învinovățească oamenii. Capturile de ecran și cuvintele nu au avut niciun efect asupra lui. El credea că, din moment ce suntem experți aici, trebuie să convingem pe toată lumea și să insistăm asupra deciziei noastre. Aparent, sarcina noastră a fost să o învățăm pe Lenya și, în plus, să-l ocolim, care a fost numit manager de proiect, să ajungă la lucrul principal și să-i revărsăm personal toate îndoielile cu privire la conceptul de copii de rezervă.
Conversația curgea de ură, de agresivitate ascunsă și neascunsă. Nu știam ce să fac. Totul s-a oprit. Și apoi m-au sfătuit cel mai simplu mod - să scriu un mesaj personal managerului și să aranjez o întâlnire cu el. Vasya, oamenii din viața reală nu sunt la fel de rapizi precum sunt în chat. Șeful a răspuns la mesajul meu: vino, fără întrebare.
A fost cea mai înfricoșătoare întâlnire din cariera mea. Aliatul meu de la client - STO - nu a găsit timpul. Am fost la întâlnirea cu șeful și Lena.
Din nou și din nou am reluat posibilul nostru dialog în capul meu. Am reușit să ajung foarte devreme, cu jumătate de oră înainte. Am început să devin nervos, am fumat 10 țigări, am înțeles, asta e - sunt dracului de singură. Nu voi reuși să-i conving. Și a intrat în lift.
În timp ce se ridica, a lovit bricheta atât de tare încât a rupt-o.
Drept urmare, Lenya nu a fost la întâlnire. Și am avut o conversație grozavă despre tot cu șeful! Serghei mi-a spus despre durerea lui. Nu a vrut să „automatizeze Clickhouse” – a vrut să „facă interogările să funcționeze”.
Nu am văzut o capră, ci un tip bun, îngrijorat de afacerile lui, cufundat în muncă 24/7. Chatul ne atrage adesea răufăcători, ticăloși și oameni proști. Dar în viață aceștia sunt oameni la fel ca tine.
Serghei nu avea nevoie de câțiva devopți pentru angajare. Problema pe care ei s-a dovedit a fi mult mai mare.
I-am spus că aș putea să-i rezolv problemele - este doar o muncă complet diferită și am un prieten care lucrează pentru asta. Dacă am fi știut de la început că aceasta este o afacere pentru ei, am fi evitat multe. E târziu, dar ne-am dat seama că problema stă în gestionarea proastă a datelor, nu în infrastructură.
Ne-am strâns mâna, ne-au mărit salariul de două ori și jumătate, dar cu condiția să iau absolut toată mizeria cu datele lor și cu Clickhouse pentru mine. În lift, am comunicat cu același tip DI Max și l-am conectat la serviciu. A fost necesar să trântiți cu lopata întregul ciorchine.
A fost mult gunoi în proiectul adoptat. Începând cu „backup-ul” menționat. S-a dovedit că același cluster „de rezervă” nu a fost izolat. Au testat totul pe el, uneori chiar punându-l în producție.
Dezvoltatorii noștri interni și-au creat propriul dispozitiv personalizat de inserare a datelor. A lucrat astfel: a grupat fișierele, a rulat scriptul și a îmbinat datele într-un tabel. Dar principala problemă a fost că o cantitate imensă de date a fost acceptată pentru o singură solicitare. Cererea s-a alăturat datelor în fiecare secundă. Toate de dragul unui număr - suma pe zi.
Dezvoltatorii interni au folosit instrumentul de analiză incorect. Au mers la grafana și și-au scris cererea regală. A încărcat date timp de 2 săptămâni. S-a dovedit a fi un grafic frumos. Dar, în realitate, cererea de date a fost la fiecare 10 secunde. Toate acestea s-au acumulat într-o coadă, deoarece Clickhouse pur și simplu nu a scos procesarea. Aici a fost ascuns motivul principal. Nimic nu a funcționat în Grafana, cererile stăteau la coadă, iar date vechi, irelevante, soseau în mod constant.
Am reconfigurat clusterul, am refăcut inserția. Dezvoltatorii interni și-au rescris „insertorul” și a început să distribuie corect datele.
Max a efectuat un audit complet al infrastructurii. El a schițat un plan de tranziție la un backend cu drepturi depline. Dar acest lucru nu s-a potrivit companiei. Se așteptau de la Max un secret magic care să le permită să lucreze în mod veche, dar numai eficient. Lenya era încă responsabil de proiect și nu a aflat nimic. Din tot ce i s-a oferit, și-a ales din nou alternativa. Ca întotdeauna, aceasta a fost cea mai selectivă... îndrăzneață decizie. Lenya credea că compania lui are o cale specială. Spinos și plin de aisberguri.
De fapt, acolo ne-am despărțit – am făcut tot ce am putut.
Plini de cunoștințe și înțelepciune din această istorie, ne-am deschis propria afacere și ne-am format câteva principii pentru noi înșine. Nu vom începe niciodată să lucrăm la fel acum ca atunci.
DJ Max ni s-a alăturat după acest proiect și încă lucrăm grozav împreună. Cazul Clickhouse m-a învățat cum să efectuez un audit complet și amănunțit al infrastructurii înainte de a începe lucrul. Înțelegem cum funcționează totul și abia apoi acceptăm sarcinile. Și dacă mai devreme ne-am grăbi imediat să întreținem infrastructura, acum facem mai întâi un proiect unic, care ne ajută să înțelegem cum să o aducem în stare de funcționare.
Și da, evităm proiectele cu infrastructură proastă. Chiar dacă pentru mulți bani, chiar dacă din prietenie. Este neprofitabil să conduci proiecte bolnave. Realizarea acestui lucru ne-a ajutat să creștem. Fie un proiect unic pentru a pune în ordine infrastructura și apoi un contract de întreținere, fie pur și simplu zburăm. Pe lângă un alt aisberg.
PS Deci, dacă aveți întrebări despre infrastructura dvs., .
Avem 2 audituri gratuite pe lună, poate proiectul tău va fi unul dintre ele.
Sursa: www.habr.com
