4 lições que aprendemos com nossa última atualização de infraestrutura
Publicados: 2022-05-04Atualização de infraestrutura. Uma tarefa comum, principalmente para uma empresa SaaS como a nossa, certo?
Bem, nossa última atualização não foi a típica atualização de software, pois adicionamos um pequeno toque a ela.
O objetivo principal era atualizar nosso software para a versão mais recente, mas desta vez incluímos mais duas etapas no projeto - reduzir o número de IPs que nossos clientes têm que permitir a lista e obter redundância de banco de dados.
E embora a maior parte da atualização tenha ocorrido sem problemas, também tivemos algumas interrupções de serviço ao longo do caminho.
Nas linhas a seguir, compartilharemos informações dos bastidores sobre por que realizamos a atualização, como foi e quais nossos maiores aprendizados estão avançando.
Vamos direto ao assunto!
Por que realizamos a atualização em primeiro lugar e o que ela incluiu
Entendemos a responsabilidade que temos e o papel que a NitroPack desempenha no sucesso dos negócios de nossos clientes. É por isso que garantir o desempenho ideal, os mais altos padrões de segurança e a estabilidade do serviço 24 horas por dia, 7 dias por semana, são cruciais.
Atualizar nossa infraestrutura regularmente é uma das muitas maneiras de garantir tudo isso. E, como mencionado anteriormente, havia três partes nessa atualização específica:
1. Atualize nosso software para a versão estável mais recente
Como uma solução baseada em nuvem, todas as otimizações que o NitroPack faz para nossos mais de 100.000 sites de clientes são realizadas em nossa infraestrutura. Atualmente, usamos mais de 100 servidores para executar o serviço. Com essa atualização, tivemos que atualizar o software que orquestra nossa frota de servidores para a versão estável mais recente.
2. Reduzir o número de IPs que nossos clientes devem permitir
Simplificando, nosso processo de lista de permissões de IP não era fácil de usar.
Antes da atualização, nossos clientes tinham que listar mais de 40 endereços IP que serviam o tráfego de saída (solicitações) do NitroPack para os sites dos clientes. Além disso, esses IPs não eram fixos, o que significa que quando um de nossos servidores se aposenta, um novo é criado com um endereço IP diferente.
Esse processo de geração de novos IPs exigia que nossos clientes permitissem regularmente dezenas de novos endereços para que o NitroPack otimizasse seus sites com sucesso.
Após a atualização, nossos clientes precisam permitir apenas três IPs fixos e que nunca mudam.
3. Alcance a redundância do banco de dados
Por muito tempo, queríamos obter redundância de banco de dados, pois isso melhoraria o desempenho geral do site e do painel do NitroPack e poderíamos aprimorar a segurança do serviço. Além disso, esta atualização nos permitiria realizar futuras atualizações de banco de dados com zero tempo de inatividade.
Com esses objetivos em mente, dividimos o processo em duas etapas, deixando-nos um dia entre as duas, para que tivéssemos uma boa folga:
Etapa 1: (4 de novembro): Reduzindo o número de IPs
Etapa 2: (6 de novembro): redundância do banco de dados e atualização do software do servidor
Mas nem tudo correu de acordo com as nossas expectativas.
O que não saiu como planejado
Apesar de nossa preparação completa, enfrentamos alguns problemas inesperados em todas as três atualizações. Aqui está o que aconteceu:
Problema nº 1: problemas de conectividade durante o processo de atualização de IP
No dia 4 de novembro, estávamos programados para realizar uma atualização preliminar do serviço, visando reduzir o número de endereços IP para o tráfego de saída do NitroPack.
ТA versão inicial tinha um bug interno de software que não permitia que nosso serviço criasse conexões de saída em alguns casos. Infelizmente, esse problema só apareceu quando nossa infraestrutura passou por situações de pico de tráfego. É por isso que não detectamos o problema em nosso ambiente de teste durante os testes iniciais. O problema de conectividade fez com que o NitroPack não realizasse otimizações de saída de forma confiável, e alguns de nossos clientes experimentaram instabilidade de serviço por algumas horas.
A boa notícia é que nossa equipe de desenvolvimento conseguiu mitigar o problema prontamente atualizando o software do nosso cliente HTTP.

Problema nº 2: o backup do banco de dados demorou mais do que o estimado
Quando começamos a trabalhar na redundância do banco de dados em 6 de novembro, descobrimos rapidamente que levaria muito mais tempo do que o planejado. Isso nos forçou a empurrar a atualização do software do servidor um dia depois.
Mas foi com boas intenções em mente. Queríamos ser extremamente cautelosos ao fazer backup do banco de dados em primeiro lugar, para que pudéssemos executar a redundância sem problemas.
Problema nº 3: um erro no servidor atrasou o processo de atualização do software
Quando começamos a implantar a atualização do software do servidor em 7 de novembro, um pequeno número (menos de 1%) dos servidores começou a gerar erros inesperados que, em última análise, impediram a implantação da atualização e retardaram todo o processo. Não havia como corrigir os problemas por conta própria e fomos forçados a encaminhá-lo ao nosso provedor de servidores.
Embora pareça um pequeno soluço, considerando a magnitude da tarefa, esse erro inesperado fez com que uma pequena parte (menos de 2%) dos clientes da NitroPack passasse por um breve tempo de inatividade intermitente do serviço.
Problema nº 4: Erros inesperados de 502 CDN causaram instabilidade de serviço
Quando pensamos que tínhamos concluído a atualização - nosso sistema de monitoramento começou a registrar ocorrências frequentes de erros de CDN com o código de status HTTP 502.
Infelizmente, o erro afetou todos os nossos clientes, causando instabilidade na entrega de recursos da CDN por alguns dias. Após examinar o problema, emitimos uma atualização de software que corrigiu a instabilidade do serviço permanentemente.
Uma vez que tudo com o NitroPack estava funcionando corretamente, fizemos uma reunião retrospectiva para refletir sobre o que poderíamos melhorar no futuro com base em nossos aprendizados com essa atualização de infraestrutura.
Medidas que estamos tomando para garantir que os mesmos problemas não aconteçam novamente no futuro
No geral, estamos orgulhosos de como foi toda a atualização. Tivemos instabilidades pontuais no atendimento, mas de forma controlada, e conseguimos evitar paralisações de todo o atendimento para toda a base de clientes.
No entanto, sabemos que dar um tapinha nas costas e focar inteiramente no que deu certo não nos fará avançar como empresa e serviço.
É por isso que queremos comunicar as melhorias que iremos implementar para realizar futuras atualizações de forma ainda mais eficiente. Aqui estão os pontos principais:
Ambiente de teste com capacidade de teste de estresse
Isso nos permitirá detectar erros que só acontecem em situações de alto volume com dezenas de milhares de solicitações. Por exemplo, isso nos ajudaria a identificar antecipadamente os problemas de cliente HTTP e conexões reutilizáveis, e poderíamos executar a atualização de IP sem interrupções.
Melhor monitoramento e sistemas de alerta
Com base nos problemas ocorridos durante essa atualização, conseguimos identificar áreas em que não havia monitoramento e alerta. A grande novidade é que já configuramos ambos para essas áreas.
Melhor colaboração entre equipes e comunicação mais proativa com o cliente
Como as várias equipes envolvidas na atualização não estavam sincronizadas de maneira ideal umas com as outras, sentimos que não conseguimos comunicar proativamente e em tempo hábil o progresso da atualização para nossos clientes existentes. Tínhamos nossa página status.nitropack.io para que todos pudessem acompanhar o que estava acontecendo com a atualização, mas isso não era suficiente.
Da próxima vez, comunicaremos o progresso da atualização em tantos canais quanto possível, incluindo mídia social, e-mail, painel e site!
Melhor coordenação com nosso provedor de servidores
Para atualizações futuras, buscaremos uma melhor coordenação com nosso provedor de serviços para garantir soluções oportunas para problemas inesperados. Isso nos ajudará a lidar com erros imprevistos do servidor com mais eficiência.
Por fim, gostaríamos de agradecer a todos os nossos clientes pela paciência e compreensão. A sua confiança é a nossa força motriz para melhorar constantemente o nosso serviço.
