Докато всички празнуваха рождения ми ден, аз поправях клъстера до сутринта - и разработчиците ме обвиниха за грешките си

Докато всички празнуваха рождения ми ден, аз поправях клъстера до сутринта - и разработчиците ме обвиниха за грешките си

Ето една история, която завинаги промени подхода ми към работата с devops. Във времената преди Covid, много, много преди тях, когато момчетата и аз просто планирахме собствен бизнес и работехме на свободна практика със случайни поръчки, една оферта падна в количката ми.

Компанията, която написа това, беше компания за анализ на данни. Тя обработваше хиляди заявки всеки ден. Дойдоха при нас с думите: момчета, имаме ClickHouse и искаме да автоматизираме конфигурацията и инсталацията му. Искаме Ansible, Terraform, Docker и всичко това да се съхранява в Git. Искаме клъстер от четири възела с две реплики всеки.

Това е стандартна заявка, има десетки от тях и имате нужда от също толкова добро стандартно решение. Казахме „добре“ и след 2-3 седмици всичко беше готово. Те приеха работата и започнаха да се преместват в нов клъстер Clickhouse с помощта на нашата помощна програма.

Никой не искаше или не знаеше как да се занимава с Clickhouse. Тогава си помислихме, че това е техният основен проблем и затова сервизът на фирмата просто даде зелена светлина на екипа ми да автоматизира максимално работата, за да не ходя отново там.

Съпътствахме преместването, възникнаха други задачи - настройка на резервни копия и мониторинг. В същия момент сервизът на тази фирма се сля с друг проект, оставяйки ни един наш - Леонид - за командир. Леня не беше много надарен човек. Прост разработчик, който внезапно беше поставен начело на Clickhouse. Изглежда това беше първата му задача да управлява нещо и огромната чест го накара да се почувства поразен.

Заедно се заехме да правим резервни копия. Предложих веднага да архивирате оригиналните данни. Просто го вземете, закопчайте го и елегантно го хвърлете в някой c3. Суровите данни са злато. Имаше и друга опция - да архивирате самите таблици в Clickhouse, като използвате замразяване и копиране. Но Леня измисли собствено решение.

Той обяви, че имаме нужда от втори клъстер Clickhouse. И оттук нататък ще записваме данни в два клъстера - основния и резервния. Казвам му, Леня, няма да е резервно копие, а активна реплика. И ако данните започнат да се губят в производството, същото ще се случи и с вашето архивиране.

Но Леня сграбчи волана здраво и отказа да изслуша аргументите ми. Говорихме с него дълго време в чата, но нямаше какво да правим - Леня отговаряше за проекта, ние бяхме просто наети деца от улицата.

Наблюдавахме състоянието на клъстера и таксувахме само работата на администраторите. Чисто администриране на Clickhouse без навлизане в данните. Клъстерът беше наличен, дисковете бяха наред, възлите бяха наред.

Не знаехме, че получихме тази поръчка поради ужасно недоразумение в техния екип

Мениджърът беше недоволен, че Clickhouse е бавен и данните понякога се губят. Той постави задачата на сервиза си да го разбере. Той го измисли възможно най-добре и заключи, че просто трябва да автоматизираме Clickhouse - това е всичко. Но както скоро стана ясно, те изобщо не се нуждаеха от екип от devops.

Всичко това се оказа много, много болезнено. И най-обидното беше, че беше на рождения ми ден.

Петък вечер. Направих резервация в любимия си винен бар и поканих приятелите.

Почти преди да тръгнем, получаваме задача да създадем алтер, изпълняваме го, всичко е наред. Промяната премина, clickhouse потвърдено. Вече отиваме в бара и ни пишат, че няма достатъчно данни. Изчислихме, че всичко изглежда достатъчно. И си тръгнаха да празнуват.

Ресторантът беше шумен в петък. След като си поръчахме напитки и храна, се излегнахме на диваните. През цялото това време отпуснатостта ми беше бавно залята от съобщения. Писаха нещо за липса на данни. Мислех си - утрото е по-мъдро от вечерта. Особено днес.

По-близо до единайсет започнаха да звънят. Беше шефът на фирмата... „Сигурно е решил да ме поздрави“, помислих си много колебливо и вдигнах телефона.

И чух нещо като: „Прецакахте данните ни! Плащам ви, но нищо не работи! Вие отговаряхте за резервните копия и не направихте нищо! Нека го поправим!" - само още по-грубо.

- Знаеш ли какво, махай се! Днес е моят рожден ден и сега ще пия, а не да се занимавам с вашите юнски домашни продукти от глупости и пръчки!

Това не съм казал. Вместо това извадих лаптопа си и се захванах за работа.

Не, бомбардирах, адски бомбардирах! Той изля язвително „Казах ти го“ в чата - защото резервното копие, което изобщо не беше резервно копие, - разбира се, не спаси нищо.

С момчетата измислихме как ръчно да спрем записа и да проверим всичко. Всъщност се уверихме, че някои от данните не са записани.

Спряхме да записваме и преброихме броя на събитията на ден. Те качиха още данни, от които само една трета не бяха записани. Три шарда с по 2 реплики всеки. Вмъквате 100.000 33.000 реда - XNUMX XNUMX не се записват.

Настана пълно объркване. Всички си казаха един на друг да се прецакаме: Леня отиде първи, последван от мен и основателя на компанията. Единствено сервизът, който се включи, се опита да насочи крещящите ни обаждания и кореспонденция към намиране на решение на проблема.

Никой не разбра какво всъщност се случва

Момчетата и аз бяхме просто поразени, когато разбрахме, че една трета от всички данни не само не са записани, но и са изгубени! Оказа се, че редът във фирмата е следният: след въвеждане данните се изтриват безвъзвратно, събитията се губят на партиди. Представях си как Сергей ще превърне всичко това в изгубени рубли.

Моят рожден ден също беше изхвърлен на боклука. Седяхме на бара и генерирахме идеи, опитвайки се да решим пъзела, който ни беше хвърлен. Причината за падането на Clickhouse не беше очевидна. Може би причината е в мрежата, може би в настройките на Linux. Да, каквото щете, имаше достатъчно хипотези.

Не положих клетвата на разработчика, но беше нечестно да изоставя момчетата от другия край на линията - дори и да ни обвиняваха за всичко. Бях 99% сигурен, че проблемът не е в нашите решения, не е на наша страна. 1% шанс, че сме се прецакали, изгаряше от безпокойство. Но независимо от коя страна беше проблемът, той трябваше да бъде поправен. Да оставиш клиентите, независимо кои са те, с такова ужасно изтичане на данни е твърде жестоко.

Работехме на масата в ресторанта до три сутринта. Добавихме събития, вмъкнахме селекция и продължихме да попълваме празнините. Когато прецакате данните, го правите така: вземате средните данни за предишните дни и ги вкарвате в прецаканите.

След три сутринта с моя приятел отидохме в дома ми и си поръчахме бира от алкохолния пазар. Седях с лаптоп и проблеми с Clickhouse, един приятел ми разказваше нещо. В резултат на това след час той се обиди, че работя и не пия бира с него, и си тръгна. Classic - бях приятел на Devops.

До 6 часа сутринта пресъздадох отново таблицата и данните започнаха да се наводняват. Всичко работеше без никакви загуби.

Тогава беше трудно. Всички се обвиняваха взаимно за загубата на данни. Ако се беше случил нов бъг, сигурен съм, че щеше да има престрелка

В тези битки най-накрая започнахме да разбираме - компанията смяташе, че ние сме момчетата, които работят с данни и следят структурата на таблиците. Объркаха админите с дилърите. И дойдоха да ни питат нещо различно от админите.

Основното им оплакване е - какво, по дяволите, вие сте били отговорни за резервните копия и не сте ги направили правилно, продължили сте да губите данните. И всичко това с пренавиващи се постелки.

Исках справедливост. Изрових кореспонденцията и прикачих екранни снимки на всички, където Леонид с всички сили ги принуждава да направят резервното копие, което е направено. Техният сервиз взе нашата страна след телефонното ми обаждане. По-късно Леня призна вината си.

Ръководителят на компанията, напротив, не искаше да обвинява собствените си хора. Екранните снимки и думите нямаха ефект върху него. Той вярваше, че тъй като ние сме експерти тук, трябва да убедим всички и да настояваме за нашето решение. Очевидно нашата задача беше да научим Леня и освен това да го заобиколим, който беше назначен за ръководител на проекта, да стигнем до основното нещо и лично да излеем всичките си съмнения относно концепцията за резервни копия пред него.

Чатът лъха от омраза, скрита и нескрита агресия. Не знаех какво да правя. Всичко е в застой. И тогава ме посъветваха най-лесния начин - да напиша лично съобщение на управителя и да си уредя среща с него. Вася, хората в реалния живот не са толкова бързи, колкото в чата. Шефът отговори на съобщението ми: ела, без въпроси.

Това беше най-страшната среща в моята кариера. Моят съюзник от клиента - STO - не можа да намери време. Отидох на срещата с шефа и Лена.

Отново и отново възпроизвеждах възможния ни диалог в главата си. Успях да пристигна много рано, половин час по-рано. Започнах да се изнервям, изпуших 10 цигари, разбрах, това е - сам съм. Няма да мога да ги убедя. И той влезе в асансьора.

Докато ставаше, той удари запалката толкова силно, че я счупи.

В резултат на това Леня не беше на срещата. И имахме страхотен разговор за всичко с шефа! Сергей ми разказа за болката си. Той не искаше да „автоматизира Clickhouse“ – той искаше „да накара заявките да работят“.

Не видях коза, а добър човек, загрижен за бизнеса си, потопен в работа 24/7. Чатът често ни привлича злодеи, негодници и глупави хора. Но в живота това са хора като вас.

Сергей не се нуждаеше от няколко devops под наем. Проблемът, който имаха, се оказа много по-голям.

Казах, че мога да разреша проблемите му - просто това е съвсем различна работа и имам приятел, който работи за нея. Ако знаехме от самото начало, че това е сделка за тях, щяхме да избегнем много. Късно е, но разбрахме, че проблемът е в скапаното управление на данните, а не в инфраструктурата.

Стиснахме си ръцете, вдигнаха ни заплатите два пъти и половина, но при условие, че аз си поема абсолютно цялата каша с техните данни и Clickhouse. В асансьора общувах със същия онзи човек от дирекция Макс и го свързах с работа. Беше необходимо да се изгребе целият клъстер.

В приетия проект имаше много боклуци. Започвайки със споменатото „резервно копие“. Оказа се, че същият този „резервен“ клъстер не е изолиран. Те тестваха всичко върху него, понякога дори го пуснаха в производство.

Нашите вътрешни разработчици създадоха свой собствен персонализиран инструмент за вмъкване на данни. Той работеше по следния начин: групираше файловете, стартираше скрипта и обедини данните в таблица. Но основният проблем беше, че огромно количество данни беше прието за една проста заявка. Заявката се присъединява към данните всяка секунда. Всичко в името на едно число - сумата на ден.

Вътрешните разработчици са използвали инструмента за анализ неправилно. Отидоха до графана и написаха царската си молба. Качи данни за 2 седмици. Получи се красива графика. Но в действителност заявката за данни беше на всеки 10 секунди. Всичко това се трупаше на опашка, защото Clickhouse просто не извади обработката. Тук се криеше основната причина. Нищо не работеше в Grafana, заявките стояха на опашка и постоянно пристигаха стари, неподходящи данни.

Преконфигурирахме клъстера, преработихме вмъкването. Вътрешните разработчици пренаписаха своя „inserter“ и той започна правилно да разделя данните.

Макс извърши пълен одит на инфраструктурата. Той очерта план за преход към пълноценен бекенд. Но това не устройваше компанията. Те очакваха магическа тайна от Макс, която да им позволи да работят по старомодния начин, но само ефективно. Леня все още отговаряше за проекта и той не научи нищо. От всичко предложено той отново избра своята алтернатива. Както винаги, това беше най-селективното... смело решение. Леня вярваше, че неговата компания има специален път. Бодлив и пълен с айсберги.

Всъщност там се разделихме – направихме каквото можахме.

Пълни със знания и мъдрост от тази история, ние отворихме собствен бизнес и формирахме няколко принципа за себе си. Никога няма да започнем работа по същия начин сега, както тогава.

DJ Max се присъедини към нас след този проект и все още работим чудесно заедно. Случаят Clickhouse ме научи как да проведа пълен и задълбочен одит на инфраструктурата, преди да започна работа. Разбираме как работи всичко и едва тогава приемаме задачите. И ако по-рано веднага се втурнахме да поддържаме инфраструктурата, сега първо правим еднократен проект, който ни помага да разберем как да го приведем в работно състояние.

И да, избягваме проекти със скапана инфраструктура. Дори и за много пари, дори и от приятелство. Нерентабилно е да се управляват болни проекти. Осъзнаването на това ни помогна да растем. Или еднократен проект за привеждане в ред на инфраструктурата и след това договор за поддръжка, или просто прелитаме. Покрай друг айсберг.

PS Така че, ако имате въпроси относно вашата инфраструктура, не се колебайте да оставите заявка.

Имаме 2 безплатни одита на месец, може би вашият проект ще бъде един от тях.

Източник: www.habr.com

Добавяне на нов коментар