Medan alla firade min födelsedag, höll jag pĂ„ att laga klustret hela natten — och utvecklarna skyllde sina fel pĂ„ mig

Medan alla firade min födelsedag, höll jag pĂ„ att laga klustret hela natten — och utvecklarna skyllde sina fel pĂ„ mig

HÀr Àr historien som för alltid förÀndrade min instÀllning till DevOps-arbete. Redan innan covid-19, lÄngt före det, nÀr jag och grabbarna först funderade pÄ vÄrt eget företag och frilansade för olika uppdrag, fick jag ett erbjudande i Telegram.

Företaget som gav oss uppdraget sysslade med dataanalys. Varje dag hanterade de tusentals förfrÄgningar. De kom till oss med orden: killar, vi har ClickHouse och vi vill automatisera dess installation och konfiguration. Vi vill ha Ansible, Terraform, Docker och att allt det hÀr ska lagras i Git. Vi vill ha en kluster med fyra noder, med tvÄ repliker i varje.

En standardförfrÄgan, liknande tiotals andra, och vi behövde samma bra standardlösning. Vi sa "okej", och efter 2-3 veckor var allt klart. De godkÀnde arbetet och började flytta till det nya ClickHouse-klustret med hjÀlp av vÄrt verktyg.

Ingen av dem ville eller kunde hantera ClickHouse. DÄ trodde vi att detta var deras huvudsakliga problem, och dÀrför gav företagets CTO grönt ljus till mitt team att maximalt automatisera arbetet, sÄ att ingen av oss nÄgonsin behövde röra vid det igen.

Vi stödde flytten, och andra uppgifter kom upp - att konfigurera sÀkerhetskopior och övervakning. Samtidigt lÀmnade företagets CTO för ett annat projekt och lÀmnade en av sina anstÀllda, Leonid, som vÄr ledare. Leonid var inte direkt begÄvad. En vanlig utvecklare som plötsligt blev ansvarig för ClickHouse. Det verkade vara hans första uppdrag att leda nÄgot, och han blev förblindad av den plötsliga Àran.

Tillsammans började vi arbeta med sÀkerhetskopior. Jag föreslog att vi skulle sÀkerhetskopiera de ursprungliga data direkt. Att bara ta dem, zippa dem och elegant skicka dem till en S3-lagring. Ursprungsdata Àr guld. Det fanns Àven ett annat alternativ - att sÀkerhetskopiera sjÀlva tabellerna i ClickHouse med hjÀlp av frysning och kopiering. Men Leonid kom pÄ sin egen lösning.

Han meddelade att vi behövde ett andra ClickHouse-kluster. FrÄn och med nu skulle vi skriva data till tvÄ kluster - ett primÀrt och ett backup. Jag sa till honom, Leonid, det hÀr blir inte en sÀkerhetskopiering - det blir en aktiv replikering. Och om data börjar försvinna i produktionen, kommer din backup att ha samma problem.

Men Leonid höll hÄrt i styret och vÀgrade lyssna pÄ mina argument. Vi grÀlade lÀnge i chatten, men det var ingen idé - Leonid styrde projektet, vi var bara anstÀllda snubbar frÄn gatan.

Vi övervakade klustrets tillstÄnd och tog betalt endast för administratörernas arbete. Ren administration av ClickHouse utan att blanda sig i datan. Klustret var tillgÀngligt, diskarna var normala, noderna i ordning.

Vi misstÀnkte fortfarande inte att vi fÄtt den hÀr bestÀllningen pÄ grund av en hemsk missuppfattning inom deras team.

Chefen var missnöjd över att ClickHouse gick lĂ„ngsamt och att data ibland försvann. Han gav sitt CTO i uppdrag att ta reda pĂ„ vad som var fel. CTO:n undersökte sĂ„ gott han kunde och drog slutsatsen att det bara behövde automatiseras — och det var allt. Men som det snart visade sig, behövde de inte ett devops-team överhuvudtaget.

Allt detta blev mycket, mycket smÀrtsamt. Och det mest trÄkiga var att det var pÄ min födelsedag.

Fredag kvÀll. Jag hade bokat bord pÄ min favoritvinbar och bjudit in vÀnner.

Strax innan vi skulle gĂ„ fick vi en uppgift att göra en alter, vi utförde den, allt var okej. Alternativet gick igenom, ClickHouse bekrĂ€ftade. Vi hade redan samlats för att gĂ„ till baren nĂ€r vi fick meddelande om att datan saknades. Vi rĂ€knade — det verkade som att allt var dĂ€r. Och vi drog för att fira.

Det var hög ljudnivÄ i restaurangen, som sig bör pÄ en fredag. Vi bestÀllde drinkar och mat och slÀngde oss i sofforna. Under hela tiden blev min Slack lÄngsamt överhopad med meddelanden. Det handlade om nÄgra saknade data. Jag tÀnkte att morgonen Àr mer insiktsfull. SÀrskilt i dag.

NÀr klockan nÀrmade sig elva började de ringa. Det var företagets chef... "Han kanske ville gratulera mig", tÀnkte jag osÀkert och svarade.

Och jag hörde nĂ„got i stil med: "Ni har förstört vĂ„ra data! Jag betalar er, men inget fungerar! Ni ansvarade för sĂ€kerhetskopiorna och har inte gjort ett skit! LĂ„t oss fixa detta!" — bara Ă€nnu grovare.

— Vet du vad, dra Ă„t helvete! I dag Ă€r det min födelsedag och nu ska jag dricka, inte syssla med era amatörmĂ€ssiga krumelurer!

SÄ dÀr sa jag inte. IstÀllet plockade jag fram datorn och satte igÄng att jobba.

Nej, jag var rasande, jag var galet rasande! Jag spottade ur mig syrliga "jag sa ju att..." i chatten — för sĂ€kerhetskopian som inte alls var en sĂ€kerhetskopian, rĂ€ddade givetvis ingenting.

Vi och grabbarna kom pÄ hur vi manuellt skulle stoppa inspelningen och kontrollera allt. Vi försÀkrade oss verkligen om att en del data inte skrevs.

Vi stoppade inspelningen, rĂ€knade antalet hĂ€ndelser som samlades in under dagen. Vi la till mer data, men bara en tredjedel spelades in. Tre shards med tvĂ„ repliker. Du sĂ€tter in 100 000 rader — 33 000 spelas inte in.

Det rÄdde fullstÀndig förvirring. Alla skickade varandra Ät helvete i tur och ordning: först Äkte Ljonja dit, sedan följde jag och företagets grundare. Den nyanstÀllda CTO:n försökte leda vÄra samtal med skrik och diskussioner i riktning mot att lösa problemet.

Vad som egentligen hĂ€nde — ingen förstod.

Vi blev helt chockade nĂ€r vi insĂ„g att en tredjedel av all data inte bara inte spelades in — den försvann! Det visade sig att ordningen i företaget var sĂ„ hĂ€r: efter insĂ€ttning raderades uppgifterna utan Ă„tervĂ€ndo, hĂ€ndelser försvann i stora mĂ€ngder. Jag kunde förestĂ€lla mig hur Sergey omvandlade allt detta till förlorade rubel.

Min födelsedag Äkte ocksÄ i papperskorgen. Vi satt pÄ en bar och genererade idéer, och försökte lösa den gÄta som presenterats. Anledningen till Clickhouse-fallet var inte uppenbar. Kanske Àr det nÀtverket, kanske instÀllningarna i Linux. Allt möjligt har hörts av hypoteser.

Jag svor ingen utvecklar-ed, men det skulle vara ojuste att överge killarna i andra Ă€nden av linjen — Ă€ven om de skyllde pĂ„ oss för allt. Jag var 99% sĂ€ker pĂ„ att problemet inte lĂ„g i vĂ„ra lösningar, inte pĂ„ vĂ„r sida. 1% chans att vi faktiskt hade gjort fel gnagde av oro. Men oavsett var problemet lĂ„g — det mĂ„ste lösas. Att lĂ€mna kunder, oavsett hur de Ă€r, med en sĂ„dan fruktansvĂ€rd datalĂ€cka — det Ă€r för grymt.

Vi arbetade vid restaurangbordet fram till klockan tre pĂ„ morgonen. Vi kastade in hĂ€ndelser, insert select — och började fylla luckorna. NĂ€r du vĂ€l har förlorat data görs det sĂ„ hĂ€r — du tar genomsnittliga data frĂ„n de föregĂ„ende dagarna och sĂ€tter in dem i de förlorade.

Efter klockan tre pĂ„ morgonen gick jag och min kompis hem till mig, bestĂ€llde öl frĂ„n en alkoholbutik. Jag satt med datorn och Clickhouse-problem, min kompis berĂ€ttade nĂ„got för mig. Till sist blev han ledsen över att jag arbetade istĂ€llet för att dricka öl med honom, och Ă„kte hem. Klassisk — en vĂ€n till en DevOps.

Vid 6 pÄ morgonen hade jag Äterskapat tabellen och data började flöda in. Allt fungerade utan förluster.

Framöver blev det tufft. Alla skyllde pÄ varandra för datalÀckan. Om en ny bugg intrÀffade, Àr jag sÀker pÄ att en skottlossning skulle ha börjat.

I dessa kaos lyckades vi Ă€ntligen förstĂ„ — företaget trodde att vi var de som arbetar med data och hĂ„ller koll pĂ„ tabellstrukturen. De förvĂ€xlade administratörer med DBAs. Och kom för att frĂ„ga oss inte som administratörer.

Deras huvudsakliga klagomĂ„l var — vad i helvete, ni var ansvariga för backuperna och gjorde dem inte ordentligt, ni slĂ€ppte data. Och allt detta med svordomar.

Jag ville ha rÀttvisa. Jag grÀvde fram korrespondensen och bifogade skÀrmdumpar dÀr Leonid krÀver med all kraft att göra en backup, precis som den som hade gjorts. Deras CTO stÀllde sig pÄ vÄr sida efter mitt telefonsamtal. Dessutom erkÀnde Leonid sitt fel.

Företagsledaren, Ä sin sida, ville inte skylla pÄ sina. SkÀrmdumpar och ord pÄverkade honom inte. Han ansÄg att eftersom vi var experter hÀr, sÄ borde vi ha övertygat alla och stÄtt pÄ vÄrt beslut. Det verkade som om det var vÄr uppgift att lÀra Leonid och dessutom undvika honom, den utsedda projektledaren, nÄ huvudpersonen och personligen framföra alla vÄra tvivel om backup-konceptet.

Chatten genomsyrades av hat, bĂ„de dolda och öppna aggressioner. Jag visste inte hur jag skulle hantera det. Allt hade kört fast. Och dĂ„ fick jag rĂ„det att anvĂ€nda den enklaste metoden — skriva ett meddelande till chefen och ordna ett möte med honom. Vasya, folk i verkliga livet Ă€r inte sĂ„ kaxiga som i chatten. PĂ„ mitt meddelande svarade chefen: kom, inget problem.

Det var det mest obehagliga mötet i min karriĂ€r. Min allierade frĂ„n kunden — CTO — kunde inte hitta tid. Jag Ă„kte till mötet med chefen och Leonid.

Jag gick hela tiden igenom vÄr möjliga dialog i huvudet. Jag lyckades anlÀnda mycket tidigt, en halvtimme innan. Nerverna började spela mig ett spratt, jag rökte 10 cigaretter. Jag insÄg att jag, fan, var ensam. Jag skulle inte kunna övertyga dem. Och sÄ steg jag in i hissen.

Medan jag Äkte upp, sparkade jag sÄ mycket med tÀndstickan att jag bröt den.

Till slut var Leonid inte pĂ„ mötet. Och vi diskuterade allt utmĂ€rkt med chefen! Sergey berĂ€ttade för mig om sin smĂ€rta. Han ville inte "automatisera ClickHouse" — han ville att "förfrĂ„gningar skulle fungera".

Jag sÄg inte en skurk, utan en bra kille som brydde sig om sitt företag, djupt engagerad i arbetet 24/7. Chatten mÄlade ofta upp skurkar, elakingar och dunce. Men i verkligheten Àr det likadana mÀnniskor som du.

Sergey behövde inte bara ett par devops pÄ anstÀllning. Problemet som de hade visat sig vara mycket större.

Jag sa att jag kunde lösa hans problem — men det Ă€r helt annat arbete, och jag har en bekant DBA för det. Om vi frĂ„n början hade förstĂ„tt att detta var en grej för dem, skulle vi ha undvikit mycket. Sent, men vi insĂ„g att problemet lĂ„g i det usla dataarbetet, inte i infrastrukturen.

Vi skakade hand, vĂ„r avgift höjdes med tvĂ„ och en halv gĂ„ng, men pĂ„ villkoret — jag tar hand om all deras dataröran och ClickHouse sjĂ€lv. I hissen skrev jag till just den DBA:n, Max, och kopplade in honom i arbetet. Vi behövde bearbeta hela klustret.

Det fanns gott om skrÀpkod i det antagna projektet. Börjar med den nÀmnda "backupen". Det visade sig att denna "backup-k-luster" inte var isolerad. De testade allt möjligt pÄ den och ibland körde de det i produktion.

De interna utvecklarna hade skapat sin egen anpassade "insertor" för data. Den fungerade sĂ„ hĂ€r: den batchade filer, körde skriptet och slĂ€ppte data i tabellen. Men det största problemet var att en enorm mĂ€ngd data accepterades för en enda enkel frĂ„ga. FrĂ„gan sammanfogade data per sekund. Allt för en siffra — summan för dagen.

De interna utvecklarna anvÀnde analysverktyget felaktigt. De gick till Grafana, skrev sin kungliga frÄga. Den hÀmtade data för 2 veckor. Det blev en vacker graf. Men i verkligheten gick datainhÀmtningen var 10:e sekund. Allt detta samlades i kön, eftersom ClickHouse helt enkelt inte kunde hantera bearbetningen. HÀr dolde sig huvudorsaken. I Grafana fungerade inget, frÄgorna stod i kö, och gamla, irrelevanta data kom stÀndigt in.

Vi omkonfigurerade klustret, omskapade insÀttningen. De interna utvecklarna omskrev sin "insertor", och den började shardera data korrekt.

Max genomförde en fullstÀndig revision av infrastrukturen. Han skrev en plan för övergÄngen till en fullstÀndig backend. Men det övertygade inte företaget. De vÀntade sig att Max skulle ha en magisk hemlighet som skulle lÄta dem arbeta pÄ gammalt vis, men effektivt. Projektet ansvarades fortfarande av Lenny, som fortfarande inte hade lÀrt sig nÄgot. Av allt som föreslagits valde han Äterigen sitt alternativ. Som vanligt var det det mest utvalda... djÀrva beslutet. Lenny trodde att hans företag hade en sÀrskild vÀg. En tuff och full av isberg.

Egentligen skildes vi just dĂ€r — vi gjorde vad vi kunde.

Med mÄnga erfarenheter bakom oss har vi startat vÄrt företag och formulerat nÄgra principer. Nu börjar vi aldrig arbeta pÄ samma sÀtt som vi gjorde dÄ.

DBA Max gick med oss efter det hÀr projektet, och vi arbetar fortfarande utmÀrkt tillsammans. Fallet med ClickHouse lÀrde oss att genomföra en fullstÀndig och grundlig granskning av infrastrukturen innan vi börjar arbeta. Vi sÀtter oss in i hur allt fungerar, och först dÀrefter tar vi oss an uppgifterna. Om vi tidigare hade rusat in för att underhÄlla infrastrukturen, gör vi nu först ett enstaka projekt som hjÀlper oss att förstÄ hur vi fÄr det i drift.

Och ja, vi undviker projekt med dĂ„lig infrastruktur. Även om det Ă€r för mycket pengar, Ă€ven om det Ă€r för vĂ€nskaps skull. Att hantera sjuka projekt Ă€r olönsamt. Insikten om detta har hjĂ€lpt oss vĂ€xa. Antingen ett engĂ„ngsprojekt för att fĂ„ infrastrukturen i ordning och sedan ett underhĂ„llskontrakt, eller sĂ„ passerar vi bara.

P.S. SÄ om du har frÄgor om din infrastruktur, lÀmna gÀrna in en ansökan.

Vi erbjuder 2 gratis granskningar per mÄnad, kanske Àr det just ditt projekt som blir utvalt.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster