Zatímco všichni slavili moje narozeniny, já opravoval cluster až do rána – a vývojáři sváděli své chyby na mě

Zatímco všichni slavili moje narozeniny, já opravoval cluster až do rána – a vývojáři sváděli své chyby na mě

Zde je příběh, který navždy změnil můj přístup k práci devops. V dobách před Covidem, dávno, dávno před nimi, když jsme s kluky jen plánovali vlastní podnikání a na volné noze na náhodných zakázkách, mi do košíku spadla jedna nabídka.

Společnost, která to napsala, byla společnost zabývající se analýzou dat. Denně vyřizovala tisíce žádostí. Přišli za námi se slovy: kluci, máme ClickHouse a chceme zautomatizovat jeho konfiguraci a instalaci. Chceme, aby Ansible, Terraform, Docker a to vše bylo uloženo v Gitu. Chceme shluk čtyř uzlů, každý se dvěma replikami.

Je to standardní požadavek, jsou jich desítky a potřebujete stejně dobré standardní řešení. Řekli jsme „ok“ a po 2-3 týdnech bylo vše připraveno. Přijali práci a začali se přesouvat do nového clusteru Clickhouse pomocí našeho nástroje.

Nikdo nechtěl ani nevěděl, jak se pohrávat s Clickhouse. Pak jsme si mysleli, že to je jejich hlavní problém, a proto servisní stanice společnosti prostě dala povolení mému týmu, aby práci co nejvíce zautomatizoval, abych tam už nikdy nešel.

Stěhování jsme doprovázeli, vyvstaly další úkoly – nastavení záloh a monitoring. Ve stejnou chvíli se servisní stanice této společnosti spojila s jiným projektem a nám zůstala jedna vlastní - Leonid - jako velitel. Lenya nebyla příliš nadaný chlap. Jednoduchý vývojář, který najednou dostal na starost Clickhouse. Zdá se, že to byl jeho první úkol něco řídit a díky ohromné ​​poctě se cítil ohromen hvězdami.

Společně jsme se pustili do vytváření záloh. Navrhoval jsem okamžitě zálohovat původní data. Stačí vzít, zazipsovat a elegantně hodit do nějaké c3. Surová data jsou zlato. Existovala další možnost – zálohovat samotné tabulky v Clickhouse pomocí zmrazení a kopírování. Lenya ale přišel s vlastním řešením.

Oznámil, že potřebujeme druhý cluster Clickhouse. A od této chvíle budeme zapisovat data do dvou clusterů – hlavního a záložního. Říkám mu, Lenyo, nebude to záloha, ale aktivní replika. A pokud se data začnou ztrácet v produkci, totéž se stane s vaší zálohou.

Lenya ale pevně chytila ​​volant a odmítla poslouchat mé argumenty. Dlouho jsme si s ním povídali na chatu, ale nedalo se nic dělat - Lenya měla na starosti projekt, byli jsme jen najaté děti z ulice.

Sledovali jsme stav clusteru a účtovali jsme pouze práci administrátorů. Čistá administrace Clickhouse bez přístupu k datům. Cluster byl dostupný, disky v pořádku, uzly v pořádku.

Netušili jsme, že jsme tento příkaz obdrželi kvůli hroznému nedorozumění v jejich týmu

Manažer byl nešťastný, že Clickhouse je pomalý a data se občas ztrácejí. Dal své čerpací stanici za úkol to zjistit. Přišel na to, jak nejlépe mohl, a dospěl k závěru, že potřebujeme zautomatizovat Clickhouse – to je vše. Ale jak se brzy ukázalo, tým devops vůbec nepotřebovali.

To vše se ukázalo jako velmi, velmi bolestivé. A nejurážlivější na tom bylo, že to bylo v den mých narozenin.

Páteční večer. Udělal jsem rezervaci ve své oblíbené vinárně a pozval jsem homies.

Téměř před odjezdem dostáváme úkol vytvořit alter, plníme, vše je v pořádku. Alter prošel, clickhouse potvrzen. Už jdeme do baru a píšou nám, že je málo dat. Spočítali jsme, že všeho se zdá být dost. A odešli slavit.

Restaurace byla v pátek hlučná. Když jsme si objednali pití a jídlo, uvelebili jsme se na pohovkách. Celou tu dobu mi pomalu zaplavovaly zprávy. Psali něco o nedostatku dat. Říkal jsem si – ráno je moudřejší večer. Zvláště dnes.

Kolem jedenácté začali volat. Byl to šéf společnosti... "Pravděpodobně se rozhodl poblahopřát mi," pomyslel jsem si velmi váhavě a zvedl telefon.

A slyšel jsem něco jako: „Podělal jsi naše data! Platím vám, ale nic nefunguje! Byli jste zodpovědní za zálohy a neudělali jste zatracenou věc! Pojďme to napravit!" - jen ještě drzejší.

- Víš co, vypadni! Dnes mám narozeniny a teď budu pít a nebudu se zabývat vašimi červnovými domácími produkty z keců a tyčinek!

To jsem neřekl. Místo toho jsem vytáhl notebook a dal se do práce.

Ne, bombardoval jsem, bombardoval jsem jako čert! Do chatu nalil žíravinu „Já ti to říkal“ – protože záloha, která zálohou vůbec nebyla – samozřejmě nic nezachránila.

S klukama jsme vymysleli, jak ručně zastavit nahrávání a vše zkontrolovat. Vlastně jsme se ujistili, že některá data nebyla zapsána.

Zastavili jsme nahrávání a spočítali počet událostí, které tam byly za den. Nahráli více dat, z nichž jen třetina nebyla zaznamenána. Tři střepy po 2 replikách. Vložíte 100.000 33.000 řádků – XNUMX XNUMX se nezaznamená.

Nastal úplný zmatek. Všichni si střídavě říkali, ať se vyprdnou: Lenya tam šla první, já a zakladatel firmy. Pouze čerpací stanice, která se připojila, se snažila odklonit naše křičící hovory a korespondenci k nalezení řešení problému.

Nikdo nechápal, co se vlastně děje

Kluci a já jsme byli prostě uneseni, když jsme si uvědomili, že třetina všech dat nejenže nebyla zaznamenána, ale byla ztracena! Ukázalo se, že pořadí ve firmě bylo následující: po vložení byla data nenávratně smazána, události byly dávkově promarněny. Představoval jsem si, jak to všechno Sergej přemění na ztracené rubly.

Moje narozeniny byly také vyhozeny do koše. Seděli jsme u baru a vytvářeli nápady a snažili se vyřešit hádanku, která na nás byla vržena. Důvod pádu Clickhouse nebyl zřejmý. Možná je to sítí, možná nastavením Linuxu. Ano, co chcete, hypotéz bylo dost.

Nesložil jsem vývojářskou přísahu, ale bylo nečestné opustit kluky na druhém konci linky – i když nás ze všeho obviňovali. Byl jsem si na 99% jistý, že problém nespočívá v našich rozhodnutích, ani na naší straně. 1% šance, že jsme to podělali, hořela úzkostí. Ale bez ohledu na to, na které straně byl problém, musel být opraven. Nechat zákazníky, ať už jsou kdokoli, s tak hrozným únikem dat, je příliš kruté.

Pracovali jsme u stolu v restauraci až do tří do rána. Přidali jsme události, vložili výběr a šli jsme vyplnit mezery. Když poděláte data, uděláte to takto: vezmete průměrná data za předchozí dny a vložíte je do těch podělaných.

Po třetí hodině ranní jsme šli s přítelem ke mně domů a objednali si pivo z alkoholového trhu. Seděl jsem s notebookem a problémy s Clickhouse, přítel mi něco vyprávěl. V důsledku toho se po hodině urazil, že pracuji a nepiju s ním pivo, a odešel. Klasika - Byl jsem přítelem Devops.

V 6 hodin ráno jsem znovu vytvořil tabulku a data se začala zaplavovat. Vše fungovalo beze ztrát.

Pak už to bylo těžké. Všichni se navzájem obviňovali ze ztráty dat. Kdyby se stala nová chyba, jsem si jistý, že by došlo k přestřelce

V těchto bojích jsme si konečně začali rozumět – společnost si myslela, že jsme to my, kdo pracuje s daty a sleduje strukturu tabulek. Spletli si adminy s dealery. A přišli se nás zeptat na něco jiného od adminů.

Jejich hlavní stížnost je - sakra, byli jste zodpovědní za zálohování a neprováděli jste je správně, nadále jste plýtvali daty. A to vše s převíjecími karimatkami.

Chtěl jsem spravedlnost. Vyhrabal jsem korespondenci a připojil screenshoty všech, kde je Leonid vší silou nutí udělat zálohu, která byla vytvořena. Jejich servisní stanice se po mém telefonátu postavila na naši stranu. Později Lenya přiznala svou vinu.

Šéf firmy naopak nechtěl vinit vlastní lidi. Snímky obrazovky a slova na něj neměly žádný vliv. Věřil, že když jsme tady odborníci, musíme všechny přesvědčit a trvat na svém rozhodnutí. Naším úkolem zřejmě bylo naučit Lenyu a navíc obejít jeho, který byl jmenován projektovým manažerem, dostat se k tomu hlavnímu a osobně na něj vylít všechny naše pochybnosti o koncepci záloh.

Z chatu sršela nenávist, skrytá i neskrývaná agrese. Nevěděl jsem, co mám dělat. Vše se zastavilo. A pak mi poradili nejjednodušší způsob – napsat manažerovi osobní zprávu a domluvit si s ním schůzku. Vasyo, lidé ve skutečném životě nejsou tak rychlí jako v chatu. Šéf na můj vzkaz odpověděl: přijďte, bez otázek.

Bylo to nejděsivější setkání v mé kariéře. Můj spojenec od klienta - STO - nemohl najít čas. Šel jsem na schůzku se šéfem a Lenou.

Znovu a znovu jsem si v hlavě přehrával náš možný dialog. Podařilo se mi dorazit velmi brzy, půl hodiny předem. Začal jsem být nervózní, vykouřil jsem 10 cigaret. Pochopil jsem, to je ono - kurva sám. Nebudu je moci přesvědčit. A nastoupil do výtahu.

Když vstával, udeřil do zapalovače tak silně, že ho zlomil.

V důsledku toho Lenya nebyla na schůzce. A s šéfem jsme si o všem skvěle popovídali! Sergej mi řekl o své bolesti. Nechtěl „automatizovat Clickhouse“ – chtěl „zařídit, aby dotazy fungovaly“.

Neviděl jsem kozu, ale hodného chlapa, který se obával o své podnikání a byl ponořen do práce 24 hodin denně 7 dní v týdnu. Chat z nás často přitahuje padouchy, darebáky a hloupé lidi. Ale v životě jsou to lidé jako vy.

Sergej nepotřeboval najmout pár devopů. Problém, který měli, se ukázal být mnohem větší.

Řekl jsem, že mohu vyřešit jeho problémy - je to prostě úplně jiná práce a mám přítele, který pro to pracuje. Kdybychom od začátku věděli, že je to pro ně obchod, mnohému bychom se vyhnuli. Je pozdě, ale uvědomili jsme si, že problém spočívá v mizerné správě dat, nikoli v infrastruktuře.

Podali jsme si ruce, zvýšili nám plat dvaapůlkrát, ale pod podmínkou, že si celý ten nepořádek s jejich daty a Clickhouse vezmu pro sebe. Ve výtahu jsem komunikoval se stejným DI chlapíkem Maxem a připojil ho k práci. Bylo nutné celý shluk odhrnout lopatou.

V přijatém projektu bylo hodně odpadu. Počínaje zmíněnou „zálohou“. Ukázalo se, že stejný „záložní“ cluster nebyl izolovaný. Všechno na něm testovali, někdy to i zaváděli do výroby.

Naši interní vývojáři vytvořili svůj vlastní vkladač dat. Pracoval takto: dávkoval soubory, spustil skript a sloučil data do tabulky. Hlavním problémem ale bylo, že na jeden jednoduchý požadavek bylo přijato obrovské množství dat. Požadavek připojoval data každou sekundu. Vše kvůli jednomu číslu – částce za den.

Interní vývojáři použili analytický nástroj nesprávně. Šli do grafana a napsali svou královskou žádost. Nahrával data po dobu 2 týdnů. Ukázalo se, že je to krásný graf. Ale ve skutečnosti byl požadavek na data každých 10 sekund. To vše se hromadilo ve frontě, protože Clickhouse jednoduše neodebral zpracování. Tady se skrýval hlavní důvod. V Grafaně nic nefungovalo, požadavky stály ve frontě a neustále přicházela stará nepodstatná data.

Překonfigurovali jsme cluster, předělali jsme vložení. Interní vývojáři přepsali svůj „vkladač“ a ten začal správně sdílet data.

Max provedl úplný audit infrastruktury. Nastínil plán přechodu na plnohodnotný backend. To ale firmě nevyhovovalo. Očekávali od Maxe magické tajemství, které jim umožní pracovat staromódním způsobem, ale pouze efektivně. Lenya měla stále na starosti projekt a nic se nedozvěděl. Ze všeho, co se nabízelo, si opět vybral svou alternativu. Jako vždy to bylo nejselektivnější...odvážné rozhodnutí. Lenya věřila, že jeho společnost má zvláštní cestu. Trnité a plné ledovců.

Vlastně tam jsme se rozešli – dělali jsme, co jsme mohli.

Plni znalostí a moudrosti z této historie jsme otevřeli vlastní podnik a vytvořili si několik zásad. Už nikdy nezačneme pracovat stejným způsobem jako tehdy.

Po tomto projektu se k nám přidal DJ Max a dodnes spolu skvěle spolupracujeme. Případ Clickhouse mě naučil, jak provést úplný a důkladný audit infrastruktury před zahájením práce. Chápeme, jak vše funguje, a teprve potom přijímáme úkoly. A pokud jsme dříve okamžitě spěchali s údržbou infrastruktury, nyní nejprve uděláme jednorázový projekt, který nám pomůže pochopit, jak ji uvést do funkčního stavu.

A ano, vyhýbáme se projektům s mizernou infrastrukturou. I když za hodně peněz, i když z přátelství. Provozovat nemocné projekty je nerentabilní. Uvědomění si toho nám pomohlo růst. Buď jednorázový projekt dát do pořádku infrastrukturu a pak kontrakt na údržbu, nebo prostě proletíme. Za dalším ledovcem.

PS Takže pokud máte dotazy ohledně vaší infrastruktury, Neváhejte a odešlete žádost.

Máme 2 bezplatné audity měsíčně, možná bude jedním z nich i váš projekt.

Zdroj: www.habr.com

Přidat komentář