Enquanto todos comemoravam meu aniversário, eu consertei o cluster até de manhã - e os desenvolvedores me culparam por seus erros

Enquanto todos comemoravam meu aniversário, eu consertei o cluster até de manhã - e os desenvolvedores me culparam por seus erros

Aqui está uma história que mudou para sempre minha abordagem ao trabalho Devops. Na época pré-Covid, muito, muito antes deles, quando os caras e eu estávamos apenas planejando nosso próprio negócio e trabalhando como freelancers em pedidos aleatórios, uma oferta caiu no meu carrinho.

A empresa que escreveu isso era uma empresa de análise de dados. Ela processava milhares de solicitações diariamente. Chegaram até nós com as palavras: pessoal, temos o ClickHouse e queremos automatizar sua configuração e instalação. Queremos que Ansible, Terraform, Docker e tudo isso seja armazenado no Git. Queremos um cluster de quatro nós com duas réplicas cada.

É uma solicitação padrão, existem dezenas delas e você precisa de uma solução padrão igualmente boa. Dissemos “ok” e depois de 2 a 3 semanas tudo estava pronto. Eles aceitaram o trabalho e começaram a migrar para um novo cluster Clickhouse usando nosso utilitário.

Ninguém queria ou sabia mexer no Clickhouse. Aí pensamos que esse era o principal problema deles e por isso o posto da empresa simplesmente deu sinal verde para minha equipe automatizar o trabalho ao máximo, para não voltar lá eu mesmo.

Acompanhamos a mudança, surgiram outras tarefas - configuração de backups e monitoramento. No mesmo momento, o posto de serviço desta empresa fundiu-se com outro projecto, deixando-nos com um dos nossos - Leonid - como comandante. Lenya não era um cara muito talentoso. Um simples desenvolvedor que de repente foi encarregado da Clickhouse. Parece que esta foi sua primeira missão para gerenciar algo, e a honra esmagadora o fez se sentir impressionado.

Juntos, começamos a fazer backups. Sugeri fazer backup dos dados originais imediatamente. Basta pegá-lo, fechar o zíper e jogá-lo elegantemente em algum c3. Dados brutos valem ouro. Havia outra opção - fazer backup das próprias tabelas no Clickhouse, usando congelamento e cópia. Mas Lenya encontrou sua própria solução.

Ele anunciou que precisamos de um segundo cluster Clickhouse. E de agora em diante gravaremos dados em dois clusters - o principal e o de backup. Eu digo a ele, Lenya, não será um backup, mas uma réplica ativa. E se os dados começarem a ser perdidos na produção, o mesmo acontecerá no seu backup.

Mas Lenya agarrou o volante com força e se recusou a ouvir meus argumentos. Conversamos muito com ele no chat, mas não tinha o que fazer - Lenya era a responsável pelo projeto, éramos apenas garotos contratados da rua.

Monitoramos o estado do cluster e cobramos apenas pelo trabalho dos administradores. Administração pura do Clickhouse sem entrar nos dados. O cluster estava disponível, os discos estavam bem, os nós estavam bem.

Mal sabíamos que recebemos este pedido devido a um terrível mal-entendido dentro de sua equipe

O gerente estava insatisfeito com o fato de o Clickhouse ser lento e às vezes os dados serem perdidos. Ele encarregou seu posto de serviço de descobrir isso. Ele descobriu o melhor que pôde e concluiu que só precisávamos automatizar o Clickhouse - só isso. Mas, como logo ficou claro, eles não precisavam de uma equipe de devops.

Tudo isso acabou sendo muito, muito doloroso. E o mais ofensivo é que foi no meu aniversário.

Sexta-feira à noite. Fiz uma reserva no meu bar de vinhos preferido e convidei os manos.

Quase antes de sair, recebemos a tarefa de criar um alter, completamos, está tudo bem. Alter aprovado, clickhouse confirmado. Já estamos indo para o bar e nos escrevem que não há dados suficientes. Calculamos que tudo parece ser suficiente. E eles saíram para comemorar.

O restaurante era barulhento na sexta-feira. Depois de pedir bebidas e comida, descansamos nos sofás. Todo esse tempo, minha folga foi lentamente inundada de mensagens. Eles escreveram algo sobre a falta de dados. Eu pensei - a manhã é mais sábia que a noite. Especialmente hoje.

Perto das onze, eles começaram a ligar. Era o chefe da empresa... “Provavelmente decidi me dar os parabéns”, pensei muito hesitante e peguei o telefone.

E ouvi algo como: “Você bagunçou nossos dados! Eu te pago, mas nada funciona! Você foi responsável pelos backups e não fez nada! Vamos consertar isso!" - só que ainda mais rude.

- Quer saber, dê o fora! Hoje é meu aniversário, e agora vou beber, e não me envolver nos seus produtos caseiros de junho feitos de porcarias e palitos!

Foi isso que eu não disse. Em vez disso, peguei meu laptop e comecei a trabalhar.

Não, eu bombardeei, bombardeei como o inferno! Ele derramou um cáustico “eu avisei” no bate-papo - porque o backup, que não era um backup, - é claro, não salvou nada.

Os meninos e eu descobrimos como interromper manualmente a gravação e verificar tudo. Na verdade, garantimos que alguns dos dados não fossem gravados.

Paramos de gravar e contamos a quantidade de eventos que aconteciam por dia. Eles carregaram mais dados, dos quais apenas um terço não foi registrado. Três fragmentos com 2 réplicas cada. Você insere 100.000 linhas – 33.000 não são registradas.

Houve uma confusão completa. Todos disseram uns aos outros para se foderem: Lenya foi lá primeiro, seguida por mim e pelo fundador da empresa. Apenas o posto de serviço que aderiu tentou desviar os nossos gritos e correspondência para encontrar uma solução para o problema.

Ninguém entendeu o que realmente estava acontecendo

Os caras e eu ficamos simplesmente maravilhados quando percebemos que um terço de todos os dados não só não foi registrado, como também foi perdido! Descobriu-se que a ordem na empresa era a seguinte: após a inserção, os dados eram apagados de forma irrevogável, os eventos eram desperdiçados em lotes. Imaginei como Sergei converteria tudo isso em rublos perdidos.

Meu aniversário também foi jogado no lixo. Sentamos no bar e geramos ideias, tentando resolver o quebra-cabeça que nos foi lançado. O motivo da queda de Clickhouse não era óbvio. Talvez seja a rede, talvez sejam as configurações do Linux. Sim, o que você quiser, já existem hipóteses suficientes.

Não fiz o juramento do desenvolvedor, mas foi desonesto abandonar os caras do outro lado da linha – mesmo que eles nos culpassem por tudo. Eu tinha 99% de certeza de que o problema não estava nas nossas decisões, nem do nosso lado. A chance de 1% de termos estragado tudo estava queimando de ansiedade. Mas não importava de que lado estivesse o problema, ele precisava ser resolvido. Deixar os clientes, não importa quem sejam, com um vazamento de dados tão terrível é cruel demais.

Trabalhamos na mesa do restaurante até as três da manhã. Adicionamos eventos, inserimos select e partimos para preencher as lacunas. Quando você bagunça os dados, é assim que você faz: você pega os dados médios dos dias anteriores e os insere nos dados errados.

Depois das três da manhã, meu amigo e eu fomos até minha casa e pedimos uma cerveja no mercado de bebidas alcoólicas. Eu estava sentado com um laptop e problemas no Clickhouse, um amigo estava me contando uma coisa. Como resultado, depois de uma hora ele ficou ofendido por eu estar trabalhando e não bebendo cerveja com ele, e foi embora. Clássico - fui amigo do Devops.

Às 6h, recriei a tabela novamente e os dados começaram a inundar. Tudo funcionou sem perdas.

Então foi difícil. Todos se culparam pela perda de dados. Se um novo bug tivesse acontecido, tenho certeza que teria havido um tiroteio

Nessas brigas finalmente começamos a entender - a empresa pensava que éramos nós que trabalhamos com dados e monitoramos a estrutura das tabelas. Eles confundiram administradores com revendedores. E vieram nos perguntar algo diferente dos administradores.

A principal reclamação deles é: que diabos, você foi responsável pelos backups e não os fez corretamente, continuou desperdiçando os dados. E tudo isso com rebobinamento de esteiras.

Eu queria justiça. Desenterrei a correspondência e anexei screenshots de todos, onde Leonid com todas as suas forças os obriga a fazer o backup que foi feito. O posto de gasolina deles ficou do nosso lado depois do meu telefonema. Mais tarde, Lenya admitiu sua culpa.

O chefe da empresa, pelo contrário, não quis culpar o seu próprio povo. Capturas de tela e palavras não tiveram efeito sobre ele. Ele acreditava que, como éramos especialistas aqui, teríamos que convencer a todos e insistir na nossa decisão. Aparentemente, nossa tarefa era ensinar Lenya e, além disso, contornar ele, que foi nomeado gerente de projeto, para chegar ao ponto principal e tirar pessoalmente todas as nossas dúvidas sobre o conceito de backups para ele.

O papo transbordava de ódio, de agressões ocultas e não ocultas. Eu não sabia o que fazer. Tudo parou. E então me aconselharam a maneira mais fácil - escrever uma mensagem pessoal ao gerente e marcar uma reunião com ele. Vasya, as pessoas na vida real não são tão rápidas quanto no bate-papo. O patrão respondeu à minha mensagem: venha, sem dúvida.

Foi o encontro mais assustador da minha carreira. Meu aliado do cliente - STO - não encontrou tempo. Fui à reunião com o patrão e a Lena.

Repetidamente repassei nosso possível diálogo em minha cabeça. Consegui chegar bem cedo, com meia hora de antecedência. Comecei a ficar nervoso, fumei 10 cigarros, entendi, é isso, estou sozinho. Não serei capaz de convencê-los. E ele entrou no elevador.

Enquanto se levantava, bateu no isqueiro com tanta força que o quebrou.

Como resultado, Lenya não esteve na reunião. E tivemos uma ótima conversa sobre tudo com o chefe! Sergei me contou sobre sua dor. Ele não queria “automatizar o Clickhouse” – ele queria “fazer as consultas funcionarem”.

Não vi uma cabra, mas sim um cara legal, preocupado com seus negócios, imerso no trabalho 24 horas por dia, 7 dias por semana. O chat muitas vezes nos atrai vilões, canalhas e gente estúpida. Mas na vida essas são pessoas como você.

Sergei não precisava de alguns devops para contratar. O problema que eles tinham acabou sendo muito maior.

Eu disse que poderia resolver os problemas dele - é apenas um trabalho completamente diferente e tenho um amigo que trabalha para ele. Se soubéssemos desde o início que isso era um acordo para eles, teríamos evitado muita coisa. É tarde, mas percebemos que o problema estava no péssimo gerenciamento de dados, e não na infraestrutura.

Apertamos as mãos, eles aumentaram nosso salário duas vezes e meia, mas com a condição de que eu ficasse com toda a bagunça dos dados deles e do Clickhouse para mim. No elevador, me comuniquei com o mesmo detetive Max e o conectei ao trabalho. Foi necessário limpar todo o cluster.

Havia muito lixo no projeto adotado. Começando pelo mencionado “backup”. Descobriu-se que esse mesmo cluster de “backup” não estava isolado. Eles testaram tudo, às vezes até colocando em produção.

Nossos desenvolvedores internos criaram seu próprio inseridor de dados personalizado. Ele trabalhava assim: agrupava os arquivos em lote, executava o script e mesclava os dados em uma tabela. Mas o principal problema era que uma enorme quantidade de dados era aceita para uma simples solicitação. A solicitação juntou os dados a cada segundo. Tudo por causa de um número - o valor por dia.

Os desenvolvedores internos usaram a ferramenta de análise incorretamente. Eles foram até a grafana e escreveram seu pedido real. Ele carregou dados por 2 semanas. Acabou sendo um lindo gráfico. Mas, na realidade, a solicitação de dados acontecia a cada 10 segundos. Tudo isso se acumulou na fila porque Clickhouse simplesmente não retirou o processamento. É aqui que o principal motivo estava oculto. Nada funcionava no Grafana, as solicitações ficavam na fila e dados antigos e irrelevantes chegavam constantemente.

Reconfiguramos o cluster, refizemos a inserção. Os desenvolvedores internos reescreveram seu “inserdor” e ele começou a fragmentar os dados corretamente.

Max conduziu uma auditoria completa de infraestrutura. Ele delineou um plano de transição para um back-end completo. Mas isso não agradou à empresa. Eles esperavam um segredo mágico de Max que lhes permitiria trabalhar à moda antiga, mas apenas com eficiência. Lenya ainda estava encarregada do projeto e não aprendeu nada. De tudo o que foi oferecido, ele escolheu novamente sua alternativa. Como sempre, esta foi a decisão mais seletiva... ousada. Lenya acreditava que sua empresa tinha um caminho especial. Espinhoso e cheio de icebergs.

Na verdade, foi aí que nos separamos – fizemos o que podíamos.

Cheios de conhecimento e sabedoria dessa história, abrimos nosso próprio negócio e formamos vários princípios para nós mesmos. Nunca começaremos a trabalhar agora da mesma forma que o fizemos antes.

DJ Max se juntou a nós depois desse projeto e ainda trabalhamos muito bem juntos. O caso Clickhouse me ensinou como realizar uma auditoria completa e minuciosa da infraestrutura antes de iniciar o trabalho. Entendemos como tudo funciona e só então aceitamos as tarefas. E se antes corríamos imediatamente para manter a infraestrutura, agora fazemos primeiro um projeto único, que nos ajuda a entender como colocá-la em condições de funcionamento.

E sim, evitamos projetos com infraestrutura de baixa qualidade. Mesmo que por muito dinheiro, mesmo que por amizade. Não é lucrativo executar projetos doentios. Perceber isso nos ajudou a crescer. Ou um projeto único para colocar a infraestrutura em ordem e depois um contrato de manutenção, ou simplesmente passamos voando. Passando por outro iceberg.

PS Então, se você tiver dúvidas sobre sua infraestrutura, Sinta-se à vontade para enviar uma solicitação.

Temos 2 auditorias gratuitas por mês, talvez o seu projeto seja uma delas.

Fonte: habr.com

Adicionar um comentário