Recentemente, iniciamos um pequeno projeto para limpar como partes de nossos sistemas se comunicam nos bastidores do Buffer. Algum contexto rápido: usamos algo chamado SQS (Amazon Simple Queue Service. Essas filas funcionam como salas de espera para tarefas. Uma parte do nosso sistema deixa uma mensagem e outra a pega mais tarde. Pense nisso como deixar um bilhete para um colega de trabalho: "Ei, quando você tiver uma chance, processe esses dados." O sistema que envia a nota não precisa esperar por uma resposta. Nosso O projeto era realizar manutenção de rotina: atualizar as ferramentas que usamos para testar filas localmente e limpar sua configuração. Mas enquanto estávamos mapeando quais filas realmente usamos, encontramos algo que não esperávamos: sete processos em segundo plano diferentes (ou cron jobs, que são tarefas agendadas que são executadas automaticamente) e trabalhadores que estavam rodando silenciosamente por até cinco anos. penseSim, administrar infraestrutura desnecessária custa dinheiro. Fiz um cálculo rápido e, para um desses trabalhadores, teríamos pago cerca de US$ 360-600 em 5 anos. Esta é uma quantia modesta no grande esquema de nossas finanças, mas definitivamente puro desperdício para um processo que não faz nada. No entanto, depois de passar por essa limpeza, eu diria que o custo financeiro é na verdade a menor parte do problema. torna-se uma questão que consome tempo de integração e cria incerteza. Todos nós já passamos por isso — olhando para um pedaço de código, com medo de tocá-lo porque talvez ele esteja fazendo algo importante. Até mesmo a infraestrutura "esquecida" ocasionalmente precisa de atenção. Isso foi crítico. Foi uma correção temporária que se tornou permanente? empresa anos atrás, e o contexto foi deixado com eles.Como isso acontece?É fácil apontar o dedo, mas a verdade é que isso acontece naturalmente em qualquer sistema de longa duração.Um recurso fica obsoleto, mas o trabalho em segundo plano que o suportava continua em execução. tarefa que verificou todo o banco de dados em busca de aniversários correspondentes à data atual e enviou aos clientes um e-mail personalizado Durante uma refatoração em 2020, trocamos nossa ferramenta de e-mail transacional, mas esquecemos de remover esse trabalhador - ele continuou funcionando por mais cinco anos. muitos serviços pequenos e independentes) anos atrás. Dividimos nosso monólito em serviços separados, cada um com seu próprio repositório, pipeline de implantação e infraestrutura. Na época, fazia sentido: cada serviço poderia ser implantado por conta própria, com limites claros entre as equipes. Mas, ao longo dos anos, descobrimos que a sobrecarga de gerenciar dezenas de repositórios superava os benefícios para uma equipe do nosso tamanho. possível.No mundo dos microsserviços, cada repositório é sua própria ilha. Um trabalhador esquecido em um repositório pode nunca ser notado pelos engenheiros que trabalham em outro. Não há um único lugar para procurar nomes de filas, nem uma visão unificada do que está sendo executado e onde. Com tudo em um repositório, poderíamos finalmente ver o quadro completo até seus consumidores e produtores. encontrar infraestrutura zumbi – mas isso fez com quedescoberta quase inevitável. O que realmente fizemos Depois de identificarmos os processos órfãos, tivemos que decidir o que fazer com eles. Veja como abordamos isso. Primeiro, rastreamos cada um até sua origem. Pesquisamos o histórico do git e a documentação antiga para entender por que cada trabalhador foi criado. Na maioria dos casos, o propósito original era claro: uma migração única de dados, um recurso que foi desativado, uma solução alternativa temporária que perdeu sua utilidade. Depois, confirmamos que eles realmente não eram utilizados. Antes de remover qualquer coisa, adicionamos registros para verificar se esses processos não estavam fazendo silenciosamente algo importante que havíamos perdido. Monitoramos por alguns dias para ter certeza de que eles não foram chamados e os removemos gradativamente. Não excluímos tudo de uma vez. Removemos os processos um por um, observando quaisquer efeitos colaterais inesperados. (Felizmente, não houve nenhum.) Finalmente, documentamos o que aprendemos. Adicionamos notas aos nossos documentos internos sobre o que cada processo havia feito originalmente e por que foi removido, para que os futuros engenheiros não se perguntassem se algo importante desaparecesse.O que mudou após a limpezaAinda estamos no início da medição do impacto total, mas aqui está o que vimos até agora.Nosso inventário de infraestrutura agora é preciso. Quando alguém pergunta: "Que trabalhadores administramos?" na verdade, podemos responder a essa pergunta com confiança. As conversas de integração também ficaram mais simples. Novos engenheiros não estão tropeçando em processos misteriosos e se perguntando se estão perdendo contexto. A base de código reflete o que realmente fazemos, não o que fizemos há cinco anos. Trate os refatoradores como arqueologia e prevenção Minha maior conclusão deste projeto: cada refatorador significativo é uma oportunidade para a arqueologia. Aquela fila de algum projeto antigo? O trabalhador que alguém criou para uma migração de dados única? A tarefa agendada que faz referência a um recurso do qual você nunca ouviu falar? Eles ainda podem estar em execução. Aqui está o que estamos incorporando em nosso processo daqui para frente: Durante qualquer refatoração, pergunte: o que mais afeta esse sistema que não vemos há algum tempo? Ao descontinuar um recurso, rastreie-o até seus processos em segundo plano, não apenas o código voltado para o usuário. ainda. À medida que continuamos a consolidação, estamos confiantes de que encontraremos mais dessas relíquias escondidas. Mas agora estamos preparados para capturá-los e impedir a formação de novos. Quando todo o seu código reside em um só lugar, a infraestrutura órfã não tem onde se esconder.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free