Terwijl iedereen mijn verjaardag vierde, was ik tot de ochtend bezig met het repareren van het cluster - en de ontwikkelaars gaven mij de schuld van hun fouten

Terwijl iedereen mijn verjaardag vierde, was ik tot de ochtend bezig met het repareren van het cluster - en de ontwikkelaars gaven mij de schuld van hun fouten

Hier is een verhaal dat mijn benadering van het devops-werk voor altijd heeft veranderd. In de pre-Covid-tijden, lang, lang daarvoor, toen de jongens en ik net onze eigen onderneming aan het plannen waren en freelancen op willekeurige bestellingen, viel er één aanbieding in mijn winkelwagentje.

Het bedrijf dat dit schreef was een data-analysebedrijf. Ze verwerkte dagelijks duizenden verzoeken. Ze kwamen naar ons toe met de woorden: jongens, we hebben ClickHouse en we willen de configuratie en installatie ervan automatiseren. We willen dat Ansible, Terraform, Docker en alles in Git worden opgeslagen. We willen een cluster van vier knooppunten met elk twee replica's.

Het is een standaardverzoek, er zijn er tientallen, en je hebt een even goede standaardoplossing nodig. We zeiden “ok”, en na 2-3 weken was alles klaar. Ze accepteerden de baan en begonnen met behulp van ons hulpprogramma te verhuizen naar een nieuw Clickhouse-cluster.

Niemand wilde of wist hoe hij aan Clickhouse moest sleutelen. Toen dachten we dat dit hun grootste probleem was, en daarom gaf het servicestation van het bedrijf eenvoudigweg toestemming aan mijn team om het werk zoveel mogelijk te automatiseren, zodat ik er zelf nooit meer heen zou gaan.

Wij begeleidden de verhuizing, er kwamen andere taken bij: het opzetten van back-ups en monitoring. Op hetzelfde moment fuseerde het tankstation van dit bedrijf met een ander project, waardoor we een van onze eigen - Leonid - als commandant achterlieten. Lenya was geen erg begaafde man. Een eenvoudige ontwikkelaar die plotseling de leiding kreeg over Clickhouse. Het lijkt erop dat dit zijn eerste opdracht was om iets te beheren, en de overweldigende eer zorgde ervoor dat hij zich onder de indruk voelde.

Samen zijn we aan de slag gegaan met het maken van backups. Ik stelde voor om meteen een back-up te maken van de originele gegevens. Neem het gewoon, rits het dicht en gooi het elegant in een of andere c3. Ruwe data zijn goud. Er was nog een andere optie: een back-up maken van de tabellen zelf in Clickhouse, door middel van bevriezen en kopiëren. Maar Lenya kwam met zijn eigen oplossing.

Hij kondigde aan dat we een tweede Clickhouse-cluster nodig hebben. En vanaf nu zullen we gegevens naar twee clusters schrijven: de hoofdcluster en de back-up. Ik zeg hem, Lenya, dat het geen back-up zal zijn, maar een actieve replica. En als er gegevens verloren gaan tijdens de productie, zal hetzelfde gebeuren met uw back-up.

Maar Lenya pakte het stuur stevig vast en weigerde naar mijn argumenten te luisteren. We praatten lange tijd met hem in de chat, maar er was niets te doen - Lenya had de leiding over het project, we waren gewoon ingehuurde kinderen van de straat.

We hielden de status van het cluster in de gaten en brachten alleen kosten in rekening voor het werk van beheerders. Pure Clickhouse-administratie zonder in de data te duiken. Het cluster was beschikbaar, de schijven waren in orde, de knooppunten waren in orde.

We wisten niet dat we deze bestelling ontvingen vanwege een verschrikkelijk misverstand binnen hun team

De manager was er niet blij mee dat Clickhouse traag was en dat er soms gegevens verloren gingen. Hij gaf zijn tankstation de opdracht om dit uit te zoeken. Hij zocht het zo goed mogelijk uit en kwam tot de conclusie dat we alleen het Clickhouse moesten automatiseren - dat is alles. Maar zoals al snel duidelijk werd, hadden ze helemaal geen team van devops nodig.

Dit alles bleek heel erg pijnlijk te zijn. En het meest aanstootgevende was dat het op mijn verjaardag was.

Vrijdag avond. Ik maakte een reservering bij mijn favoriete wijnbar en nodigde de homies uit.

Bijna voordat we vertrekken, krijgen we de opdracht om een ​​altaar te maken, we voltooien het, alles is in orde. Alter geslaagd, clickhouse bevestigd. We gaan al naar de bar en ze schrijven ons dat er niet genoeg gegevens zijn. We hebben berekend dat alles genoeg lijkt te zijn. En ze vertrokken om het te vieren.

Het restaurant was luidruchtig op vrijdag. Nadat we drankjes en eten hadden besteld, luierden we op de banken. Al die tijd werd mijn geheugen langzaam overspoeld met berichten. Ze schreven iets over een gebrek aan data. Ik dacht: de ochtend is wijzer dan de avond. Vooral vandaag.

Dichter bij elf uur begonnen ze te bellen. Het was het hoofd van het bedrijf... 'Ik heb waarschijnlijk besloten mij te feliciteren', dacht ik heel aarzelend, en pakte de telefoon.

En ik hoorde zoiets als: “Je hebt onze gegevens verpest! Ik betaal je, maar niets werkt! Jij was verantwoordelijk voor de back-ups, en je hebt helemaal niets gedaan! Laten we het oplossen!" - alleen nog ruwer.

- Weet je wat, ga verdomme weg! Vandaag ben ik jarig, en nu ga ik drinken, en niet meedoen aan je zelfgemaakte juni-producten van onzin en stokken!

Dat is wat ik niet zei. In plaats daarvan pakte ik mijn laptop en ging aan de slag.

Nee, ik bombardeerde, ik bombardeerde als de hel! Hij goot bijtend "Ik zei het toch" in de chat - omdat de back-up, die helemaal geen back-up was, natuurlijk niets opsloeg.

De jongens en ik hebben ontdekt hoe we de opname handmatig kunnen stoppen en alles kunnen controleren. We hebben er feitelijk voor gezorgd dat sommige gegevens niet zijn geschreven.

We stopten met opnemen en telden het aantal evenementen dat er per dag was. Ze uploadden meer gegevens, waarvan slechts een derde niet werd vastgelegd. Drie scherven met elk 2 replica's. U voegt 100.000 rijen in; 33.000 worden niet geregistreerd.

Er was volledige verwarring. Iedereen zei tegen elkaar dat ze om beurten moesten oprotten: Lenya ging er eerst heen, gevolgd door mijzelf en de oprichter van het bedrijf. Alleen het aangesloten tankstation probeerde onze schreeuwende oproepen en correspondentie om te leiden naar het vinden van een oplossing voor het probleem.

Niemand begreep wat er werkelijk gebeurde

De jongens en ik waren gewoon weggeblazen toen we beseften dat een derde van alle gegevens niet alleen niet werd vastgelegd, maar ook verloren ging! Het bleek dat de volgorde in het bedrijf als volgt was: na het invoegen werden de gegevens onherroepelijk verwijderd, de gebeurtenissen werden in batches verspild. Ik stelde me voor hoe Sergei dit allemaal in verloren roebels zou omzetten.

Mijn verjaardag werd ook in de prullenbak gegooid. We zaten aan de bar en genereerden ideeën, in een poging de puzzel op te lossen die naar ons was gegooid. De reden voor de val van Clickhouse was niet duidelijk. Misschien ligt het aan het netwerk, misschien aan de Linux-instellingen. Ja, wat je ook wilt, er zijn genoeg hypotheses geweest.

Ik heb de eed van de ontwikkelaar niet afgelegd, maar het was oneerlijk om de jongens aan de andere kant van de lijn in de steek te laten, zelfs als ze ons van alles de schuld gaven. Ik was er 99% zeker van dat het probleem niet in onze beslissingen lag, niet aan onze kant. De kans van 1% dat we het verprutst hadden, brandde van angst. Maar aan welke kant het probleem zich ook bevond, het moest opgelost worden. Klanten, wie ze ook zijn, met zo’n vreselijk datalek achterlaten is te wreed.

We werkten tot drie uur in de ochtend aan de restauranttafel. We voegden evenementen toe, voegden selectie in en gingen de gaten opvullen. Als je de gegevens verprutst, doe je dat als volgt: je neemt de gemiddelde gegevens van de voorgaande dagen en voegt deze in de verprutste gegevens in.

Na drie uur 's ochtends gingen mijn vriend en ik naar mijn huis en bestelden een biertje op de alcoholmarkt. Ik zat met een laptop en Clickhouse-problemen, een vriend vertelde me iets. Als gevolg hiervan was hij na een uur beledigd dat ik aan het werk was en geen bier met hem dronk, en vertrok. Klassiek - Ik was een vriend van Devops.

Om zes uur 's ochtends maakte ik de tabel opnieuw en de gegevens begonnen te stromen. Alles werkte zonder enig verlies.

Toen was het moeilijk. Iedereen gaf elkaar de schuld van het gegevensverlies. Als er een nieuwe bug was opgetreden, weet ik zeker dat er een vuurgevecht zou zijn geweest

In deze gevechten begonnen we het eindelijk te begrijpen: het bedrijf dacht dat wij de jongens waren die met gegevens werken en de structuur van tabellen controleren. Ze verwarden beheerders met dealers. En zij kwamen ons iets anders vragen dan de beheerders.

Hun voornaamste klacht is: hoe dan ook, jij was verantwoordelijk voor de back-ups en deed ze niet goed, je bleef de gegevens verspillen. En dit alles met oprolmatten.

Ik wilde gerechtigheid. Ik heb de correspondentie opgegraven en screenshots van iedereen bijgevoegd, waarbij Leonid hen met alle macht dwingt de gemaakte back-up te maken. Hun tankstation koos onze kant na mijn telefoontje. Later gaf Lenya zijn schuld toe.

Het hoofd van het bedrijf wilde daarentegen zijn eigen mensen niet de schuld geven. Screenshots en woorden hadden geen effect op hem. Hij was van mening dat we, omdat we hier experts waren, iedereen moesten overtuigen en op onze beslissing moesten blijven staan. Blijkbaar was het onze taak om Lenya te leren en bovendien hem, die was aangesteld als projectmanager, te omzeilen om tot het belangrijkste te komen en persoonlijk al onze twijfels over het concept van back-ups bij hem uit te storten.

De chat was doordrenkt van haat, verborgen en onverborgen agressie. Ik wist niet wat ik moest doen. Alles is tot stilstand gekomen. En toen adviseerden ze me de gemakkelijkste manier: een persoonlijk bericht aan de manager schrijven en een ontmoeting met hem regelen. Vasya, mensen in het echte leven zijn niet zo snel als in de chat. De baas antwoordde op mijn bericht: kom, geen vraag.

Het was de engste ontmoeting uit mijn carrière. Mijn bondgenoot van de klant - STO - kon de tijd niet vinden. Ik ging naar de ontmoeting met de baas en Lena.

Keer op keer herhaalde ik onze mogelijke dialoog in mijn hoofd. Ik slaagde erin heel vroeg aan te komen, een half uur van tevoren. Ik begon zenuwachtig te worden, ik rookte 10 sigaretten, ik begreep het, dat is alles - ik ben verdomd alleen. Ik zal ze niet kunnen overtuigen. En hij stapte de lift in.

Terwijl hij opstond, sloeg hij zo hard op de aansteker dat deze brak.

Als gevolg hiervan was Lenya niet aanwezig op de bijeenkomst. En we hadden een goed gesprek over alles met de baas! Sergei vertelde me over zijn pijn. Hij wilde Clickhouse niet 'automatiseren' - hij wilde 'query's laten werken'.

Ik zag geen geit, maar een goede kerel, bezorgd over zijn bedrijf, 24/7 ondergedompeld in zijn werk. Chat trekt ons vaak als schurken, schurken en domme mensen. Maar in het leven zijn dit mensen zoals jij.

Sergei had geen paar devops nodig om in te huren. Het probleem dat zij hadden bleek veel groter.

Ik zei dat ik zijn problemen kon oplossen - het is gewoon een heel andere baan, en ik heb een vriend die ervoor werkt. Als we vanaf het begin hadden geweten dat dit een deal voor hen was, hadden we veel vermeden. Het is laat, maar we realiseerden ons dat het probleem in waardeloos gegevensbeheer lag, en niet in de infrastructuur.

We schudden elkaar de hand, ze verhoogden ons loon twee en een half keer, maar op voorwaarde dat ik absoluut de hele rotzooi met hun gegevens en Clickhouse voor mezelf zou overnemen. In de lift communiceerde ik met diezelfde DI-man Max en verbond hem met zijn werk. Het was noodzakelijk om het hele cluster te scheppen.

Er zat veel afval in het aangenomen project. Te beginnen met de genoemde “back-up”. Het bleek dat ditzelfde “back-up” cluster niet geïsoleerd was. Ze hebben er alles op getest en soms zelfs in productie genomen.

Onze interne ontwikkelaars hebben hun eigen aangepaste gegevensinvoeger gemaakt. Hij werkte als volgt: hij plaatste de bestanden in een batch, voerde het script uit en voegde de gegevens samen in een tabel. Maar het grootste probleem was dat voor één eenvoudig verzoek een enorme hoeveelheid gegevens werd geaccepteerd. Het verzoek werd elke seconde samengevoegd met de gegevens. Allemaal omwille van één getal: het bedrag per dag.

Interne ontwikkelaars gebruikten de analysetool verkeerd. Ze gingen naar de grafana en schreven hun koninklijk verzoek. Hij uploadde gegevens voor 2 weken. Het is een prachtige grafiek geworden. Maar in werkelijkheid was het gegevensverzoek elke 10 seconden. Dit alles stapelde zich op in de rij omdat Clickhouse de verwerking eenvoudigweg niet uitschakelde. Dit is waar de belangrijkste reden verborgen was. Niets werkte in Grafana, verzoeken stonden in de rij en er kwamen voortdurend oude, irrelevante gegevens binnen.

We hebben het cluster opnieuw geconfigureerd en de invoeging opnieuw uitgevoerd. De interne ontwikkelaars herschreven hun “inserter” en deze begon de gegevens correct te delen.

Max voerde een volledige infrastructuuraudit uit. Hij schetste een plan voor de transitie naar een volwaardige backend. Maar dit paste niet bij het bedrijf. Ze verwachtten van Max een magisch geheim waarmee ze op de ouderwetse manier konden werken, maar alleen efficiënt. Lenya had nog steeds de leiding over het project en hij leerde niets. Uit alles wat hem werd aangeboden, koos hij opnieuw zijn alternatief. Zoals altijd was dit de meest selectieve, gedurfde beslissing. Lenya geloofde dat zijn bedrijf een speciaal pad volgde. Netelig en vol ijsbergen.

Eigenlijk is dat waar we afscheid namen – we hebben gedaan wat we konden.

Vol kennis en wijsheid uit deze geschiedenis openden we onze eigen onderneming en vormden we een aantal principes voor onszelf. We zullen nu nooit meer op dezelfde manier aan de slag gaan als toen.

DJ Max kwam na dit project bij ons werken en we werken nog steeds prima samen. De Clickhouse-casus heeft mij geleerd hoe ik een volledige en grondige infrastructuuraudit kan uitvoeren voordat ik aan het werk ga. Wij begrijpen hoe alles werkt en aanvaarden dan pas de taken. En als we ons eerder onmiddellijk zouden haasten om de infrastructuur te onderhouden, doen we nu eerst een eenmalig project, dat ons helpt te begrijpen hoe we deze in werkende staat kunnen brengen.

En ja, we vermijden projecten met een waardeloze infrastructuur. Ook al is het voor veel geld, ook al is het uit vriendschap. Het is niet rendabel om zieke projecten te runnen. Het besef hiervan heeft ons geholpen te groeien. Ofwel een eenmalig project om de infrastructuur op orde te krijgen en daarna een onderhoudscontract, ofwel we vliegen er gewoon langs. Nog een ijsberg voorbij.

PS Dus als u vragen heeft over uw infrastructuur, laat gerust een verzoek achter.

We hebben 2 gratis audits per maand, wellicht is uw project daar één van.

Bron: www.habr.com

Voeg een reactie