
Kjo është një histori që e ndryshoi përjetësisht qasjen time ndaj punës në DevOps. Akoma në kohët para COVID-it, shumë kohë para se të ndodhte, kur me djemtë sapo ishim duke menduar për biznesin tonë dhe punonim si freelancer në projekte rastësore, më erdhi një ofertë në Telegram.
Kompania që e shkroi merrej me analizën e të dhënave. Ajo përpunonte mijëra kërkesa çdo ditë. Ata na kontaktuan duke thënë: djem, kemi ClickHouse dhe duam të automatizojmë konfigurimin dhe instalimin e tij. Duam Ansible, Terraform, Docker dhe që gjithçka të ruhej në Git. Duam një grup prej katër nodësh me dy replika në secilën.
Kjo ishte një kërkesë standarde, siç ka shumë të tjera, dhe na duhej një zgjidhje standarde e njëjtë. Ne thamë 'okey' dhe brenda 2-3 javësh gjithçka ishte gati. Ata e pranuan punën dhe filluan të kalonin në grupin e ri të ClickHouse me ndihmën e utilitarit tonë.
Askush nga ata nuk donte dhe nuk dinte të merrej me ClickHouse. Atëherë menduam se kjo ishte problemi i tyre kryesor dhe për këtë arsye CTO i kompanisë thjesht i dha komandën ekipit tim që ta automatizonte punën në maksimum, për të mos e prekur më kurrë vetë.
Ne ndoqëm kalimin, u shfaqën detyra të tjera - të konfiguroni backupet dhe monitorimin. Në atë moment CTO i kësaj kompanie u largua për në një projekt tjetër, duke na lënë në komandë një nga të tijët - Leonidin. Lënda kishte një ndihmë të moderate. Një zhvillues i thjeshtë, të cilin papritur e caktuan si kreun për ClickHouse. Dukej se ishte emërimi i tij i parë për të udhëhequr diçka, dhe nga nderi i habitshëm, i doli një sindromë e famshme.
Bashkë filluam të punonim për backupet. Unë sugjeroja që të bëjmë backup të dhënash të origjinës menjëherë. Thjesht t'i merrnim, t'i ziponim dhe elegantisht t'i dërgonim në një S3. Të dhënat e origjinës janë ar. Kishte edhe një mundësi tjetër - të bëjmë backup të tabelave vetë në ClickHouse, përmes ngrirjes dhe kopjimit. Por Leonid kishte një zgjidhje të tijën.
Ai shpalli se na duhej një grup i dytë ClickHouse. Dhe nga tani do të shkruanim të dhëna në dy grupe - kryesorin dhe atë të backup-it. I thashë, Leonid, kjo nuk do të jetë backup - por një replikë aktive. Dhe nëse të dhënat fillojnë të humbasin në prodhim, do të ketë të njëjtën gjë në backup-in tënd.
Por Leonid ishte fort i vendosur dhe nuk pranoi të dëgjonte argumentet e mia. Ne u grindëm gjatë në chat, por asgjë për të bërë - Leonid ishte në timon të projektit, ne ishim thjesht djem të punësuar nga rruga.
Ne kemi monitoruar gjendjen e klasterit dhe merret vetëm një tarifë për punën e administratoreve. Administrim i pastër i ClickHouse pa prekur të dhënat. Klasteri ishte në dispozicion, disqet ishin në gjendje të mirë, nodet ishin në rregull.
Ne ende nuk e dyshonim se e morëm këtë porosi për shkak të një keqkuptimi të tmerrshëm brenda ekipit të tyre.
Menaxheri ishte i shqetĂ«suar qĂ« ClickHouse po punonte ngadalĂ« dhe ndonjĂ«herĂ« humbeshin tĂ« dhĂ«nat. Ai i dha CTO-sĂ« sĂ« tij detyrĂ«n pĂ«r tĂ« zbuluar situatĂ«n. Ai zbuloi se si mundej dhe arriti nĂ« pĂ«rfundimin se thjesht duhej automatizuar ClickHouse â dhe ça u bĂ«. Por, siç doli nĂ« pah mĂ« vonĂ«, ata nuk kishin nevojĂ« pĂ«r njĂ« ekip dev ops.
Të gjitha këto u zbuluan shumë-ngadalë. Dhe më e hidhur, kjo ndodhi në ditëlindjen time.
E premte, mbrëmje. Kisha rezervuar një tavolinë në barin tim të preferuar të verës dhe thirra shokët.
PikĂ«risht para se tĂ« dalim, na erdhi njĂ« detyrĂ« pĂ«r tĂ« bĂ«rĂ« njĂ« alter, ne e kryem, gjithçka ishte nĂ« rregull. Alteri kaloi, ClickHouse e konfirmoi. Ne tashmĂ« ishim mbledhur pĂ«r nĂ« bar, kur na shkruan se nuk kishte tĂ« dhĂ«na tĂ« mjaftueshme. E llogaritĂ«m â duket se kishte gjithçka. Dhe shkuam tĂ« festojmĂ«.
NĂ« restorant ishte shumĂ« e zhurmshme si zakonisht nĂ« tĂ« premten. Pas porosisĂ« sĂ« pijeve dhe ushqimit, ne u shplodhĂ«m nĂ« divanĂ«. GjatĂ« gjithĂ« kĂ«saj kohe, Slack-u im ngadalĂ« u mbush me mesazhe. Kishin shkruar diçka pĂ«r mungesĂ«n e tĂ« dhĂ«nave. Mendoja â mĂ«ngjesi Ă«shtĂ« mĂ« i mençur se mbrĂ«mja. Sidomos pĂ«r ditĂ«n e sotme.
Afërsisht në11:00 filluan të telefonojnë. Ishte menaxheri i kompanisë... "Ndoshta vendosi të më urojë", mendova shumë me pasiguri dhe e mora telefonin.
Dhe dĂ«gjova diçka nĂ« frymĂ«n e: "Ju humbĂ«t tĂ« dhĂ«nat tona! Po ju paguaj, por asgjĂ« nuk funksionon! Ju ishit pĂ«rgjegjĂ«s pĂ«r backup-et dhe nuk keni bĂ«rĂ« asgjĂ«! Hidhini duar!" â vetĂ«m akoma mĂ« ashpĂ«r.
â E di çfarĂ«, shko tĂ« lutem! Sot Ă«shtĂ« ditĂ«lindja ime, dhe tani do tĂ« pijĂ«, e jo tĂ« merrem me ndĂ«rtimet tuaja tĂ« varfra me dijeninĂ« e djemve tuaj!
Kështu që unë nuk e thashë këtë. Në vend të kësaj, nxora laptopin dhe fillova punën.
Jo, unĂ« isha nĂ« stres, isha tmerrĂ«sisht nĂ«n stres! DĂ«rgova nĂ« chat ndjenja tĂ« hidhura "tĂ« thashĂ«" â sepse backup-i qĂ« nuk ishte as backup, sigurisht qĂ« nuk shpĂ«toi asgjĂ«.
Ne me djemtë e tjerë gjetëm një mënyrë për të ndaluar regjistrimin manualisht dhe për të kontrolluar gjithçka. Me të vërtetë u siguruam që një pjesë e të dhënave nuk po shkruhej.
Ndaluam regjistrimin, llogarita numrin e ngjarjeve qĂ« ishin nĂ« dispozicion pĂ«r njĂ« ditĂ«. Shtuam edhe tĂ« dhĂ«na, nga tĂ« cilat vetĂ«m njĂ« e treta nuk u regjistrua. Tre shard-e me 2 replika. Shton 100,000 rreshta â 33,000 nuk regjistrohen.
Ishte njĂ« kaos i plotĂ«. Ădo kush ia dĂ«rgonte njĂ«ri-tjetrit nĂ« ferr me radhĂ«: i pari qĂ« shkoi ishte LĂ«nja, pas tij shkova unĂ« dhe themeluesi i kompanisĂ«. VetĂ«m CTO qĂ« sapo ishte bashkuar pĂ«rpiqej tĂ« qetĂ«sojĂ« thirrjet tona me britma dhe biseda nĂ« kĂ«rkim tĂ« zgjidhjes sĂ« problemit.
Askush nuk e kuptonte çfarë po ndodhte në të vërtetë.
Ne me djemtĂ« ishim tĂ« habitur kur kuptuam se njĂ« e treta e tĂ« dhĂ«nave jo vetĂ«m qĂ« nuk regjistroheshin â ato humbnin! Doli se rregulli nĂ« kompani ishte i tillĂ«: pas shtimit, tĂ« dhĂ«nat fshiheshin pa kthim, ngjarjet humbnin grupe. E imagjinova si Serxhio do ta shndĂ«rronte tĂ« gjithĂ« kĂ«tĂ« nĂ« para tĂ« humbura.
Ditëlindja ime gjithashtu përfundoi në plehra. Ne ishim ulur në bar dhe po gjeneronim ide, duke u përpjekur të zgjidhim enigmën e hedhur. Arsyet e rënies së ClickHouse nuk ishin të qarta. Ndoshta ishte rrjeti, ndoshta ishte për arsyet e Linux-it. Një mori hipotezash dolën.
Nuk kisha bĂ«rĂ« betim si zhvillues, por ishte e pamoralshme tĂ« lija djemtĂ« nĂ« cepin tjetĂ«r tĂ« telit â edhe nĂ«se ata na fajsonin pĂ«r gjithçka. Isha 99% i sigurt se problemi nuk ishte nĂ« zgjidhjet tona, nuk ishte nga ana jonĂ«. 1% mundĂ«sie qĂ« ne tĂ« kishim gabuar mĂ« brente me shqetĂ«sim. Por pavarĂ«sisht se nĂ« anĂ«n e kujt ishte katastrofa â duhej ta zgjidhnim. TĂ« lĂ« klientĂ«t, pavarĂ«sisht se kush ishin, me njĂ« rrjedhje kaq tĂ« tmerrshme tĂ« tĂ« dhĂ«nave â Ă«shtĂ« shumĂ« e ashpĂ«r.
Derisa erdhi tre pasdite, punuam nĂ« tavolinĂ«n e restorantit. Shtonim ngjarje, insert select â dhe filluam tĂ« mbushnim boshllĂ«qet. Kur humb tĂ« dhĂ«na, e bĂ«n kĂ«shtu â merr tĂ« dhĂ«nat mesatare nga ditĂ«t e kaluara dhe i shton ato nĂ« vendet e humbura.
Pas tre pasdite, shkova me njĂ« shok nĂ« shtĂ«pinĂ« time, porosita disa birra nga dyqani. UnĂ« isha ulur me laptopin dhe problemet e ClickHouse-it, shoku mĂ« tregonte diçka. NĂ« fund, pas njĂ« ore, ai u ofendua qĂ« unĂ« punoja dhe nuk pimĂ« birrĂ« sĂ« bashku, dhe u largua. Klasikja â ishte mik i devops-it pĂ«r njĂ« moment.
NĂ« orĂ«n 6 tĂ« mĂ«ngjesit, krijova pĂ«rsĂ«ri tabelĂ«n nga e para, dhe tĂ« dhĂ«nat filluan tĂ« ngarkoheshin. Ădo gjĂ« filloi tĂ« funksionojĂ« pa humbje.
MĂ« pas ishte e vĂ«shtirĂ«. Ădo kush akuzonte njĂ«ri-tjetrin pĂ«r humbjen e tĂ« dhĂ«nave. Sikur tĂ« ndodhte njĂ« bug i ri, jam i sigurt se do tĂ« fillonte njĂ« shkĂ«mbim zjarri.
NĂ« kĂ«to pĂ«rplasje, ne pĂ«rfundimisht filluam tĂ« kuptojmĂ« â nĂ« kompani ishin menduar se ne ishim ata djem qĂ« punonin me tĂ« dhĂ«nat dhe ndihmonin me strukturĂ«n e tabelave. Ata ngatĂ«rruan administratorĂ«t me DBAs. Dhe erdhĂ«n tĂ« na pyesnin, pĂ«r asgjĂ« mĂ« pak se si administratorĂ«.
Ankesa e tyre kryesore â pĂ«rse, o Zot, ishit pĂ«rgjegjĂ«s pĂ«r back-upe dhe nuk i bĂ«tĂ« siç duhet, humbĂ«t tĂ« dhĂ«nat. Dhe gjithĂ« kjo me shprehje tĂ« ashpra.
Më duhej drejtësia. E gjeta bisedën dhe bashkëngjita të gjitha screenshot-et, ku Leonidi me forcë kërkonte të bëhej ky backup, që ishte bërë. CTO-ja i tyre u vu në anën tonë pas telefonatës sime. Më pas, Lenya pranoi fajin e tij.
Kreu i kompanisë, nga ana tjetër, nuk donte të fajësonte të tijtë. Screenshot-et dhe fjalët nuk e preknin. Ai mendonte se, meqenëse ne ishim ekspertë këtu, duhej të kishim bindur të gjithë dhe insistuar për vendimin tonë. Dukeshin se detyra jonë ishte të mësonim Lenyën dhe gjithashtu në anash të tij, të emëruar drejtues i projektit, të arrinim te kryesori dhe t'i tregonim të gjitha dyshimet tona mbi konceptin e back-upeve.
Chat-i lĂ«shonte urrejtje, agresion tĂ« fshehtĂ« dhe tĂ« hapur. Nuk dija si tĂ« sillem. Gjithçka arriti nĂ« njĂ« pikĂ« tĂ« verbĂ«r. Dhe kĂ«tu mĂ« kĂ«shilluan mĂ«nyrĂ«n mĂ« tĂ« thjeshtĂ« â tĂ« shkruaja nĂ« privat drejtorit dhe tĂ« ndĂ«rtoja njĂ« takim me tĂ«. Vasja, njerĂ«zit nĂ« jetĂ«n reale nuk janĂ« kaq tĂ« guximshĂ«m si nĂ« chat. NĂ« mesazhin tim, shefi u pĂ«rgjigj: erdha, pa problem.
Ishte takimi mĂ« i çuditshĂ«m nĂ« karrierĂ«n time. Aleati im nga klienti â CTO â nuk mundi tĂ« gjente kohĂ«. NĂ« takim po shkova te shefi dhe Leonidi.
PĂ«rsĂ«ri e pĂ«rsĂ«risja nĂ« mendjen time dialogun tonĂ« tĂ« mundshĂ«m. Arrita tĂ« vij shumĂ« para, gjysmĂ« ore pĂ«rpara. Filloi nervozizmi, kam tymosur 10 cigare. E dija, gjithçka â isha, pĂ«rfundimisht, vetĂ«m. Nuk do tĂ« mund t'i bindja ata. Dhe nisa pĂ«r nĂ« ashensor.
Ndërsa po ngjitesha, sa e ndeza zippo-n, e thava.
NĂ« fund, Leonidi nuk ishte nĂ« takim. Dhe biseduam mrekullisht pĂ«r gjithçka me kryesori! Sergey mĂ« tregoi pĂ«r dhimbjen e tij. Ai nuk donte tĂ« "automatizonte ClickHouse" â ai donte, "qĂ« kĂ«rkesat tĂ« funksiononin".
Nuk pashë një demon, por një djalë të mirë, që ishte i shqetësuar për biznesin e tij, i angazhuar në punë 24/7. Chat-i shpesh na paraqet ngatërrestarët, tradhëtarët dhe budallenjtë. Por në jetën reale, ata janë njerëz si ty.
Sergjeu nuk kishte nevojë për dy devops të angazhuar. Problemi që kishin ndodhur ishte më i madh.
I said that I could solve his problems â it's just a completely different job, and I have an acquaintance who is a DBA for it. If we had known from the beginning that this was for them, we would have avoided a lot. Itâs late, but we understood that the problem lay in poor data handling and not in the infrastructure.
We shook hands, our fee was raised two and a half times, but on the condition â I take all the headaches with their data and ClickHouse for myself. In the elevator, I contacted that very DBA Max and brought him on board. We had to restructure the entire cluster.
There was a lot of junk in the accepted project. Starting with the aforementioned âbackupâ. It turned out that this âbackupâ cluster was not isolated. They were testing everything on it, sometimes even putting things into production.
The in-house developers created their own custom âdata inserterâ. It worked like this: it batched files, ran a script, and poured data into a table. But the main problem was that a huge amount of data was accepted for one simple query. The query was joining data by the second. All of this was for one number â the sum for the day.
The in-house developers incorrectly used the analytics tool. They would go into Grafana and write their royal query. It exported data for 2 weeks. The beautiful graph was produced. But in reality, the data query was running every 10 seconds. All this piled up in the queue, as ClickHouse simply couldnât handle the processing. Thatâs where the main reason lay. In Grafana, nothing worked, requests queued up, and outdated data constantly came in.
We reconfigured the cluster, redesigned the insert. The in-house developers rewrote their âinserterâ, and it began sharding data correctly.
Max conducted a complete audit of the infrastructure. He outlined a plan for transitioning to a full-fledged backend. But this did not satisfy the company. They expected Max to reveal a magical secret that would allow them to work the old way, but effectively. Leonid was still responsible for the project, having learned nothing. From all that was proposed, he chose his alternative again. As always, it was the most selective... bold decision. Leonid believed that his company had a special path. A thorny one full of icebergs.
Actually, that's how we parted ways â we did what we could.
Me të shumtë përvojash, të nxitur nga ky tregim, ne hapëm biznesin tonë dhe formuam disa parime për veten. Tani ne kurrë nuk fillojmë punë ashtu siç e bëmë atëherë.
Dibeyshiku Max pas këtij projekti na u bashkua, dhe ne akoma punojmë shumë mirë së bashku. Rastin me ClickHouse na mësoi të kryejmë një audit të plotë dhe të hollësishëm të infrastrukturës para se të fillojmë punën. Ne kuptojmë si funksionon gjithçka dhe vetëm pastaj marrim detyrat. Dhe nëse më parë do të ishim hedhur direkt për të shërbyer infrastrukturën, tani së pari bëjmë një projekt një herë, i cili ndihmon për të kuptuar se si ta sjellim atë në gjendje pune.
Po, ne i shmangim projektet me infrastrukturë të dobët. Edhe nëse janë për shumë para, edhe nëse për miqësi. Të menaxhojmë projekte të sëmura nuk është fitimprurëse. Ndërgjegjësimi për këtë na ndihmoi të rritemi. Ose një projekt një herë për të sjellë infrastrukturën në rregull dhe pastaj një kontratë për shërbim, ose thjesht ikim. Mënyrë kalimi përpara një ajsbergu tjetër.
P.S. Prandaj, nëse keni pyetje për infrastrukturen tuaj, .
Ne kemi 2 auditime falas në muaj, ndoshta projekti juaj do të jetë në mesin e tyre.
Burimi: habr.com
