Kým všetci oslavovali moje narodeniny, ja som do rána opravoval klaster — a vývojári na mňa hádzali svoje chyby.

Kým všetci oslavovali moje narodeniny, ja som do rána opravoval klaster — a vývojári na mňa hádzali svoje chyby.

Tu je príbeh, ktorý navždy zmenil môj prístup k práci v DevOps. Ešte pred pandémiou, dávno predtým, keď sme s chlapcami len začali rozmýšľať o vlastnom podnikaní a pracovali sme na náhodných projektoch, dostal som do telefónu jednu ponuku.

Spoločnosť, ktorá ponuku poslala, sa zaoberala analýzou dát. Každý deň spracovávala tisíce požiadaviek. Prišli k nám so slovami: chlapci, máme ClickHouse a chceme automatizovať jeho nastavenie a inštaláciu. Chceme Ansible, Terraform, Docker a aby to všetko bolo uložené v Gite. Chceme klaster zo štyroch uzlov s dvoma replikami v každom.

Štandardná požiadavka, akých sú desiatky, a potrebujeme takisto dobré štandardné riešenie. Povedali sme „okej“ a za 2-3 týždne bolo všetko pripravené. Prácu prijali a začali sa presúvať na nový klaster ClickHouse s pomocou našej utility.

Nikto v ich tíme nechcel a nevedel sa zaoberať ClickHouse. Vtedy sme si mysleli, že to je ich hlavný problém, a preto CTO spoločnosti jednoducho dal povel mojej partii maximalizovať automatizáciu práce, aby sa tam už nikdy nemuseli mami dostať.

Sprievodili sme presun, objavili sa ďalšie úlohy – nastaviť zálohovanie a monitoring. V tom istom momente sa CTO tejto spoločnosti presunul na iný projekt, pričom nám za veliteľa nechal jedného z jeho podriadených – Leonida. Leňa bol obyčajný vývojár, ktorého zrazu vymenovali za šéfa ClickHouse. Zdalo sa, že to bola jeho prvá úloha niečím viesť, a od návalovej cti sa mu prejavila hviezdná choroba.

Spoločne sme sa pustili do zálohovania. Navrhol som zálohovať priamo zdrojové dáta. Jednoducho ich zobrať, zipsovať a elegantne uložiť niekam na S3. Zdrojové dáta sú zlato. Bolo aj ďalšie riešenie – zálohovať samotné tabuľky v ClickHouse pomocou freeze a kopírovania. Ale Leňa prišiel s vlastným riešením.

Vyhlásil, že potrebujeme druhý klaster ClickHouse. A od tejto chvíle budeme zapisovať dáta na dva klastre – hlavný a zálohový. Hovorím mu, Leňa, výsledkom nebude záloha – ale aktívna replikácia. A ak sa dáta začnú strácať na produkcii, na tvojej zálohe bude to isté.

Ale Leňa sa pevne držal kormidla a odmietal počúvať moje argumenty. Dlho sme sa hádali v chate, ale nemali sme na výber – Leňa viedol projekt, my sme boli len najatí chlapci z ulice.

Sledovali sme za stavom klastrov a účtovali sme len za prácu adminov. Čisté administrovanie ClickHouse bez zasahovania do dát. Klastor bol dostupný, disky v poriadku, uzly v poriadku.

Ešte sme netušili, že sme dostali túto objednávku kvôli hroznému nedorozumeniu vo vnútri ich tímu.

Vedúci bol nespokojný, že ClickHouse funguje pomaly a občas dochádza k strate dát. Dal úlohu svojmu CTO, aby to vyriešil. Ten sa snažil, ako mohol, a dospel k záveru, že treba jednoducho automatizovať ClickHouse — a hotovo. Ale ako sa čoskoro ukázalo — potrebovali celkom niečo iné ako tím devops.

Všetko toto sa ukázalo byť veľmi bolestné. A najviac ma to mrzelo, pretože to bolo na moje narodeniny.

Piatok večer. Rezervoval som si stôl v obľúbenom vinárskom bare a zavolal som kamarátov.

Takmer pred odchodom nám prišla úloha vykonať alternatívu, splnili sme ju, všetko v poriadku. Alternatíva prešla, ClickHouse to potvrdil. Už sme sa chystali do baru, keď nám napísali, že chýbajú dáta. Spočítali sme — zdalo sa, že je všetko dostatočné. A odišli sme oslavovať.

V reštaurácii bolo klasicky piatkové hluko. Po objednaní drinkov a jedla sme sa pohodlne usadili na pohovkách. Počas celého tohto času mi Slack pomaly zahlcovali správy. Písali niečo o nedostatku dát. Pomyslel som si — ráno je múdrejšie večera. Obzvlášť dnes.

Kým sa priblížila jedenásta, začali už volať. Bol to vedúci firmy… „Asi ma chce zablahoželať,” — pomyslel som si veľmi neistým tónom a zodvihol som sluchátko.

A počul som niečo v duchu: „Zlyhali ste s našimi dátami! Platím vám, ale nič nefunguje! Boli ste zodpovední za zálohy, a neurobili ste nič! Opravené to!” — len omnoho hrubšie.

— Vieš čo, choď do čerta! Dnes mám narodeniny a teraz sa chystám piť, nie sa zaoberať vašimi amatérskymi výtvormi z blata a tyčiniek!

Takto som to nepovedal. Namiesto toho som vytiahol notebook a začal pracovať.

Nie, fakt som bol nasratý, bol som fakt nasratý! Bryždil som v chatovej skupine s ironickým „veď som hovoril“ — pretože záloha, ktorá vôbec nebola zálohou, samozrejme, nič nezachránila.

My s chlapcami sme vymysleli, ako ručne zastaviť nahrávanie a všetko skontrolovať. Skutočne sme sa uistili, že časť dát sa nenahráva.

Zastavili sme záznam a spočítali počet udalostí, ktoré sa tam za deň nachádzajú. Pridali sme ďalšie údaje, z ktorých sa nezaznamenala iba tretina. Tri shardy po 2 repliky. Vložíš 100.000 riadkov — 33.000 sa nezaznamená.

Panovala úplná chaos. Všetci sa navzájom posielali na hovno po poradí: prvý tam šiel Leňa, za ním som nasledoval ja a zakladateľ firmy. Iba novo pripojený CTO sa snažil z našich hovorov s krikmi a korešpondenciou vyviesť smer k riešeniu problému.

Nikto pritom nevedel, čo sa naozaj deje.

My s chlapcami sme sa jednoducho ozišli, keď sme zistili, že tretina všetkých údajov sa nielenže nezaznamenávala — ona sa stratila! Ukázalo sa, že poriadok vo firme bol taký: po vložení sa údaje nenávratne vymazávali a udalosti sa strácali po kusoch. Predstavil som si, ako Sergej konvertuje toto všetko na nevyplatené ruble.

Aj moje narodeniny boli odoslané na smetisko. Sedeli sme v bare a generovali sme nápady, snažiac sa vyriešiť daný rébus. Dôvod pádu ClickHouse nebol očividný. Možno je to sieť, možno ide o nastavenia Linuxu. Alebo niečo iné, hypotéz zaznelo dosť.

Nesľúbil som si being developer, ale bolo by neetické opustiť chlapcov na druhej strane drôtu — aj keď nás vo všetkom obviňovali. Bol som na 99 % presvedčený, že problém netkvel v našich riešeniach, nie na našej strane. 1 % šance, že sme sa predsa len pomýlili, ma desilo. Ale nech bola chyba na ktorejkoľvek strane — muselo sa to opraviť. Nechať klientov, akíkoľvek boli, s takým strašným únikom údajov — to je príliš kruté.

Do tretej hodiny ráno sme pracovali za stolom reštaurácie. Vhadzovali sme udalosti, insert select — a šli sme zaplniť medzery. Keď si stratil údaje, robí sa to takto — vezmeš priemerné údaje za predchádzajúce dni a vložíš ich do stratených.

Po tretej hodine ráno sme s kamarátom išli ku mne domov, objednali sme si pivo z obchodu s alkoholom. Sedel som s notebookom a problémami ClickHouse, kamarát mi niečo rozprával. Nakoniec, po hodine sa urazil, že pracujem, a nie pijem pivo s ním, a odišiel. Klasika — bol som chvíľu priateľom DevOps.

Do 6. ráno som tabuľku znovu vytvoril a údaje sa začali narezávať. Všetko fungovalo bez strát.

Potom to bolo ťažké. Všetci sa navzájom obviňovali zo straty údajov. Ak by sa objavil nový bug, som si istý, že by sa začala prestrelka.

V týchto neporiadkoch sme konečne začali chápať — v spoločnosti si mysleli, že sme tí, ktorí pracujú s dátami a sledujú štruktúru tabuliek. Pomýlili si administrátorov s databázovými špecialistami. A prišli sa pýtať na nás rozhodne nie ako na administrátorov.

Ich hlavná výčitka — aký preboha, mali ste na starosti zálohy a neurobili ste ich poriadne, premeškali ste dáta. A to všetko s nadávkami a urážkami.

Chcel som spravodlivosť. Vykopal som komunikáciu a priložil všetky screenshoty, kde Leonid s plnou silou nariaďuje robiť takú zálohu, aká bola vytvorená. Ich CTO stál na našej strane po mojom telefonáte. Následne svoju vinu priznal aj Leonid.

Vedúci spoločnosti naopak nechcel obviňovať svojich. Screenshoty a slová na neho nepôsobili. Myslel si, že keď sme tu eksperti, mali sme všetkých presvedčiť a trvať na svojom rozhodnutí. Zrejme bolo našou úlohou naučiť Leonida a takisto obchádzať jeho, nominovaného vedúceho projektu, a preniknúť k hlavnému a jemu osobne povedať všetky naše pochybnosti o koncepcii záloh.

Chat pretekal nenávisťou, skrytou a otvorenou agresiou. Nevedel som, čo robiť. Všetko zašlo do slepej uličky. A tu mi odporučili najjednoduchší spôsob — napísať vedúcemu do súkromnej správy a dohodnúť si s ním stretnutie. Vasya, ľudia v reálnom živote nie sú takí drzý ako v chate. Na moju správu šéf odpovedal: príď, nie je problém.

To bolo najnepríjemnejšie stretnutie v mojej kariére. Môj spojenca od klienta — CTO — nemohol nájsť čas. Na stretnutie som šiel k šéfovi a Leonidovi.

Opakoval som si v hlave náš možný dialóg. Podarilo sa mi prísť výrazne skoro, o pol hodiny. Začal ma chovať nervozita, vykuřil som 10 cigariet. Chápal som, že všetko — som, sakra, sám. Nebudem ich presviedčať. A vkročil som do výťahu.

Kým som sa zdvíhal, tak som škriabal zapaľovačom, že som ho zlomil.

Nakoniec Leonida na stretnutí nebolo. A my sme sa skvele porozprávali s hlavným! Sergey mi rozprával o svojej bolesti. Nechcel «automatizovať ClickHouse» — chcel, «aby dopyty fungovali».

Nevidel som kozu, ale dobrého chlapca, ktorý sa stará o svoj biznis, ponoreného do práce 24/7. Chat nám častokrát vykresľuje darebákov, podvodníkov a hlupákov. Ale v skutočnosti sú to rovnakí ľudia ako ty.

Sergey nepotreboval iba pár devopsov na prenájom. Problém, ktorý mali, sa ukázal byť omnoho väčší.

Povedal som, že môžem vyriešiť jeho problémy — ibaže je to úplne iná práca, na ktorú mám známeho DB inžiniera. Keby sme sa od začiatku dozvedeli, že ide o tento projekt pre nich, mohli sme sa vyhnúť mnohému. Neskoro, ale pochopili sme, že problém bol v zlých údajoch, a nie v infraštruktúre.

Podali sme si ruky, cena sa zvýšila na dvojnásobok a pol, ale s podmienkou — ja preberám celý problém s ich údajmi a ClickHouse k sebe. V výťahu som sa spojil s tým istým DB inžinierom Maxom a zapojil ho do práce. Museli sme preladiť celý klaster.

V prijatom projekte bolo množstvo problémov. Začínajúc spomínaným „zálohovaním“. Ukázalo sa, že tento „zálohovací“ klaster nebol izolovaný. Testovalo sa tam všetko možné, niekedy sa dokonca dostávalo do produkcie.

Domáci programátori vymysleli svoj vlastný „vkladový“ nástroj na dáta. Fungoval takto: dávkoval súbory, spúšťal skript a vkladal údaje do tabuľky. Hlavný problém bol, že obrovské množstvo údajov sa spracovávalo pre jeden jednoduchý dopyt. Dotaz sa spojil s údajmi po sekundách. Všetko kvôli jednej číslovke — súčtu za deň.

Domáci programátori nesprávne používali analytický nástroj. Išli do Grafany a písali svoj kráľovský dopyt. Ten vyvážal údaje za 2 týždne. Vznikal krásny graf. Ale v skutočnosti dopyt údajov prebiehal každých 10 sekúnd. Všetko sa to zhromážďovalo v fronte, pretože ClickHouse jednoducho nezvládal spracovanie. Tu sa skrývala hlavná príčina. V Grafane nič nefungovalo, dopyty sa zasekávali v fronte, neustále prichádzali staré neaktuálne údaje.

Prekonfigurovali sme klaster, prepracovali sme vkladanie. Domáci programátori predpisovali svoj „vkladový“ nástroj, a ten začal správne shardovať údaje.

Max vykonal úplný audit infraštruktúry. Opísal plán prechodu na plnohodnotný backend. Ale to spoločnosť neuspokojilo. Čakali od Maxa magické tajomstvo, ktoré by im umožnilo pracovať starým spôsobom, ale efektívne. Za projekt naďalej zodpovedal Ljoňa, ktorý sa nič nenaučil. Z celého ponúknutého opäť zvolil svoju alternatívu. Ako vždy, bolo to to najodvážnejšie… smelé rozhodnutie. Ljoňa si myslel, že jeho spoločnosť má zvláštnu cestu. Kľukatú a plnú ľadových horských útvarov.

Vlastne sme sa tu rozlúčili — urobili sme, čo sme mohli.

So stacked with bumps, enriched by this experience, we started our business and established several principles for ourselves. Now, we never begin work the same way as we did back then.

After this project, developer Max joined us, and we are still working great together. The case with ClickHouse taught us to conduct a complete and thorough audit of the infrastructure before starting work. We delve into how everything works, and only then take on tasks. If before we had rushed to service the infrastructure, now we first do a one-off project that helps understand how to bring it into working condition.

And yes, we steer clear of projects with poor infrastructure. Even for big money, even if it's for friendship. Managing troubled projects is unprofitable. Realizing this has helped us grow. Either a one-off project to fix the infrastructure, followed by a maintenance contract, or we simply pass by. By another iceberg.

P.S. So, if you have questions about your infrastructure, neváhajte a zanechajte žiadosť.

We offer 2 free audits each month; maybe your project will be among them.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster