
Këtu është një histori që ndryshoi përherë qasjen time ndaj punës së DevOps. Edhe në kohën para COVID-it, shumë kohë përpara, kur ne dhe djemtë po mendonim për biznesin tonë dhe bamë projekte të rastit si freelancer, më ra një propozim në Telegram.
Kompania që e shkroi, merrej me analizë të të dhënave. Ajo përpunonte mijëra kërkesa çdo ditë. Këtu erdhën me fjalët: djem, kemi ClickHouse dhe duam ta automatizojmë konfigurimin dhe instalimin e tij. Duam Ansible, Terraform, Docker dhe që gjithçka të ruhet në Git. Duam një grup me katër nodo me nga dy replika në secilën.
Kërkesa standarde, ka dhjetëra të tilla, dhe ne duheshim të ofronim një zgjidhje standarde të tillë të mirë. Ne thamë "mirë", dhe pas 2-3 javësh gjithçka ishte gati. Ata pranuan punën dhe filluan të kalonin në grupin e ri të ClickHouse me ndihmën e utilitetit tonë.
Askush nuk kishte dĂ«shirĂ« 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Ă« tĂ« аĐČŃĐŸĐŒĐ°Ńizonte maksimalisht punĂ«n, qĂ« tĂ« mos e shkelnim mĂ« atje kurrĂ«.
Ne ndoqĂ«m transferimin, u shfaqĂ«n detyra tĂ« tjera â tĂ« vendosnim backupet dhe monitorimin. NĂ« atĂ« moment, CTO i kĂ«saj kompanie kaloi nĂ« projekt tjetĂ«r, duke na lĂ«nĂ« nĂ«n komandĂ« njĂ« nga ata â Leonidin. LŃnja nuk ishte ndonjĂ« djalĂ« shumĂ« i talentuar. NjĂ« zhvillues i zakonshĂ«m, tĂ« cilin papritur e emĂ«ruan krye te Clickhouse. Duket se ishte emĂ«rimi i tij i parĂ« pĂ«r tĂ« drejtuar diçka, dhe nga nderi qĂ« iu ngarkua, ai filloi tĂ« zhvillonte sindromĂ«n e yjeve.
SĂ« bashku filluam me backupet. UnĂ« propozova qĂ« tĂ« bĂ«hej menjĂ«herĂ« backup i tĂ« dhĂ«nave tĂ« origjinĂ«s. Thjesht ta merrnim, ta ziponim dhe ta vendosnim elegantisht nĂ« ndonjĂ« s3. TĂ« dhĂ«nat e origjinĂ«s â janĂ« ar. Ishte edhe njĂ« opsion tjetĂ«r â tĂ« bĂ«hej backup i vetĂ« tabelave nĂ« Clickhouse, duke pĂ«rdorur ngrirjen dhe kopjimin. Por LŃnja erdhi me zgjidhjen e tij.
Ai shpallur se na nevojitet njĂ« grup i dytĂ« i Clickhouse. QĂ« nga tani do tĂ« shkruajmĂ« tĂ« dhĂ«nat nĂ« dy grupe â grupin kryesor dhe atĂ« rezervĂ«. I thashĂ«, Leonia, se do tĂ« dalĂ« jo rezerva â por njĂ« replikĂ« aktive. Dhe nĂ«se tĂ« dhĂ«nat fillojnĂ« tĂ« humbin nĂ« prodhim, nĂ« rezervĂ«n tĂ«nde do tĂ« ndodhĂ« e njĂ«jta gjĂ«.
Por Leonia e mbajti fort timonin dhe refuzoi tĂ« dĂ«gjonte arsyetimet e mia. Ne u zvarritĂ«m pĂ«r njĂ« kohĂ« nĂ« bisedĂ«, por nuk kishim çfarĂ« tĂ« bĂ«nim â Leonia po udhĂ«heqte projektin, ne ishim thjesht djem tĂ« angazhuar nga rruga.
Ne po monitoronim gjendjen e grupit dhe merrnim pagesë vetëm për punën e administratorëve. Administrimi i pastër i Clickhouse pa ndërhyrje në të dhëna. Grupi ishte në dispozicion, disku ishte në rregull, nodet ishin në rregull.
Ne nuk dyshonim akoma se kishim marrë këtë porosi për shkak të një keqkuptimi të tmerrshëm brenda ekipit të tyre.
Shefi ishte i pakĂ«naqur se Clickhouse punonte ngadalĂ« dhe ndonjĂ«herĂ« humbeshin tĂ« dhĂ«na. Ai i dha CTO-sĂ« sĂ« tij detyrĂ«n tĂ« merret me kĂ«tĂ«. Ai u pĂ«rpoq siç mundi dhe arriti nĂ« pĂ«rfundimin se duhet thjesht ta automatizojmĂ« Clickhouse â dhe kaq. Por siç doli mĂ« vonĂ«, ata kishin nevojĂ« pĂ«r njĂ« ekip krejtesisht ndryshe devops.
E gjitha kjo doli shumë, shumë e dhimbshme. Dhe më e pakëndshme, ndodhi në ditëlindjen time.
E premte, mbrëmje. Kam rezervuar një tavolinë në barin tim të preferuar të verës dhe thirra shokët.
Gati për të dalë, na erdhi një detyrë për të bërë një alternativë, ne e kryem, gjithçka ishte në rregull. Alternativa kaloi, ClickHouse e konfirmoi. Ne ishim gati për në bar, dhe na shkruajnë se të dhënat mungojnë. Llogaritëm - dukej se kishte gjithçka. Dhe u larguam për të festuar.
Në restorant ishte zhurmshëm si zakonisht për të premten. Pas porosisë së pijes, ushqimit, u shtrënguam në divan. Gjatë gjithë kësaj kohe, Slack-u im filloi të boshllëqehet me mesazhe. Shkruanin diçka për mungesën e të dhënave. Mendova - mëngjesi është më i mençur se mbrëmja. Sidomos sot.
Afërsisht në orën njëmbëdhjetë filluan të telefonojnë. Ishte drejtori i kompanisë... 'Ndoshta vendosi të më urojë,' mendoja shumë pa siguri, dhe e ngrita telefonin.
Dhe dëgjova diçka në frymën e: 'Keni humbur të dhënat tona! Po ju paguaj, por asgjë nuk punon! Ju ishit përgjegjës për backup-et, dhe nuk keni bërë asgjë! Lajmëroni!' - vetëm edhe më ashpër.
â E di ça, ik shkoj pĂ«r dreq! Sot Ă«shtĂ« dita ime e lindjes dhe tani do tĂ« pi, e jo tĂ« merrem me eksperimentet tuaja amatoreske me pisllĂ«k!
Kështu nuk thashë. Në vend të kësaj, nxora laptopin dhe fillova të punoj.
Jo, unë isha shumë i zemëruar, isha jashtëzakonisht i zemëruar! Gërdhisja në chat mesazhe të hidhura "e thashë unë" - sepse backup-i që nuk ishte fare backup, natyrisht, nuk shpëtoi asgjë.
Me djemtë e mi shpikëm se si të ndalonim regjistrimin manualisht dhe të kontrollonim gjithçka. Me të vërtetë u siguruam që një pjesë e të dhënave nuk po shkruhej.
Ndaluam regjistrimin, numëruam ngjarjet që kishte për një ditë. Shtuam më shumë të dhëna, nga të cilat vetëm një të tretën nuk u regjistruan. Tre sharde me 2 replika. Vendosni 100,000 rreshta - 33,000 nuk regjistrohen.
Ishte një kaos total. Të gjithë na derdhën njëri-tjetrin për dreq njëri pas tjetrit: i pari ishte Leon, pas tij isha unë vetë dhe themeluesi i kompanisë. Vetëm CTO i sapo bashkuar u përpoq të nxirrte bisedat tona me thirrje dhe shkrimet në drejtim të gjetjes së një zgjidhjeje.
Askush nuk e kuptonte se çfarë po ndodhte në të vërtetë.
Ne e dëgjuar kurrë që ne dhe djemtë u çmendëm kur kuptuam se një e tretë e të dhënave jo vetëm që nuk ishte regjistruar, por ishte humbur! Doli që rregulli në kompaninë tonë ishte i tillë: pas futjes, të dhënat fshiheshin përherë, dhe ngjarjet humbeshin masivisht. Imagjinoj se si Sergey do ta konvertonte gjithë këtë në rubla të humbur.
Ditëlindja ime gjithashtu përfundoi në plehra. Ne ishim në një bar, duke gjeneruar ide, përpiqeshim të zgjidhnim enigmat që ishin hedhur. Shkaku i rënies së ClickHouse-it nuk ishte i dukshëm. Ndoshta është rrjeti, ndoshta është problemi në konfigurimin e Linux-it. Mund të jetë çfarëdo gjëje, hipotezat u shprehën mjaftueshëm.
Nuk bëra betimin e zhvilluesit, por duke i lënë djemtë në anën tjetër të telit ishte e papërshtatshme, edhe nëse ata na akuzonin për gjithçka. Ishim 99% të sigurt që problemi nuk ishte në zgjidhjet tona, nuk ishte nga ana jonë. 1% mundësie që të ishim ne ata që bëmë gabimin, më shqetësonte. Por, çfarëdo që të ndodhte, duhej të rregullohej. Të lëmë klientët, pa marrë parasysh se çfarëdo ishin ata, me një rrjedhje të tillë të tmerrshme të të dhënave, ishte shumë e ashpër.
Derisa punonim deri nĂ« orĂ«n tre tĂ« mĂ«ngjesit nĂ« tavolinĂ«n e restorantit. Shtonim evente, insert select â dhe vazhduam tĂ« plotĂ«sonim boshllĂ«qet. Kur ke humbur tĂ« dhĂ«nat, e bĂ«n kĂ«shtu â merr tĂ« dhĂ«nat mesatare nga ditĂ«t e kaluara dhe i vendos ato nĂ« tĂ« humburat.
Pas orĂ«s tre, unĂ« dhe shoku im shkruam nĂ« shtĂ«pinĂ« time, por porositĂ«m birra nga marketi. Isha ulur me laptopin dhe problemet e Clickhouse, shoku mĂ« tregonte diçka. NĂ« fund, pas njĂ« ore, ai u ofendua sepse unĂ« punoja dhe nuk pija birrĂ« me tĂ«, dhe iku. Klasik â kalova si shok i devopsit.
Në orën 6 të mëngjesit e krijova sërish tabelën dhe të dhënat filluan të mbushen. Të gjitha funksionuan pa humbje.
Më pas ishte e vështirë. Të gjithë akuzonin njëri-tjetrin për humbjen e të dhënave. Nëse ndodhte një bog i ri, jam i sigurt që do të kishte një shkëmbim zjarri.
NĂ« kĂ«to grindje filluam tĂ« kuptonim mĂ« nĂ« fund â nĂ« kompani mendonin se ne ishim ata djem qĂ« punonin me tĂ« dhĂ«nat dhe mbikĂ«qyrnin strukturĂ«n e tabelave. Ata ngatĂ«rruan administratorĂ«t me DBA-tĂ«. Dhe erdhĂ«n tĂ« na pyesin aspak si administratorĂ«.
Ankesa e tyre kryesore Ă«shtĂ« â ç'Ă«sht' e gjallĂ«, ju ishit pĂ«rgjegjĂ«s pĂ«r backupet dhe nuk i bĂ«tĂ« siç duhej, humbĂ«t tĂ« dhĂ«nat. Dhe gjithĂ« kjo me fyerje tĂ« rĂ«nda.
Desha për drejtësi. Unë zbulova bisedat dhe përfshiva të gjitha screenshot-et, ku Leonid me gjithë forcën e tij e detyron për të bërë një backup të tillë, siç ishte bërë. CTO i tyre u vu në anën tonë pas telefonatës time. Më pas e pranoi fajin e tij dhe Lenya.
Kreu i kompanisë, përkundrazi, nuk donte të fajësonte të tijtë. Screenshote dhe fjalët nuk kishin efekt mbi të. Ai mendonte se pasi ne ishim këtu ekspertë, duhej t'i bindnim të gjithë dhe të insistonim në vendimin tonë. Duke duket, detyra jonë përfshinte mësimin e Lenya-s dhe, për më tepër, për të kaluar përtej tij, të cilin e emëruam udhëheqës të projektit, për të arritur te kryetari dhe për t'i shprehur të gjitha dyshimet tona mbi konceptin e backup-eve.
Chat-i po lĂ«shonte urrejtje, agresion tĂ« fshehur dhe tĂ« hapur. Nuk dija si tĂ« veproja. TĂ« gjitha kishin arritur nĂ« njĂ« pikĂ« tĂ« ngurtĂ«. Dhe kĂ«tu mĂ« sugjeruan mĂ«nyrĂ«n mĂ« tĂ« thjeshtĂ« â tĂ« shkruaj nĂ« privat udhĂ«heqĂ«sit dhe tĂ« rregulloj njĂ« takim me tĂ«. Vasya, njerĂ«zit nĂ« jetĂ« nuk janĂ« aq tĂ« guximshĂ«m sa nĂ« chat. NĂ« mesazhin tim, shefi pĂ«rgjigjej: vjen, s'ka problem.
Ishte takimi mĂ« i frikshĂ«m nĂ« karrierĂ«n time. Aleati im nga klienti â CTO â nuk arriti tĂ« gjejĂ« kohĂ«. Po shkoja nĂ« takim me shefin dhe LŃnya.
HerĂ« pas here e kam rrotulluar nĂ« mendjen time dialogun tonĂ« tĂ« mundshĂ«m. Kam arritur shumĂ« herĂ«t, gjysmĂ« ore pĂ«rpara. Nisa tĂ« nervozohem, kam konsumuar 10 cigare. E kuptoja, gjithçkaâisha, pĂ«r zot, i vetmi. Nuk do tĂ« mund t'i bindja ata. Dhe hapa derĂ«n e ashensorit.
Ndërsa ngjitesha, sa bënë flaka, e thyva atë.
MĂ« nĂ« fund, Leoni nuk ishte nĂ« takim. Dhe biseduam shumĂ« mirĂ« pĂ«r gjithçka me tĂ« kryesori! Sergey mĂ« tregoi pĂ«r dhimbjen e tij. Ai nuk donte tĂ« "automatizonte Clickhouse"âai dĂ«shironte qĂ« "kĂ«rkesat tĂ« funksiononin."
UnĂ« nuk pashĂ« njĂ« budalla, por njĂ« djalĂ« tĂ« mirĂ«, qĂ« u shqetĂ«sonte pĂ«r biznesin e tij, i zhytur nĂ« punĂ« 24/7. Ăati shpesh na vizaton armiq, tradhĂ«tarĂ« dhe injorantĂ«. Por nĂ« jetĂ« ata janĂ« njerĂ«z tĂ« njĂ«jtĂ« si ti.
Sergei nuk kishte nevojë për disa devops të angazhuar. Problemi që kishin doli të ishte shumë më i madh.
I thashĂ« se mund t'i zgjidhja problemet e tijâthjesht kjo ishte njĂ« punĂ« krejt e ndryshme, dhe pĂ«r tĂ« kisha njĂ« kontakt dibiĂ«sh. Po tĂ« kishim ditur nga fillimi se kjo ishte pĂ«r ta, do tĂ« kishim shmangur shumĂ«. VonĂ«, por kuptuam se problemi ishte nĂ« menaxhimin e keq tĂ« tĂ« dhĂ«nave, jo nĂ« infrastrukturĂ«.
Nej më dorëzuan dorën, na rritën çmimin për dy herë e gjysmë, por me kushtin që unë të merrja mbi vete të gjithë ngarkesën me të dhënat e tyre dhe ClickHouse. Në ashensor, kontaktova atë dibiayshikun Max dhe e lidha me punën. Duhej të rregulloja të gjithë klastrin.
Ishte shumë kaos në projektin e pranuar. Duke filluar nga 'backup'-i përmendur. Doli që ky 'backup' klaster nuk ishte i izoluar. Aty testonin gjithçka, ndonjëherë madje e përshtaten në prodhim.
Programuesit e brendshëm krijuan një 'shtesë' të personalizuar për të dhënat. Ajo punonte kështu: bënte një sërë skedarësh, lançonin skriptin dhe derdhni të dhënat në tabelë. Por problemi kryesor ishte se një sasi e madhe e të dhënave merrej për një kërkesë shumë të thjeshtë. Kërkesa bashkonte të dhënat për sekondë. Të gjitha për një numër - totalin për ditën.
Zhvilluesit tanĂ« nuk e pĂ«rdorĂ«n siç duhet mjetin pĂ«r analizĂ«. Ata shkonin nĂ« Grafana, shkruanin kĂ«rkesat e tyre tĂ« posaçme. Ajo shkarkonte tĂ« dhĂ«na pĂ«r 2 javĂ«. Krijohej njĂ« grafik i bukur. Por nĂ« tĂ« vĂ«rtetĂ«, kĂ«rkesa e tĂ« dhĂ«nave ndodhte çdo 10 sekonda. TĂ« gjitha kĂ«to grumbulloheshin nĂ« radhĂ«, pasi ClickHouse thjesht nuk mund tĂ« pĂ«rballonte ĐŸĐ±ŃĐ°Đ±ĐŸŃkĂ«n. KĂ«tu e kishte shkakun kryesor. NĂ« Grafana nuk punonte asgjĂ«, kĂ«rkesat ishin nĂ« radhĂ«, vazhdimisht mbĂ«rrinin tĂ« dhĂ«na tĂ« vjetra dhe jo nĂ« pĂ«rputhje.
Ne rikonfiguruam klasterin, ripërpunuam insertin. Zhvilluesit tanë e rishkruan «inserter-in» e tyre dhe tani filloi të sharded të dhëna në mënyrë korrekte.
Maxi realizoi një audit të plotë të infrastrukturës. Ai bëri një plan për kalimin në një backend të plota. Por kjo nuk i kënaqte kompaninë. Ata prisnin nga Maxi një sekret magjik që do t'u lejonte të punonin në mënyrë tradicionale, por me efikasitet. Projekti vazhdonte të ishte nën përgjegjësinë e Ljonës, i cili nuk kishte mësuar asgjë. Nga gjithçka e propozuar, ai përsëri zgjodhi alternativën e tij. Si gjithmonë, ishte një zgjidhje e veçantë... e guximshme. Ljoni besonte se kompania e tij kishte një rrugë të veçantë. E përfolur dhe plot akullore.
PraÂvĂ«Ârisht, kĂ«shtu u ndamĂ« â bĂ«mĂ« atĂ« qĂ« mundĂ«m.
Me plagë të shumta, të mençur nga kjo histori, hapëm biznesin tonë dhe formuam disa principe për ne. Tani ne kurrë nuk e fillojmë punën si atëherë.
Dibiëjshi Max pas këtij projekti na u bashkua, dhe ne ende punojmë shkëlqyeshëm së bashku. Rastin me ClickHouse na mësuan të bëjmë një auditim të plotë dhe të thellë të infrastrukturës para fillimit të punës. Ne kuptojmë se si funksionon gjithçka, dhe vetëm pastaj pranojmë detyrat. Dhe nëse më parë do të ishim nisur menjëherë për të shërbyer infrastrukturën, tani së pari bëjmë një projekt një herë për ta kuptuar si ta sjellim atë në gjendje pune.
Dhe po, ne i shmangim projektet me infrastrukturë të dobët. Edhe nëse për para të mëdha, edhe nëse për miqësi. Të menaxhosh projekte të sëmura është e pavlerë. Ndërgjegjësimi mbi këtë na ndihmoi të rritemi. Ose një projekt një herë për të sjellë rregullin në infrastrukturë dhe pastaj një kontratë për shërbim, ose thjesht kalojmë përmes. Rreth një ajsberg tjetër.
P.S. Pra, nëse keni pyetje për infrastrukturën tuaj, .
Ne kemi 2 auditime falas në muaj, ndoshta projekti juaj do të jetë një nga ato.
Burimi: habr.com
