Medan alla firade min födelsedag fixade jag klustret fram till morgonen - och utvecklarna skyllde på mig för sina misstag

Medan alla firade min födelsedag fixade jag klustret fram till morgonen - och utvecklarna skyllde på mig för sina misstag

Här är en berättelse som för alltid förändrade mitt förhållningssätt till devops-arbete. Tillbaka i pre-Covid-tider, långt, långt före dem, när killarna och jag bara planerade vår egen verksamhet och frilansade på slumpmässiga beställningar, föll ett erbjudande i min varukorg.

Företaget som skrev detta var ett dataanalysföretag. Hon behandlade tusentals förfrågningar dagligen. De kom till oss med orden: killar, vi har ClickHouse och vi vill automatisera dess konfiguration och installation. Vi vill att Ansible, Terraform, Docker och att allt ska lagras i Git. Vi vill ha ett kluster med fyra noder med två repliker vardera.

Det är en standardförfrågan, det finns dussintals av dem, och du behöver en lika bra standardlösning. Vi sa "ok", och efter 2-3 veckor var allt klart. De tackade ja till jobbet och började flytta till ett nytt Clickhouse-kluster med hjälp av vårt verktyg.

Ingen ville eller visste hur man pysslade med Clickhouse. Sedan trodde vi att detta var deras huvudproblem, och därför gav företagets bensinstation helt enkelt klartecken till mitt team att automatisera arbetet så mycket som möjligt, för att inte åka dit själv igen.

Vi följde med i flytten, andra uppgifter uppstod - uppsättning av backuper och övervakning. I samma ögonblick slogs detta företags bensinstation samman med ett annat projekt, vilket lämnade oss med en av våra egna - Leonid - som befälhavare. Lenya var inte en särskilt begåvad kille. En enkel utvecklare som plötsligt fick ansvaret för Clickhouse. Det verkar som att detta var hans första uppdrag att hantera något, och den överväldigande äran fick honom att känna sig starstruck.

Tillsammans började vi göra säkerhetskopior. Jag föreslog att du skulle säkerhetskopiera originaldata direkt. Ta bara den, zippa den och släng den elegant i någon c3. Rådata är guld. Det fanns ett annat alternativ - att säkerhetskopiera själva tabellerna i Clickhouse, genom att frysa och kopiera. Men Lenya kom på sin egen lösning.

Han meddelade att vi behöver ett andra Clickhouse-kluster. Och från och med nu kommer vi att skriva data till två kluster - det huvudsakliga och backup. Jag säger till honom, Lenya, det kommer inte att vara en backup, utan en aktiv replik. Och om data börjar försvinna i produktionen kommer samma sak att hända på din säkerhetskopia.

Men Lenya tog hårt tag i ratten och vägrade lyssna på mina argument. Vi chattade med honom länge i chatten, men det fanns inget att göra - Lenya var ansvarig för projektet, vi var bara inhyrda barn från gatan.

Vi övervakade klustrets tillstånd och debiterade endast för administratörernas arbete. Ren Clickhouse-administration utan att komma in i data. Klustret var tillgängligt, diskarna var bra, noderna var bra.

Föga anade vi att vi fick denna order på grund av ett fruktansvärt missförstånd inom deras team

Chefen var missnöjd med att Clickhouse var långsam och att data ibland gick förlorade. Han satte sin bensinstation i uppgift att ta reda på det. Han kom på det så gott han kunde och drog slutsatsen att vi bara behövde automatisera Clickhouse - det är allt. Men som det snart stod klart behövde de inte ett team av devops alls.

Allt detta visade sig vara väldigt, väldigt smärtsamt. Och det mest stötande var att det var på min födelsedag.

Fredag ​​kväll. Jag gjorde en reservation på min favoritvinbar och bjöd in homierna.

Nästan innan vi lämnar får vi en uppgift att skapa en ändring, vi slutför den, allt är okej. Alter godkänd, clickhouse bekräftat. Vi går redan till baren, och de skriver till oss att det inte finns tillräckligt med data. Vi räknade ut att allt verkar räcka. Och de gick för att fira.

Restaurangen var bullrig på en fredag. Efter att ha beställt drycker och mat slappade vi i sofforna. Hela denna tid översvämmades min slack sakta med meddelanden. De skrev något om brist på data. Jag tänkte – morgonen är klokare än kvällen. Speciellt idag.

Närmare elva började de ringa. Det var företagets chef... "Beslöt nog att gratulera mig", tänkte jag mycket tveksamt och lyfte luren.

Och jag hörde något i stil med: "Du har förstört vår data! Jag betalar dig, men ingenting fungerar! Du var ansvarig för säkerhetskopiering, och du gjorde inte en jäkla grej! Låt oss fixa det!" - bara ännu grovare.

- Vet du vad, kom ut! Idag är det min födelsedag, och nu ska jag dricka och inte ägna mig åt dina hemmagjorda juniprodukter från skit och pinnar!

Det var det jag inte sa. Istället tog jag fram min bärbara dator och började jobba.

Nej, jag bombade, jag bombade som fan! Han hällde frätande "jag sa det" i chatten - eftersom säkerhetskopian, som inte alls var en säkerhetskopia, - naturligtvis sparade ingenting.

Pojkarna och jag kom på hur man manuellt skulle stoppa inspelningen och kontrollera allt. Vi såg faktiskt till att en del av datan inte skrevs.

Vi slutade spela in och räknade antalet händelser som var där per dag. De laddade upp mer data, varav endast en tredjedel inte registrerades. Tre skärvor med 2 repliker vardera. Du infogar 100.000 33.000 rader - XNUMX XNUMX registreras inte.

Det rådde fullständig förvirring. Alla sa åt varandra att knulla i tur och ordning: Lenya gick dit först, följt av mig själv och företagets grundare. Endast bensinstationen som anslöt sig försökte avleda våra skrikande samtal och korrespondens för att hitta en lösning på problemet.

Ingen förstod vad som egentligen hände

Killarna och jag blev helt enkelt imponerade när vi insåg att en tredjedel av all data inte bara inte spelades in, den gick förlorad! Det visade sig att ordningen i företaget var följande: efter införandet raderades uppgifterna oåterkalleligt, händelserna slösades bort i omgångar. Jag föreställde mig hur Sergei skulle omvandla allt detta till förlorade rubel.

Min födelsedag kastades också i papperskorgen. Vi satt i baren och genererade idéer och försökte lösa pusslet som hade kastats mot oss. Orsaken till Clickhouses fall var inte uppenbar. Kanske är det nätverket, kanske är det Linux-inställningarna. Ja, vad du än vill så har det funnits tillräckligt med hypoteser.

Jag tog inte utvecklarens ed, men det var oärligt 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 beslut, inte på vår sida. Chansen på 1% att vi hade skruvat ihop var brinnande av ångest. Men oavsett vilken sida besväret låg på så måste det åtgärdas. Att lämna kunder, oavsett vem de är, med en sådan fruktansvärd dataläcka är för grymt.

Vi jobbade vid restaurangbordet till tre på morgonen. Vi lade till händelser, infogade välj och gick iväg för att fylla i luckorna. När du skruvar ihop uppgifterna är det så här du gör det: du tar medeldata för de föregående dagarna och infogar dem i de skruvade.

Efter tre på morgonen gick jag och min kompis hem till mig och beställde en öl från alkoholmarknaden. Jag satt med en bärbar dator och Clickhouse-problem, en vän berättade något för mig. Som ett resultat blev han efter en timme förolämpad över att jag jobbade och inte drack öl med honom och gick. Klassisk – jag var en vän med Devops.

Vid 6-tiden återskapade jag tabellen igen, och data började strömma in. Allt fungerade utan några förluster.

Då var det jobbigt. Alla skyllde på varandra för dataförlusten. Om en ny bugg hade hänt, är jag säker på att det skulle ha blivit en skjutning

I dessa slagsmål började vi äntligen förstå – företaget trodde att vi var killarna som jobbar med data och övervakar tabellstrukturen. De blandade ihop administratörer med återförsäljare. Och de kom för att fråga oss något annat än administratörerna.

Deras huvudsakliga klagomål är - vad fan, du var ansvarig för säkerhetskopieringarna och gjorde dem inte ordentligt, du fortsatte att slösa bort data. Och allt detta med att rulla tillbaka mattor.

Jag ville ha rättvisa. Jag grävde fram korrespondensen och bifogade skärmdumpar på alla, där Leonid med all kraft tvingar dem att göra säkerhetskopian som gjordes. Deras bensinstation tog vår sida efter mitt telefonsamtal. Senare erkände Lenya sin skuld.

Chefen för företaget ville tvärtom inte skylla på sitt eget folk. Skärmdumpar och ord hade ingen effekt på honom. Han menade att eftersom vi var experter här måste vi övertyga alla och insistera på vårt beslut. Tydligen var vår uppgift att lära Lenya och dessutom gå förbi honom, som utsågs till projektledare, att komma till det viktigaste och personligen utgjuta alla våra tvivel om konceptet med säkerhetskopior till honom.

Chatten osade av hat, dold och dold aggression. Jag visste inte vad jag skulle göra. Allt har stannat. Och sedan rådde de mig det enklaste sättet - att skriva ett personligt meddelande till chefen och ordna ett möte med honom. Vasya, människor i verkliga livet är inte lika snabba som de är i chatten. Chefen svarade på mitt meddelande: kom, ingen fråga.

Det var det läskigaste mötet i min karriär. Min allierade från klienten - STO - kunde inte hitta tiden. Jag gick på mötet med chefen och Lena.

Om och om igen spelade jag upp vår eventuella dialog i mitt huvud. Jag hann komma väldigt tidigt, en halvtimme i förväg. Jag började bli nervös, jag rökte 10 cigaretter. Jag förstod, det var allt - jag är jävla ensam. Jag kommer inte att kunna övertyga dem. Och han klev in i hissen.

Medan han reste sig slog han tändaren så hårt att han bröt den.

Som ett resultat var Lenya inte med på mötet. Och vi hade ett bra samtal om allt med chefen! Sergei berättade om sin smärta. Han ville inte "automatisera Clickhouse" - han ville "få frågor att fungera."

Jag såg inte en get, men en bra kille, orolig för sin verksamhet, fördjupad i arbete 24/7. Chatten drar oss ofta skurkar, skurkar och dumma människor. Men i livet är dessa människor precis som du.

Sergei behövde inte ett par devops att hyra. Problemet de hade visade sig vara mycket större.

Jag sa att jag kunde lösa hans problem - det är bara ett helt annat jobb, och jag har en vän som jobbar för det. Om vi ​​hade vetat från början att det här var en affär för dem hade vi undvikit mycket. Det är sent, men vi insåg att problemet låg i dålig datahantering, inte i infrastrukturen.

Vi skakade hand, de höjde vår lön två och en halv gånger, men under förutsättning att jag tar absolut hela röran med deras data och Clickhouse för mig själv. I hissen kommunicerade jag med samma DI-kille Max och kopplade honom till jobbet. Det var nödvändigt att skotta hela klungan.

Det var mycket skräp i det antagna projektet. Börjar med den nämnda "backupen". Det visade sig att samma "backup"-kluster inte var isolerat. De testade allt på den, ibland satte den i produktion.

Våra interna utvecklare har skapat sin egen anpassade datainmatare. Han arbetade så här: han batchade filerna, körde skriptet och slog samman data till en tabell. Men huvudproblemet var att en enorm mängd data accepterades för en enkel begäran. Förfrågan sammanfogade data varje sekund. Allt för ett nummers skull - mängden per dag.

Interna utvecklare använde analysverktyget felaktigt. De gick till grafana och skrev sin kungliga begäran. Han laddade upp data i 2 veckor. Det visade sig vara en vacker graf. Men i verkligheten var databegäran var tionde sekund. Allt detta hopade sig i en kö eftersom Clickhouse helt enkelt inte tog bort bearbetningen. Det var här den främsta anledningen gömdes. Inget fungerade i Grafana, förfrågningar stod i kö och gamla, irrelevanta data kom hela tiden.

Vi konfigurerade om klustret, gjorde om infogningen. De interna utvecklarna skrev om sin "insättare" och den började klippa data korrekt.

Max genomförde en fullständig infrastrukturrevision. Han beskrev en plan för övergången till en fullfjädrad backend. Men detta passade inte företaget. De förväntade sig en magisk hemlighet från Max som skulle tillåta dem att arbeta på gammaldags sätt, men bara effektivt. Lenya var fortfarande ansvarig för projektet, och han lärde sig ingenting. Av allt som erbjöds valde han återigen sitt alternativ. Som alltid var detta det mest selektiva... djärva beslutet. Lenya trodde att hans företag hade en speciell väg. Taggigt och fullt av isberg.

Det var faktiskt där vi skildes åt – vi gjorde vad vi kunde.

Fulla av kunskap och visdom från denna historia, öppnade vi vår egen verksamhet och bildade flera principer för oss själva. Vi kommer aldrig att börja jobba på samma sätt nu som vi gjorde då.

DJ Max anslöt sig till oss efter det här projektet, och vi jobbar fortfarande bra tillsammans. Clickhouse-fallet lärde mig hur man genomför en fullständig och grundlig infrastrukturrevision innan arbetet påbörjas. Vi förstår hur allt fungerar och först då accepterar vi uppgifterna. Och om vi tidigare omedelbart skulle skynda oss att underhålla infrastrukturen, nu gör vi först ett engångsprojekt, som hjälper oss att förstå hur vi ska få den i fungerande skick.

Och ja, vi undviker projekt med taskig infrastruktur. Även om det är för mycket pengar, även om det är av vänskap. Det är olönsamt att driva sjuka projekt. Att inse detta hjälpte oss att växa. Antingen ett engångsprojekt för att få ordning på infrastrukturen och sedan ett underhållskontrakt, eller så flyger vi bara förbi. Förbi ett annat isberg.

PS Så om du har frågor om din infrastruktur, lämna gärna en förfrågan.

Vi har 2 gratis revisioner per månad, kanske ditt projekt blir en av dem.

Källa: will.com

Lägg en kommentar