Mentres todos celebraban o meu aniversario, estiven arranxando o clúster ata a mañá, e os desenvolvedores culpáronme dos seus erros.

Mentres todos celebraban o meu aniversario, estiven arranxando o clúster ata a mañá, e os desenvolvedores culpáronme dos seus erros.

Aquí tes unha historia que cambiou para sempre o meu enfoque do traballo devops. Nos tempos pre-Covid, moito, moito antes que eles, cando os mozos e eu só estabamos a planificar o noso propio negocio e a traballar por conta propia en pedidos aleatorios, unha oferta caeu no meu carro.

A empresa que escribiu isto foi unha empresa de análise de datos. Ela procesaba miles de solicitudes diariamente. Chegaron a nós coas palabras: rapaces, temos ClickHouse e queremos automatizar a súa configuración e instalación. Queremos que Ansible, Terraform, Docker e que todo se almacene en Git. Queremos un clúster de catro nodos con dúas réplicas cada un.

É unha solicitude estándar, hai ducias e necesitas unha solución estándar igual de boa. Dixemos "ok", e despois de 2-3 semanas todo estaba listo. Aceptaron o traballo e comezaron a mudarse a un novo clúster de Clickhouse usando a nosa utilidade.

Ninguén quería nin sabía como xogar con Clickhouse. Entón pensamos que ese era o seu principal problema e, polo tanto, a estación de servizo da empresa simplemente deu o visto e prace ao meu equipo para que automatizase o traballo na medida do posible, para non volver eu mesmo alí.

Acompañamos a mudanza, xurdiron outras tarefas: configurar copias de seguridade e vixilancia. Nese mesmo momento, a estación de servizo desta empresa fusionouse con outro proxecto, deixándonos un dos nosos - Leonid - como comandante. Lenya non era un mozo moi dotado. Un sinxelo programador que de súpeto foi posto a cargo de Clickhouse. Parece que este foi o seu primeiro encargo para xestionar algo, e a honra abrumadora fíxoo sentir abraiado.

Xuntos puxémonos a facer copias de seguridade. Suxerín facer unha copia de seguranza dos datos orixinais inmediatamente. Só tes que collelo, comprimilo e botalo elegantemente nun c3. Os datos brutos son ouro. Había outra opción: facer unha copia de seguridade das propias táboas en Clickhouse, usando un bloqueo e copiando. Pero Lenya veu coa súa propia solución.

Anunciou que necesitamos un segundo cluster Clickhouse. E a partir de agora escribiremos datos en dous clústeres: o principal e o de copia de seguridade. Dígolle, Lenya, que non será unha copia de seguridade, senón unha réplica activa. E se os datos comezan a perderse na produción, ocorrerá o mesmo coa túa copia de seguridade.

Pero Lenya agarrou o volante con forza e negouse a escoitar os meus argumentos. Charlamos con el durante moito tempo no chat, pero non había nada que facer: Lenya estaba a cargo do proxecto, só contratábamos nenos da rúa.

Supervisamos o estado do clúster e cobramos só polo traballo dos administradores. Pura administración de Clickhouse sen entrar nos datos. O clúster estaba dispoñible, os discos estaban ben, os nodos estaban ben.

Pouco sabíamos que recibimos este pedido debido a un terrible malentendido dentro do seu equipo

O xestor non estaba contento de que Clickhouse fose lento e que ás veces se perdasen datos. Púxolle á súa estación de servizo a tarefa de descubrilo. Descubriuse o mellor posible e concluíu que só necesitabamos automatizar o Clickhouse, iso é todo. Pero como pronto quedou claro, non necesitaban ningún equipo de devops.

Todo isto resultou moi, moi doloroso. E o máis ofensivo foi que foi no meu aniversario.

venres pola noite. Fixen unha reserva na miña vinoteca favorita e convidei aos amigos.

Case antes de saír, recibimos unha tarefa para crear un alter, completámolo, todo está ben. Alter pasou, clickhouse confirmado. Xa imos ao bar, e escríbenos que non hai datos suficientes. Calculamos que todo parece ser suficiente. E marcharon para celebralo.

O restaurante era ruidoso un venres. Despois de pedir bebidas e comida, descansámonos nos sofás. Durante todo este tempo, a miña folganza foi inundada lentamente de mensaxes. Escribiron algo sobre a falta de datos. Pensei: a mañá é máis sabia que a noite. Especialmente hoxe.

Máis preto das once comezaron a chamar. Era o xefe da empresa... "Probablemente decidiu felicitarme", pensei moi vacilante e collín o teléfono.

E escoitei algo así como: “Fallaches os nosos datos! Págoche, pero nada funciona! Ti eras responsable das copias de seguridade e non fixeches nada! Imos arranxalo!" - só aínda máis rudo.

- Xa sabes, vai carallo! Hoxe é o meu aniversario, e agora vou beber, e non participar nos teus produtos caseiros de xuño de merda e varas!

Iso é o que non dixen. Pola contra, saquei o meu portátil e púxenme a traballar.

Non, bombardei, bombardei como o inferno! Botou un cáustico "Díxencho" no chat, porque a copia de seguridade, que non era unha copia de seguridade, por suposto, non gardou nada.

Os rapaces e eu descubrimos como parar manualmente a gravación e comprobar todo. En realidade, asegurámonos de que algúns dos datos non foron escritos.

Deixamos de gravar e contamos o número de eventos que había por día. Subiron máis datos, dos que só un terzo non foi rexistrado. Tres fragmentos con 2 réplicas cada un. Insire 100.000 filas; 33.000 non se rexistran.

Houbo unha confusión total. Todos se dixeron que se fodasen por quendas: Lenya foi alí primeiro, seguida por min e polo fundador da empresa. Só a estación de servizo que se uniu intentou desviar as nosas chamadas de berros e correspondencia para buscar unha solución ao problema.

Ninguén entendeu o que realmente estaba a pasar

Os mozos e mais eu quedamos abraiados cando nos demos conta de que un terzo de todos os datos non só non se gravaron, senón que se perderon. Resultou que a orde na empresa era a seguinte: despois da inserción, os datos elimináronse de forma irrevocable, os eventos desperdiciáronse en lotes. Imaxinei como Sergei convertería todo isto en rublos perdidos.

O meu aniversario tamén foi tirado ao lixo. Sentámonos no bar e xeramos ideas, tentando resolver o quebracabezas que se nos lanzara. O motivo da caída de Clickhouse non era obvio. Quizais sexa a rede, quizais sexa a configuración de Linux. Si, o que queira, xa houbo hipóteses dabondo.

Non prestei o xuramento do desenvolvedor, pero foi deshonesto abandonar aos mozos do outro extremo da liña, aínda que nos culpasen de todo. Estaba 99% seguro de que o problema non residía nas nosas decisións, nin no noso lado. O 1% de probabilidade de que fomos mal estaba a arder de ansiedade. Pero non importaba de que lado estivese o problema, había que solucionalo. Deixar aos clientes, sexan quen sexan, cunha fuga de datos tan terrible é demasiado cruel.

Traballamos na mesa do restaurante ata as tres da mañá. Engadimos eventos, inserimos select e fomos cubrir os ocos. Cando arruinas os datos, así o fas: colles os datos medios dos días anteriores e introdúceos nos desfeitos.

Pasadas as tres da mañá, o meu amigo e eu fomos á miña casa e pedimos unha cervexa no mercado de alcol. Estaba sentado cun portátil e problemas de Clickhouse, un amigo dicíame algo. Como resultado, despois dunha hora ofendiuse de que estivese traballando e non tomase cervexa con el, e marchou. Clásico: era amigo de Devops.

Ás 6 da mañá, recreei a táboa de novo e os datos comezaron a inundarse. Todo funcionou sen perdas.

Entón foi difícil. Todos culpáronse mutuamente pola perda de datos. Se ocorrera un novo erro, estou seguro de que houbera un tiroteo

Nestas loitas, finalmente comezamos a entender: a empresa pensaba que nós eramos os que traballamos con datos e supervisamos a estrutura das táboas. Confundiron aos administradores cos comerciantes. E viñeron a preguntarnos algo diferente aos administradores.

A súa principal queixa é: que demo, eras responsable das copias de seguridade e non as fixeches correctamente, seguiches malgastando os datos. E todo isto con alfombras rebobinadoras.

Eu quería xustiza. Saquei a correspondencia e adxuntei capturas de pantalla de todos, onde Leonid con todas as súas forzas obriga a facer a copia de seguridade que se fixo. A súa estación de servizo púxose do noso lado despois da miña chamada telefónica. Máis tarde Lenya admitiu a súa culpa.

O xefe da empresa, pola contra, non quixo culpar ao seu propio pobo. As capturas de pantalla e as palabras non tiveron ningún efecto sobre el. Cría que, dado que aquí eramos expertos, había que convencer a todos e insistir na nosa decisión. Ao parecer, a nosa tarefa era ensinarlle a Lenya e, ademais, ignoralo, que foi nomeado director do proxecto, para chegar ao principal e verterlle persoalmente todas as nosas dúbidas sobre o concepto de copias de seguridade.

A charla rezumaba odio, agresións ocultas e non ocultas. Non sabía que facer. Todo quedou parado. E entón aconselláronme a forma máis sinxela: escribir unha mensaxe persoal ao director e organizar unha reunión con el. Vasya, a xente na vida real non é tan rápida como no chat. O xefe respondeume á miña mensaxe: veña, sen dúbida.

Foi o encontro máis asustado da miña carreira. O meu aliado do cliente - STO - non atopou o momento. Fun á reunión co xefe e Lena.

Unha e outra vez repitei na miña cabeza o noso posible diálogo. Conseguín chegar moi cedo, con media hora de antelación. Comecei a poñerme nervioso, fumei cigarros 10. Entendín, iso é todo: estou fodido só. Non conseguirei convencelos. E entrou no ascensor.

Mentres se erguía, golpeou o chisqueiro con tanta forza que o rompeu.

Como resultado, Lenya non estivo na reunión. E tivemos unha gran conversa sobre todo co xefe! Sergei contoume da súa dor. Non quería "automatizar Clickhouse" - quería "facer que as consultas funcionen".

Non vin unha cabra, senón un bo tipo, preocupado polos seus negocios, inmerso no traballo 24 horas ao día. O chat adoita chamarnos viláns, canallas e xente estúpida. Pero na vida estas son persoas coma ti.

Sergei non necesitaba un par de devops para contratar. O problema que tiñan resultou ser moito maior.

Dixen que podería resolver os seus problemas: é un traballo completamente diferente e teño un amigo que traballa para iso. Se souberamos dende o principio que iso era un negocio para eles, evitariamos moito. É tarde, pero decatámonos de que o problema estaba na mala xestión de datos, non na infraestrutura.

Botámonos a man, subironnos o soldo dúas veces e media, pero coa condición de que me tome absolutamente todo o lío cos seus datos e Clickhouse para min. No ascensor, comuniqueime con ese mesmo DI Max e conecteino ao traballo. Foi necesario arrasar todo o racimo.

Había moito lixo no proxecto adoptado. Comezando polo mencionado "backup". Resultou que este mesmo clúster de "copia de seguridade" non estaba illado. Probaron todo nel, ás veces incluso poñéndoo en produción.

Os nosos desenvolvedores internos crearon o seu propio insertador de datos personalizado. Funcionou así: agrupaba os ficheiros, executou o script e fusionou os datos nunha táboa. Pero o principal problema foi que se aceptaron unha gran cantidade de datos para unha simple solicitude. A solicitude uniuse aos datos cada segundo. Todo por mor dun número - a cantidade por día.

Os desenvolvedores internos utilizaron a ferramenta de análise de forma incorrecta. Foron á grafana e escribiron a súa petición real. Cargou datos durante 2 semanas. Resultou unha fermosa gráfica. Pero en realidade, a solicitude de datos era cada 10 segundos. Todo isto acumulábase nunha cola porque Clickhouse simplemente non sacou a tramitación. Aquí é onde se ocultaba a razón principal. Nada funcionaba en Grafana, as solicitudes estaban nunha cola e constantemente chegaban datos antigos e irrelevantes.

Reconfiguramos o clúster, refixemos a inserción. Os desenvolvedores internos reescribían o seu "insertor" e comezou a dividir os datos correctamente.

Max realizou unha auditoría completa da infraestrutura. Esbozou un plan para a transición a un backend completo. Pero isto non lle conviña á empresa. Agardaban un segredo máxico de Max que lles permitise traballar á antiga moda, pero só de forma eficiente. Lenya aínda estaba a cargo do proxecto e non aprendeu nada. De todo o que se lle ofreceu, volveu elixir a súa alternativa. Como sempre, esta foi a decisión máis selectiva... atrevida. Lenya cría que a súa empresa tiña un camiño especial. Espinosa e chea de icebergs.

En realidade, aí foi onde nos separamos: fixemos o que puidemos.

Cheos de coñecemento e sabedoría desta historia, abrimos o noso propio negocio e formamos varios principios para nós mesmos. Nunca comezaremos a traballar do mesmo xeito que agora.

DJ Max uniuse a nós despois deste proxecto e seguimos traballando moi ben xuntos. O caso Clickhouse ensinoume a realizar unha auditoría de infraestrutura completa e exhaustiva antes de comezar a traballar. Entendemos como funciona todo e só entón aceptamos as tarefas. E se antes nos apurabamos inmediatamente a manter a infraestrutura, agora primeiro facemos un proxecto puntual, que nos axuda a entender como poñela en condicións de funcionamento.

E si, evitamos proxectos con infraestruturas cutre. Aínda que sexa por moitos cartos, aínda que sexa por amizade. Non é rendible executar proxectos enfermos. Ao entender isto axudounos a crecer. Ou un proxecto puntual para poñer en orde a infraestrutura e despois un contrato de mantemento, ou simplemente pasamos voando. Pasado outro iceberg.

PD Entón, se tes preguntas sobre a túa infraestrutura, non dubide en deixar unha solicitude.

Temos 2 auditorías gratuítas ao mes, quizais o teu proxecto sexa unha delas.

Fonte: www.habr.com

Engadir un comentario