
Aqui está uma história que mudou minha abordagem para devops para sempre. Na época do estaleiro, muito, muito antes deles, quando os caras e eu estávamos apenas pensando em nosso negócio e trabalhando como freelancers em pedidos aleatórios, uma oferta caiu no meu carrinho.
A empresa que escreveu foi em análise de dados. Ela processou milhares de solicitações todos os dias. Chegaram até nós com as palavras: pessoal, temos ClickHouse e queremos automatizar sua configuração e instalação. Queremos que Ansible, Terraform, Docker e tudo isso sejam armazenados no gita. Queremos um cluster de quatro nós com duas réplicas em cada um.
Uma solicitação padrão, existem dezenas delas, e você precisa da mesma boa solução padrão. Dissemos "ok" e em 2-3 semanas tudo estava pronto. Eles aceitaram o trabalho e começaram a se mudar para o novo cluster Klickhaus usando nosso utilitário.
Ninguém com eles queria ou sabia mexer com Klickhaus. Então pensamos que esse era o seu principal problema, por isso o posto de serviço da empresa simplesmente deu sinal verde para minha equipe automatizar o trabalho o máximo possível para não voltar lá.
Acompanhamos a mudança, outras tarefas apareceram - configurar backups e monitoramento. No mesmo momento, o posto de serviço desta empresa fundiu-se com outro projecto, ficando-nos com o comandante de um dos nossos - Leonid. Lenya não era um cara muito talentoso. Um desenvolvedor simples que de repente foi colocado no comando da Klickhaus. Parece que esta foi sua primeira missão para liderar algo, e pela honra acumulada ele teve uma febre estelar.
Juntos, iniciamos os backups. Eu me ofereci para fazer backup dos dados originais imediatamente. Basta pegar, fechar e jogar elegantemente em algum c3. Os dados brutos são ouro. Havia outra opção - fazer o backup das próprias tabelas em Klickhaus, usando um friso e copiando. Mas Lenya veio com sua própria solução.
Ele anunciou que precisávamos de um segundo cluster Klickhaus. E a partir de agora, vamos gravar dados em dois clusters - o principal e o backup. Eu digo a ele, eles dizem, Leon, não será um backup, mas uma réplica ativa. E se os dados começarem a se perder na produção, seu backup será o mesmo.
Mas Lenya agarrou firmemente o volante e se recusou a ouvir meus argumentos. Passamos muito tempo com ele no chat, mas não havia nada a fazer - Lenya estava dirigindo o projeto, éramos apenas caras contratados da rua.
Monitoramos o estado do cluster e cobramos apenas pelo trabalho dos administradores. Limpe a administração de Klickhaus sem entrar em dados. O cluster estava disponível, os discos estavam OK, os nós estavam OK.
Ainda não sabíamos que recebemos esse pedido devido a um terrível mal-entendido dentro da equipe.
O gerente estava insatisfeito com a lentidão do Klickhaus e, às vezes, a perda de dados. Ele deu ao seu STO a tarefa de descobrir. Ele descobriu o melhor que pôde e concluiu que você só precisa automatizar o Klickhaus - e é 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, foi no meu aniversário.
Sexta-feira à noite. Reservei uma mesa no meu bar de vinhos favorito e liguei para meus manos.
Quase antes de sair, a gente recebe a tarefa de fazer uma alteração, a gente faz, está tudo bem. Alter passou, confirmou Clickhouse. Já nos reunimos em um bar e eles nos escrevem dizendo que não há dados suficientes. Eles contaram - tudo parece ser o suficiente. E eles foram comemorar.
O restaurante era barulhento em uma noite de sexta-feira. Depois de pedir bebidas e comida, eles se recostaram nos sofás. Todo esse tempo, minha folga foi lentamente preenchida com mensagens. Eles escreveram algo sobre a falta de dados. Achei que a manhã era mais sábia do que a noite. Principalmente hoje.
Perto das onze, eles começaram a ligar. Era o chefe da empresa ... "Provavelmente, ele decidiu me parabenizar," - pensei muito hesitante, peguei o telefone.
E ouvi algo como: “Você estragou nossos dados! Eu pago você, mas nada funciona! Você estava encarregado dos backups e não fez nada! Vamos consertar! " - apenas ainda mais áspero.
- Quer saber, vá se foder! Hoje é meu aniversário, e agora vou beber, não fazer suas merdas e palitos caseiros de junho!
Eu não disse isso. Em vez disso, ele pegou seu laptop e começou a trabalhar.
Não, eu bombardei, bombardei como o inferno! Eu coloquei o cáustico "eu avisei" no chat - porque o backup, que não era um backup, é claro, não salvou nada.
Os caras e eu descobrimos como interromper manualmente a gravação e verificar tudo. Certifique-se de que alguns dos dados não estão sendo gravados.
Paramos de gravar, contamos o número de eventos que aconteciam por dia. Eles acrescentaram mais dados, dos quais apenas um terço não foi registrado. Três fragmentos de 2 réplicas. Você insere 100.000 linhas - 33.000 não são gravadas.
A confusão era completa. Todos mandavam uns aos outros se foderem: Lenya ia primeiro, seguida por mim e pelo fundador da empresa. Apenas o SRT aderido tentou trazer nossas ligações com gritos e correspondência no sentido de encontrar uma solução para o problema.
O que realmente estava acontecendo - ninguém entendeu
Os caras e eu simplesmente surtamos quando percebemos que um terço de todos os dados não foram apenas gravados - foram perdidos! Descobriu-se que o pedido na empresa era o seguinte: após a inserção, os dados eram excluídos de forma irrevogável, os eventos eram fragmentados em lotes. Imaginei como Sergei converte tudo isso em rublos perdidos.
Meu aniversário também estava indo para o lixo. Sentamos no bar e geramos ideias, tentando resolver o quebra-cabeça lançado. O motivo da queda de Klickhaus não era óbvio. Talvez seja uma rede, talvez seja sobre as configurações do Linux. Sim, qualquer coisa, hipóteses pareciam suficientes.
Eu não fiz o juramento de desenvolvimento, mas foi desonesto deixar 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 em nossas decisões, nem do nosso lado. O 1% de chance de errarmos ainda queimava de ansiedade. Mas não importava de que lado estava o problema, ele precisava ser consertado. Deixar os clientes, sejam eles quais forem, com um vazamento de dados tão terrível é muito cruel.
Até as três da manhã trabalhamos na mesa de um restaurante. Eventos de lançamento, insira selecionar - e dirigiu para preencher os espaços em branco. Quando você bagunçou os dados, é feito assim - você pega a média dos dados dos dias anteriores e os insere nos dados que foram bagunçados.
Depois das três da manhã, meu amigo e eu fomos para minha casa e pedimos pivasik no mercado de álcool. Eu estava sentado com um laptop e problemas com Klickhaus, um amigo estava me contando algo. Como resultado, uma hora depois, ele ficou ofendido por eu estar trabalhando e não bebendo cerveja com ele e foi embora. Classic - era amigo de Devops.
Por volta das 6h, recriei a tabela novamente e os dados começaram a se encher. Tudo funcionou sem perdas.
Então foi difícil. Todos se culparam pela perda de dados. Se houvesse um novo bug, tenho certeza de que um tiroteio iria começar
Nessas séries, finalmente começamos a entender que a empresa pensava que éramos a galera que trabalhava com dados e monitorava a estrutura das tabelas. Eles confundiram admins com dibieys. E eles vieram nos perguntar não como administradores.
A principal reclamação deles é - que merda, você era responsável pelos backups e não os fazia normalmente, você continuava os dados. E tudo isso com o rebobinamento de xeque-mate.
Eu queria justiça. Desenterrei a correspondência e anexei tudo com screenshots, onde Leonid com todas as suas forças para fazer o backup que foi feito. O STO deles ficou do nosso lado depois do meu telefonema. Depois disso, Lenya admitiu sua culpa.
O chefe da empresa, por outro lado, não queria culpar seu próprio pessoal. Telas e palavras não funcionaram com ele. Ele acreditava que, como éramos especialistas aqui, tínhamos que convencer a todos e insistir em nossa decisão. Aparentemente, nossa tarefa era ensinar Lenya e, além disso, contorná-lo, indicado pelo gerente do projeto, a chegar ao ponto principal e tirar pessoalmente todas as nossas dúvidas sobre o conceito de backups.
Chatik exalava ódio, agressão oculta e indisfarçável. Eu não sabia o que fazer. Tudo parou. E então fui aconselhado a maneira mais fácil - escrever para o gerente em uma nota pessoal e marcar um encontro com ele. Vasya, as pessoas na vida não são tão galgos quanto no bate-papo. O patrão respondeu à minha mensagem: vamos, sem dúvida.
Foi o encontro mais engraçado da minha carreira. Meu cliente aliado - o posto de gasolina - não conseguia encontrar tempo. Fui à reunião com o chefe e Lyona.
Vez após vez, repassei nosso possível diálogo em minha cabeça. Consegui chegar com bastante antecedência, meia hora de antecedência. Começou nervoso, fumei 10 cigarros, entendi tudo - estava sozinho porra. Não vou conseguir convencê-los. E entrou no elevador.
Enquanto subia, ele golpeou com um isqueiro e o quebrou.
Como resultado, Lenya não estava na reunião. E tivemos uma ótima conversa sobre tudo com o principal! Sergei me contou sobre sua dor. Ele não queria "automatizar Clickhouse" - ele queria que as consultas funcionassem.
Não vi uma cabra, mas sim um bom sujeito preocupado com o seu negócio, imerso no trabalho 24 horas por dia, 7 dias por semana. O bate-papo costuma nos atrair vilões, canalhas e idiotas. Mas na vida essas pessoas são exatamente como você.
Sergei não precisava de alguns desenvolvedores para contratar. O problema que enfrentaram acabou sendo muito maior.
Eu disse que poderia resolver seus problemas - é apenas um trabalho completamente diferente, e tenho uma amiga DIBI para ela. Se tivéssemos descoberto inicialmente que esse era um negócio para eles, teríamos evitado muito. Tarde, mas percebemos que o problema estava na merda do trabalho com os dados, e não na infraestrutura.
Apertamos as mãos, a taxa foi aumentada duas vezes e meia, mas com a condição - eu levo absolutamente toda a obscenidade com seus dados e Klickhaus para mim. No elevador, entrei em contato com o mesmo dibieyschik Max e conectei-o ao trabalho. Foi necessário remover todo o cluster.
Treshak no projeto adotado estava a granel. Começando com o mencionado "backup". Descobriu-se que o mesmo cluster de "backup" não estava isolado. Eles testaram tudo nele, às vezes até deixaram em produção.
Os desenvolvedores da equipe criaram seus próprios dados personalizados "inseridos". Funcionava assim: arquivos em lote, execute um script e mescle os dados em uma placa. Mas o principal problema era que uma grande quantidade de dados era aceita para uma solicitação simples. Solicitação de dados ingressada por segundo. Tudo por causa de um número - a quantidade por dia.
Os desenvolvedores internos usaram incorretamente a ferramenta de análise. Eles foram para grafana, escreveram seu pedido real. Ele despejou dados em 2 semanas. Acabou sendo um lindo gráfico. Mas, na verdade, a solicitação de dados ocorria a cada 10 segundos. Tudo isso acumulado em uma fila, já que Klickhaus simplesmente não retirou o processamento. Aqui estava o motivo principal. Nada funcionava no grafan, os pedidos ficavam em fila, dados antigos irrelevantes chegavam constantemente.
Nós reconfiguramos o cluster, redesenhamos a inserção. Os desenvolvedores internos reescreveram sua "inserção" e ela começou a fragmentar os dados corretamente.
Max conduziu uma auditoria completa da infraestrutura. Ele delineou um plano para mudar para um back-end completo. Mas isso não combinava com a empresa. Eles esperavam de Max um segredo mágico que lhes permitisse trabalhar da maneira antiga, mas apenas eficaz. Lenya ainda estava encarregada do projeto, que não havia aprendido nada. De tudo o que foi proposto, ele novamente escolheu sua alternativa. Como sempre, foi a decisão mais seletiva ... ousada. Lyonya acreditava que sua empresa tinha um caminho especial. Espinhoso e cheio de icebergs.
Na verdade, nisso nos separamos - fizemos o que podíamos.
Com cheio de cones, sabendo dessa história, abrimos nosso próprio negócio e formamos vários princípios para nós mesmos. Nunca começaremos a trabalhar tão bem agora como antes.
Depois desse projeto, Max, o jogador Debian, se juntou a nós, e ainda trabalhamos muito bem juntos. Case with Klickhaus ensinou como conduzir uma auditoria completa e completa da infraestrutura antes de iniciar o trabalho. Investigamos como tudo funciona e só então aceitamos as tarefas. E se antes corríamos imediatamente para manter a infraestrutura, agora primeiro fazemos um projeto único, que ajuda a entender como colocá-lo em funcionamento.
E sim, contornamos projetos com infraestrutura de merda. Mesmo que por muito dinheiro, mesmo que seja por amizade. Não é lucrativo liderar projetos para doentes. Essa percepção nos ajudou a crescer. Ou um projeto único para colocar a infraestrutura em ordem e, em seguida, um contrato de serviço, ou simplesmente voamos. Depois de outro iceberg.
PS Então, se você tiver alguma dúvida sobre sua infraestrutura, fique à vontade para deixar um pedido .
Temos 2 auditorias gratuitas por mês, talvez o seu projeto esteja entre elas.