Míg mindenki az én születésnapomat ünnepelte, én hajnalban javítottam a klasztert — a fejlesztők meg csak rám zúdították a hibáikat

Míg mindenki az én születésnapomat ünnepelte, én hajnalban javítottam a klasztert — a fejlesztők meg csak rám zúdították a hibáikat

Ez az a történet, amely örökre megváltoztatta a DevOps munkához való hozzáállásomat. Még a Covid előtti időkben, jóval azelőtt, amikor a srácokkal csak most kezdtük el a saját vállalkozásunkat, és alkalmi megbízásokon dolgoztunk, kaptam egy ajánlatot a Telegramon.

A cég, amely ezt az ajánlatot tette, adat-analitikával foglalkozott. Naponta ezrek kérdését dolgozták fel. Hozzánk a következőkkel érkeztek: srácok, van ClickHouse-unk, és szeretnénk automatizálni annak beállítását és telepítését. Szükségünk van Ansible-re, Terraformra, Dockerre, és hogy minden a Gitben legyen tárolva. Négycsomós klasztert akarunk, minden csomópontban két replikával.

Ez egy szokásos kérés volt, amilyenekből tucatnyi létezik, és szükség volt egy hasonlóan jó, standard megoldásra. Azt mondtuk, hogy rendben van, és 2-3 héten belül minden készen állt. Elfogadták a munkát, és elkezdtek átköltözni az új ClickHouse klaszterre a mi eszközünkkel.

Náluk senki sem akart és nem tudott foglalkozni a ClickHouse-szal. Akkor azt gondoltuk, hogy ez volt a fő problémájuk, ezért a cég CTO-ja egyszerűen azt mondta a csapatomnak, hogy automatizáljuk a munkát, hogy soha többé ne kelljen beavatkozniuk.

Támogattuk a költözést, más feladatok is felmerültek — beállítani a mentéseket és a megfigyelést. Ekkor a cég CTO-ja egy másik projektre távozott, és ránk bízta az egyik embereket — Leóidát. Leóida nem volt a legtehetségesebb srác. Egy egyszerű fejlesztő, akit hirtelen ClickHouse vezetővé neveztek ki. Úgy tűnik, ez volt az első kinevezése valamiféle vezetésre, és az elismerés súlya elvitte a fejét.

Közösen kezdtünk bele a mentésekbe. Én azt javasoltam, hogy az eredeti adatokat azonnal mentsük. Csak simán zipeljük össze, és elegánsan töltsük fel valamilyen S3-ba. Az eredeti adatok aranyat érnek. Volt egy másik lehetőség is — a ClickHouse táblák mentése fagyasztás és másolás segítségével. De Leo kitalálta a saját megoldását.

Bejelentette, hogy szükségünk van egy második ClickHouse klaszterre. Innentől fogva két klaszterre fogunk adatokat írni — az alap- és a mentési klaszterre. Mondom neki, hogy Leo, ez nem mentés lesz — hanem aktív replikálás. És ha az adatok elkezdenek elveszni a produkcióban, a mentéseden ugyanaz lesz.

De Leo erőteljesen ragaszkodott a kormányhoz, és nem volt hajlandó hallgatni az érveimre. Hosszasan vitatkoztunk a csevegésben, de nem tehettünk mást — Leo irányította a projektet, mi csak utcai fiúk voltunk, akiket felvettek.

Miután figyeltük a klaszter állapotát, csak az adminok munkáját számláztuk. Tiszta ClickHouse adminisztráció adatokba való belenyúlás nélkül. A klaszter elérhető volt, a lemezek rendben, a csomópontok jó állapotban.

Még nem sejtettük, hogy ezt a megrendelést egy borzalmas félreértés miatt kaptuk a csapatukban.

A vezető elégedetlen volt azzal, hogy a ClickHouse lassan működik, és néha adatok vesznek el. Megbízta a CTO-ját, hogy derítse ki, mi történt. Ő, amennyire tudta, kiderítette, hogy egyszerűen automatizálni kell a ClickHouse-t — és kész. De ahogy később kiderült — nekik egyáltalán nem devops csapatra volt szükségük.

Mindez nagyon-nagyon fájdalmasan derült ki. És ami a legbosszantóbb, ez a születésnapomon történt.

Péntek este. Lefoglaltam egy asztalt a kedvenc borbártba, és meghívtam a haverokat.

Majdnem indulás előtt kaptunk egy feladatot, hogy készítsünk alternatívát, megcsináltuk, minden rendben volt. Az alternatíva átment, a ClickHouse megerősítette. Már épp indultunk volna a bárba, amikor írtak, hogy hiányoznak az adatok. Számoltunk — úgy tűnt, minden rendben van. És elmentünk ünnepelni.

A bárban péntekhez képest zajos volt. Rendeltünk italokat, ételeket, és elnyúltunk a kanapén. Eközben a Slackem folyamatosan tele volt üzenetekkel. Valamit írtak az adatok hiányáról. Azt gondoltam — reggel okosabb leszek. Különösen a mai napon.

Tíz óra körül elkezdtek hívogatni. A cég vezetője volt... 'Valószínűleg gratulálni akar nekem,' — gondoltam nagyon bizonytalanul, és felvettem a telefont.

És hallottam valami olyasmit: 'Elrontottátok az adatainkat! Fizetek nektek, de semmi sem működik! Ti voltatok a felelősek a mentésekért, és nem csináltatok semmit! Javítsátok meg!' — csak még durvábban.

— Tudod mit, oda mehetsz a fenébe! Ma van a születésnapom, és most inni fogok, nem pedig a ti amatőr kreálmányaitokkal foglalkozom!

De így nem mondtam. Ehelyett elővettem a laptopom és nekiálltam a munkának.

Nem, tényleg kiborultam, nagyon kiborultam! Beírtam a csoportba csípős 'mondtam én'-eket — mert a mentés, ami nem is volt mentés, természetesen semmit sem mentett.

A srácokkal kitaláltuk, hogyan lehet manuálisan leállítani a felvételt és mindent ellenőrizni. Valóban megbizonyosodtunk arról, hogy az adatok egy része nem kerül írásra.

Megállítottuk a felvételt, és megszámoltuk a napi eseményeket. További adatokat töltöttünk fel, amelyek közül csak a harmadik nem került rögzítésre. Három shard két másolattal. Beillesztesz 100.000 sort — 33.000 nem kerül rögzítésre.

Teljes zűrzavar alakult ki. Mindenki egymásra küldte a francba: először Lönya ment, utánam a cég alapítója. Csak a frissen csatlakozott CTO próbálta eltüntetni a problémákat hangos kiabálásokkal és a levelezésünkkel.

Senki nem értette, mi is folyik valójában.

A srácokkal egyszerűen elképedtünk, amikor rájöttünk, hogy a teljes adataink egyharmada nemcsak, hogy nem került rögzítésre — elveszett! Kiderült, hogy a cégben a következő rend volt: beillesztés után az adatok véglegesen törlődtek, az események pedig tömegesen elvesztek. Elképzeltem, ahogy Szergej mindezt forintokká alakítja.

A születésnapom is a kukába került. A bárban ültünk, ötleteket generálva, próbálva megfejteni a feldobott rejtélyt. A ClickHouse bukásának oka nem volt nyilvánvaló. Lehet, hogy a hálózat, lehet, hogy a Linux beállításai. Bármi is lehetett, elég sok hipotézis felmerült.

Nem tettem esküt fejlesztőként, de nem lett volna helyes a srácokat a telefon másik végén magukra hagyni — még akkor sem, ha mindent ránk hárítottak. 99%-ban biztos voltam benne, hogy a probléma nem a mi megoldásainkban, hanem nem a mi oldalunkon van. Az 1% esély, hogy mégis hibáztunk, nyugtalanító volt. De bárki oldalán is volt a probléma — ezt meg kellett oldani. Nem lehetett a klienseket, bármilyenek is voltak, egy ilyen súlyos adatvesztéssel magára hagyni — ez túl kegyetlen.

Hajnali háromig a étterem asztalánál dolgoztunk. Eseményeket dobtunk be, insert select — és nekiláttunk a hiányosságok pótlásának. Amikor adatokat veszítesz el, így csinálod — veszed az előző napok átlagos adatait, és beilleszted a hiányzók helyére.

Hajnali három után a barátommal hazamentünk, és rendeltünk sört az italboltból. Én a ClickHouse problémáival ültem a laptopnál, ő mesélt nekem valamit. Végül egy óra múlva megharagudott, hogy dolgozom, és nem vele sörözöm, és elment. Klasszikus — barátja volt a devopsnak.

Reggel hatra újra létrehoztam a táblát, és az adatok elkezdtek áramlani. Minden működött veszteség nélkül.

Ezután nehéz volt. Mindenki egymást vádolta az adatvesztésért. Ha új hiba történt volna, biztos vagyok benne, hogy kitört volna a lövöldözés.

Ezekben a zűrzavarokban végre kezdtük megérteni, hogy a cég azt hitte, mi azok a srácok vagyunk, akik az adatokat kezelik és figyelemmel kísérik a táblák struktúráját. Összekeverték az adminisztrátorokat a DBA-kkal. És jöttek tőlünk kérdezni, nem is adminisztrátori szinten.

A fő kifogásuk az volt, hogy mi a francért feleltünk a biztonsági másolatokért és nem végeztük el jól, kicsúsztunk az adatokkal. Mindez káromkodással teli volt.

Igazságra vágytam. Kiástam a beszélgetésünket és csatoltam minden képernyőképet, ahol Leonid teljes erőből arra kényszerít, hogy olyan biztonsági másolatot készítsünk, amilyet szükséges. A CTOjuk a telefonos hívásom után a mi oldalunkra állt. Végül ő is elismerte a hibáját, és Lenya is.

A cég vezetője, ellenben, nem akarta a saját embereit hibáztatni. A képernyőképek és a szavak nem hatottak rá. Azt hitte, hogy mivel itt mi vagyunk a szakértők, meg kellett volna győznünk mindenkit és ragaszkodnunk a döntésünkhöz. Úgy tűnik, a feladatunk az volt, hogy tanítsuk Lenyát, és ezen kívül, megkerülve őt, aki a projektvezető volt, eljussunk a főnökhöz és neki személyesen elmondjuk a kérdéseinket a biztonsági másolatok koncepciójával kapcsolatban.

A chat tele volt rejtett és nyílt agresszióval. Nem tudtam, mit tegyek. Minden zsákutcába jutott. Aztán tanácsolták a legegyszerűbb megoldást — írjak privát üzenetet a vezetőnek, és egyezzek meg vele egy találkozóról. Vasya, az emberek az életben nem olyan pimaszak, mint a chaten. A főnök az üzenetemre azt válaszolta: gyere, nem probléma.

Ez volt a legrosszabb találkozó a karrieremben. Az ügyféltől való szövetségesem — a CTO — nem tudott időt találni. A találkozóra a főnökhöz és Lenyához mentem.

Újra és újra átgondoltam a lehetséges párbeszédünket. Ügyesen megérkeztem jóval korábban, harminc perccel. Kezdett eluralkodni rajtam a feszültség, elszívtam tíz cigarettát. Tudtam, hogy végem van — egyedül vagyok. Nem fogom tudni meggyőzni őket. Beléptem a liftbe.

Miközben felfelé mentem, úgy megcsíptem a gyújtót, hogy eltörtem.

Végül Lenyát nem találtuk a találkozón. De fantasztikusan beszélgettünk a főnökkel! Szergej mesélt nekem a fájdalmáról. Ő nem azt akarta, hogy 'automatizáljunk ClickHouse-t' — hanem hogy 'a lekérdezések működjenek'.

Nem egy idiótát láttam, hanem egy jó srácot, aki aggódik a vállalkozása miatt, és 24/7 dolgozik. A chat gyakran gonosztevőket, csalókat és hülyeségeket fest elénk. De az életben ők olyan emberek, mint te.

Szergejnek nem volt szüksége néhány alkalmazott devopsra. A probléma, amellyel szembesültek, sokkal nagyobb volt.

Azt mondtam, hogy meg tudom oldani a problémáit — csak ez egészen más munka, és van egy ismerős DBA-m hozzá. Ha eleve tudtuk volna, hogy ez nekik üzlet, sok mindent elkerültünk volna. Késő, de rájöttünk, hogy a probléma nem az infrastruktúrában, hanem a szar adatkezelésben rejlik.

Keletkezett egy kézfogás, a díjunkat csaknem kétszeresére emelték, de a feltétel az volt — teljesen magamra vállalom az összes gondot az adataikkal és a ClickHouse-szal. A liftben felvettem a kapcsolatot a DBA Maxszal, és bevontam őt a munkába. Az egész klasztert át kellett szervezni.

A megvalósított projektben bőven volt káosz. Kezdve a már említett „backup”-tól. Kiderült, hogy ez a „backup” klaszter nem volt izolált. Mindenféle tesztelési célokra használták, néha még a produkcióba is beengedték.

A belső fejlesztők kitalálták a saját testreszabott „adatbeillesztő” eszközüket. Így működött: fájlokat batch-elt, futtatta a szkriptet, és az adatokat betöltötte a táblázatba. De a fő probléma az volt, hogy hatalmas mennyiségű adat érkezett egy egyszerű lekérdezéshez. A lekérdezés másodpercenként kapcsolta össze az adatokat. Mindez egyetlen számjegyért — a napi összegért.

A belső fejlesztők helytelenül használták az elemzőeszközt. Az Grafanába mentek, és megírták a saját királyi lekérdezésüket. Ez két hétre visszamenőleg mentette le az adatokat. Szép grafikon alakult ki. De valójában az adatlekérdezés 10 másodpercenként zajlott. Mindez felhalmozódott a sorban, mivel a ClickHouse egyszerűen nem bírta a feldolgozást. Itt rejtőzött a fő ok. A Grafanában semmi sem működött, a lekérdezések sorban álltak, és folyamatosan érkeztek régi, elavult adatok.

Átállítottuk a klasztert, átírtuk az adatbeillesztést. A belső fejlesztők átírták a „beillesztő” eszközüket, és elkezdte helyesen shardolni az adatokat.

Max teljeskörű auditot végzett az infrastruktúrában. Kidolgozta a tervet a teljes értékű backendre való átállásra. De ez nem felelt meg a cégnek. Max-tól varázslatos titkot vártak, amely lehetővé tette volna, hogy a régi módon, de hatékonyan dolgozzanak. A projektért továbbra is Lönya felelt, aki semmit nem tanult. Az összes javasolt megoldásból ő ismét a saját alternatíváját választotta. Mint mindig, ez a legkiválóbb... merész döntés volt. Lönya úgy gondolta, hogy a cégének különleges útja van. Rögös és tele jéghegyekkel.

Igazából itt váltunk el — megtettük, amit tudtunk.

A sok pofon után, tanulva a tapasztalatból, megnyitottuk a vállalkozásunkat és kialakítottunk magunknak néhány elvet. Most már sosem kezdjük el a munkát úgy, ahogyan akkor.

A Dibiéyser Max a projekt után csatlakozott hozzánk, és azóta is remekül dolgozunk együtt. A Clickhouse-os eset arra tanított minket, hogy a munka megkezdése előtt végezzünk el egy teljes és alapos auditot az infrastruktúrán. Megismerjük, hogyan működik minden, és csak utána fogadjuk el a feladatokat. Ha régen azonnal nekiláttunk volna az infrastruktúra kezelésének, most először elvégzünk egy egyszeri projektet, amely segít megérteni, hogyan hozhatjuk működő állapotba.

Igen, elkerüljük azokat a projekteket, ahol szar infrastruktúra működik. Még ha sok pénzről van is szó, még ha baráti szívességről. Beteg projekteket kezelni nem kifizetődő. Ennek a tudomása segített minket növekedni. Vagy egy egyszeri projekt az infrastruktúra rendbehozatalára, és utána karbantartási szerződés, vagy egyszerűen elkerüljük. Elkerülve egy újabb jéghegyet.

P.S. Szóval, ha kérdései vannak az infrastruktúrájával kapcsolatban, nyugodtan küldje el a jelentkezését..

Havonta 2 ingyenes auditunk van, lehet, hogy az Ön projektje is be fog kerülni az egyikbe.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster