Ndërsa të gjithë festonin ditëlindjen time, unë po riparova grupin deri në mëngjes — zhvilluesit më dorëzuan gabimet e tyre.

Ndërsa të gjithë festonin ditëlindjen time, unë po riparova grupin deri në mëngjes — zhvilluesit më dorëzuan gabimet e tyre.

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, mos hezitoni të lëni një kërkesë.

Ne kemi 2 auditime falas në muaj, ndoshta projekti juaj do të jetë një nga ato.

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster