Mens alle fejrede min fødselsdag, var jeg i gang med at ordne klyngen indtil morgenen - og udviklerne gav mig skylden for deres fejl

Mens alle fejrede min fødselsdag, var jeg i gang med at ordne klyngen indtil morgenen - og udviklerne gav mig skylden for deres fejl

Her er en historie, der for altid ændrede min tilgang til devops-arbejde. Tilbage i tiden før Covid, længe, ​​længe før dem, da fyrene og jeg bare planlagde vores egen forretning og freelancerede på tilfældige ordrer, faldt et tilbud ind i min kurv.

Virksomheden, der skrev dette, var en dataanalysevirksomhed. Hun behandlede tusindvis af anmodninger dagligt. De kom til os med ordene: gutter, vi har ClickHouse, og vi vil automatisere dets konfiguration og installation. Vi ønsker Ansible, Terraform, Docker og at det hele skal gemmes i Git. Vi ønsker en klynge af fire noder med to replikaer hver.

Det er en standardforespørgsel, der er snesevis af dem, og du har brug for en lige så god standardløsning. Vi sagde “ok”, og efter 2-3 uger var alt klar. De accepterede jobbet og begyndte at flytte til en ny Clickhouse-klynge ved hjælp af vores hjælpeprogram.

Ingen ville eller vidste, hvordan man pillede med Clickhouse. Så troede vi, at det var deres hovedproblem, og derfor gav firmaets servicestation simpelthen grønt lys til mit team for at automatisere arbejdet så meget som muligt, for ikke selv at komme dertil igen.

Vi fulgte med i flytningen, andre opgaver dukkede op - opsætning af backups og overvågning. I samme øjeblik fusionerede dette firmas tankstation med et andet projekt, hvilket efterlod os med en af ​​vores egne - Leonid - som kommandør. Lenya var ikke en særlig begavet fyr. En simpel udvikler, der pludselig fik ansvaret for Clickhouse. Det ser ud til, at dette var hans første opgave for at klare noget, og den overvældende ære fik ham til at føle sig starstruck.

Sammen gik vi i gang med at lave backups. Jeg foreslog at sikkerhedskopiere de originale data med det samme. Bare tag den, lyn den op og smid den elegant ind i en c3. Rådata er guld. Der var en anden mulighed - at sikkerhedskopiere selve tabellerne i Clickhouse ved at bruge en frysning og kopiering. Men Lenya kom med sin egen løsning.

Han meddelte, at vi har brug for en anden Clickhouse-klynge. Og fra nu af vil vi skrive data til to klynger - den primære og backup. Jeg siger til ham, Lenya, det bliver ikke en backup, men en aktiv replika. Og hvis data begynder at gå tabt i produktionen, vil det samme ske på din backup.

Men Lenya tog godt fat i rattet og nægtede at lytte til mine argumenter. Vi chattede med ham i lang tid i chatten, men der var ikke noget at gøre - Lenya stod for projektet, vi var bare hyrede børn fra gaden.

Vi overvågede klyngens tilstand og tog kun betaling for administratorernes arbejde. Ren Clickhouse-administration uden at komme ind i data. Klyngen var tilgængelig, diskene var fine, noderne var fine.

Vi vidste ikke, at vi modtog denne ordre på grund af en frygtelig misforståelse i deres team

Lederen var utilfreds med, at Clickhouse var langsom, og data gik nogle gange tabt. Han satte sin servicestation til opgave at finde ud af det. Han fandt ud af det, så godt han kunne, og konkluderede, at vi bare skulle automatisere Clickhouse - det er alt. Men som det hurtigt blev klart, havde de slet ikke brug for et hold af devops.

Alt dette viste sig at være meget, meget smertefuldt. Og det mest stødende var, at det var på min fødselsdag.

Fredag ​​aften. Jeg lavede en reservation på min yndlingsvinbar og inviterede homierne.

Næsten før vi rejser, modtager vi en opgave om at oprette en ændring, vi fuldfører den, alt er ok. Alter bestået, clickhouse bekræftet. Vi går allerede i baren, og de skriver til os, at der ikke er nok data. Vi beregnede, at alt ser ud til at være nok. Og de tog afsted for at fejre.

Restauranten var støjende på en fredag. Efter at have bestilt drikkevarer og mad, slappede vi af på sofaerne. Hele denne tid blev min slaphed langsomt oversvømmet med beskeder. De skrev noget om manglende data. Jeg tænkte – morgenen er klogere end aftenen. Især i dag.

Tættere på elleve begyndte de at ringe. Det var lederen af ​​virksomheden... "Har sikkert besluttet at lykønske mig," tænkte jeg meget tøvende og tog telefonen.

Og jeg hørte noget i retning af: "Du har ødelagt vores data! Jeg betaler dig, men intet virker! Du var ansvarlig for sikkerhedskopiering, og du gjorde ikke noget! Lad os ordne det!" - kun endnu rudere.

- Ved du hvad, kom for fanden ud! I dag er det min fødselsdag, og nu vil jeg drikke, og ikke engagere mig i dine juni hjemmelavede produkter fra crap og pinde!

Det sagde jeg ikke. I stedet tog jeg min bærbare computer frem og gik på arbejde.

Nej, jeg bombede, jeg bombede som helvede! Han hældte ætsende "jeg sagde det til dig" ind i chatten - fordi sikkerhedskopien, som slet ikke var en sikkerhedskopi, reddede selvfølgelig ikke noget.

Drengene og jeg fandt ud af, hvordan man manuelt kunne stoppe optagelsen og kontrollere alt. Vi sørgede faktisk for, at nogle af dataene ikke blev skrevet.

Vi stoppede med at optage og talte antallet af begivenheder, der var der pr. dag. De uploadede flere data, hvoraf kun en tredjedel ikke blev registreret. Tre skår med hver 2 replikaer. Du indsætter 100.000 rækker - 33.000 er ikke registreret.

Der var fuldstændig forvirring. Alle sagde til hinanden, at de skulle kneppe på skift: Lenya tog dertil først, efterfulgt af mig selv og grundlæggeren af ​​virksomheden. Kun den servicestation, der sluttede sig til, forsøgte at omstille vores råbende opkald og korrespondance til at finde en løsning på problemet.

Ingen forstod, hvad der virkelig skete

Fyrene og jeg blev simpelthen blæst bagover, da vi indså, at en tredjedel af al data ikke kun ikke var registreret, den var tabt! Det viste sig, at rækkefølgen i virksomheden var som følger: efter indsættelse blev dataene slettet uigenkaldeligt, begivenhederne blev spildt i partier. Jeg forestillede mig, hvordan Sergei ville konvertere alt dette til tabte rubler.

Min fødselsdag blev også smidt i skraldespanden. Vi sad i baren og genererede ideer og prøvede at løse det puslespil, der var blevet kastet efter os. Årsagen til Clickhouses fald var ikke indlysende. Måske er det netværket, måske er det Linux-indstillingerne. Ja, hvad end du vil, har der været hypoteser nok.

Jeg aflagde ikke udviklerens ed, men det var uærligt at forlade fyrene i den anden ende af linjen - selvom de gav os skylden for alt. Jeg var 99 % sikker på, at problemet ikke lå i vores beslutninger, ikke på vores side. 1% chance for, at vi havde skruet sammen, brændte af angst. Men uanset hvilken side problemerne var på, skulle det ordnes. At efterlade kunder, uanset hvem de er, med sådan et forfærdeligt datalæk er for grusomt.

Vi arbejdede ved restaurantbordet til tre om morgenen. Vi tilføjede begivenheder, indsatte valg, og så gik vi for at udfylde hullerne. Når du skruer op for dataene, er det sådan du gør det: Du tager gennemsnitsdata for de foregående dage og indsætter dem i de skruede.

Efter tre om morgenen gik min ven og jeg hjem til mig og bestilte en øl fra alkoholmarkedet. Jeg sad med en bærbar computer og Clickhouse-problemer, en ven fortalte mig noget. Som et resultat blev han efter en time fornærmet over, at jeg arbejdede og ikke drak øl med ham, og gik. Klassisk - jeg var en ven med Devops.

Ved 6-tiden genskabte jeg tabellen igen, og dataene begyndte at strømme ind. Alt fungerede uden tab.

Så var det svært. Alle gav hinanden skylden for datatabet. Hvis der var sket en ny fejl, er jeg sikker på, at der ville have været en shootout

I disse kampe begyndte vi endelig at forstå - virksomheden troede, at vi var de fyre, der arbejder med data og overvåger strukturen af ​​tabeller. De forvekslede administratorer med forhandlere. Og de kom for at spørge os om noget andet end administratorerne.

Deres vigtigste klage er - hvad fanden, du var ansvarlig for sikkerhedskopierne og gjorde dem ikke ordentligt, du fortsatte med at spilde dataene. Og alt dette med tilbagespolingsmåtter.

Jeg ville have retfærdighed. Jeg gravede korrespondancen frem og vedhæftede skærmbilleder af alle, hvor Leonid af al sin magt tvinger dem til at lave den backup, der blev lavet. Deres servicestation tog vores side efter mit telefonopkald. Senere indrømmede Lenya sin skyld.

Lederen af ​​virksomheden ønskede tværtimod ikke at bebrejde sine egne folk. Skærmbilleder og ord havde ingen effekt på ham. Han mente, at da vi var eksperter her, var vi nødt til at overbevise alle og insistere på vores beslutning. Tilsyneladende var vores opgave at lære Lenya og desuden omgå ham, der blev udpeget som projektleder, at komme til det vigtigste og personligt udøse al vores tvivl om konceptet med backup til ham.

Chatten osede af had, skjult og skjult aggression. Jeg vidste ikke, hvad jeg skulle gøre. Alt er gået i stå. Og så rådede de mig til den nemmeste måde - at skrive en personlig besked til lederen og aftale et møde med ham. Vasya, folk i det virkelige liv er ikke så hurtige, som de er i chatten. Chefen svarede på min besked: kom, ingen spørgsmål.

Det var det mest skræmmende møde i min karriere. Min allierede fra klienten - STO - kunne ikke finde tiden. Jeg gik til mødet med chefen og Lena.

Igen og igen afspillede jeg vores mulige dialog i mit hoved. Jeg nåede at komme meget tidligt, en halv time i forvejen. Jeg begyndte at blive nervøs, jeg røg 10 cigaretter. Jeg forstod, det var det - jeg er fandme alene. Jeg vil ikke være i stand til at overbevise dem. Og han trådte ind i elevatoren.

Mens han rejste sig, slog han lighteren så hårdt, at han brækkede den.

Som følge heraf var Lenya ikke med til mødet. Og vi havde en god snak om alt med chefen! Sergei fortalte mig om sin smerte. Han ønskede ikke at "automatisere Clickhouse" - han ville "få forespørgsler til at fungere."

Jeg så ikke en ged, men en god fyr, bekymret for sin virksomhed, fordybet i arbejde 24/7. Chat trækker os ofte skurke, skurke og dumme mennesker. Men i livet er disse mennesker ligesom dig.

Sergei havde ikke brug for et par devops til leje. Problemet, de havde, viste sig at være meget større.

Jeg sagde, at jeg kunne løse hans problemer - det er bare et helt andet job, og jeg har en ven, der arbejder for det. Hvis vi havde vidst fra begyndelsen, at det var en aftale for dem, havde vi undgået meget. Det er sent, men vi indså, at problemet lå i dårlig datahåndtering, ikke i infrastrukturen.

Vi gav hinanden hånden, de hævede vores løn to en halv gang, men på den betingelse, at jeg tager absolut hele rodet med deres data og Clickhouse for mig selv. I elevatoren kommunikerede jeg med den samme DI-fyr Max og koblede ham til arbejde. Det var nødvendigt at skovle hele klyngen.

Der var meget affald i det vedtagne projekt. Startende med den nævnte "backup". Det viste sig, at denne samme "backup"-klynge ikke var isoleret. De testede alt på det, nogle gange endda satte det i produktion.

Vores interne udviklere har lavet deres egen tilpassede dataindsætter. Han arbejdede sådan her: han batchede filerne, kørte scriptet og flettede dataene ind i en tabel. Men hovedproblemet var, at en enorm mængde data blev accepteret for en simpel anmodning. Anmodningen sluttede sig til dataene hvert sekund. Alt sammen for ét tals skyld - mængden pr. dag.

Interne udviklere brugte analyseværktøjet forkert. De gik til grafana og skrev deres kongelige anmodning. Han uploadede data i 2 uger. Det viste sig at være en smuk graf. Men i virkeligheden var dataanmodningen hvert 10. sekund. Alt dette hobede sig op i en kø, fordi Clickhouse simpelthen ikke tog forarbejdningen ud. Det var her hovedårsagen var gemt. Intet fungerede i Grafana, anmodninger stod i kø, og gamle, irrelevante data kom konstant.

Vi omkonfigurerede klyngen, genindsatte indsættelsen. De interne udviklere omskrev deres "indsætter", og det begyndte at sønderdele data korrekt.

Max gennemførte en komplet infrastrukturrevision. Han skitserede en plan for overgang til en fuldgyldig backend. Men det passede ikke virksomheden. De forventede en magisk hemmelighed fra Max, som ville give dem mulighed for at arbejde på den gammeldags måde, men kun effektivt. Lenya var stadig ansvarlig for projektet, og han lærte intet. Af alt, hvad der blev tilbudt, valgte han igen sit alternativ. Som altid var dette den mest selektive... dristige beslutning. Lenya mente, at hans firma havde en særlig vej. Tornet og fyldt med isbjerge.

Det var faktisk der, vi skiltes - vi gjorde, hvad vi kunne.

Fuld af viden og visdom fra denne historie åbnede vi vores egen virksomhed og dannede flere principper for os selv. Vi vil aldrig begynde at arbejde på samme måde nu, som vi gjorde dengang.

DJ Max sluttede sig til os efter dette projekt, og vi arbejder stadig godt sammen. Clickhouse-sagen lærte mig, hvordan man udfører en komplet og grundig infrastrukturrevision, før arbejdet påbegyndes. Vi forstår, hvordan alt fungerer, og først derefter accepterer vi opgaverne. Og hvis vi tidligere straks ville skynde os at vedligeholde infrastrukturen, laver vi nu først et engangsprojekt, som hjælper os med at forstå, hvordan vi bringer den i funktionsdygtig stand.

Og ja, vi undgår projekter med dårlig infrastruktur. Også selvom det er for mange penge, selvom det er af venskab. Det er urentabelt at drive syge projekter. At indse dette hjalp os med at vokse. Enten et engangsprojekt for at få styr på infrastrukturen og så en vedligeholdelseskontrakt, eller også flyver vi bare forbi. Forbi endnu et isbjerg.

PS Så hvis du har spørgsmål om din infrastruktur, efterlad gerne en anmodning.

Vi har 2 gratis revisioner om måneden, måske bliver dit projekt et af dem.

Kilde: www.habr.com

Tilføj en kommentar