A tradução do artigo foi preparada especialmente para os alunos do curso DevOps Practices and Tools , que começa hoje!
Você já lançou um novo serviço em produção? Ou talvez envolvido na manutenção de tais serviços? Se sim, o que você seguiu? O que é bom para a produção e o que é ruim? Como você treina os novos membros da equipe para liberar ou manter os serviços existentes.
A maioria das empresas em termos de práticas de exploração industrial acaba adotando as abordagens do "Oeste Selvagem". Cada equipe, por tentativa e erro, determina independentemente as ferramentas e as melhores práticas, mas isso geralmente afeta não apenas o sucesso dos projetos, mas também os engenheiros.
O método de tentativa e erro cria um ambiente em que a busca por criminosos e a transferência de responsabilidade são comuns. Com esse comportamento, fica cada vez mais difícil aprender com os erros e não repeti-los novamente.
Organizações de sucesso:
- reconhecer a necessidade de diretrizes para a produção,
- aprender boas práticas
- iniciar uma discussão sobre a prontidão para a produção ao desenvolver novos sistemas ou componentes,
- garantir o cumprimento das regras de preparação para a produção.
A preparação para a produção inclui um processo de revisão. Uma revisão pode ser na forma de uma lista de verificação ou de um conjunto de perguntas. Uma revisão pode ser feita manualmente, automaticamente ou ambos. Em vez de listas de requisitos estáticos, podem ser criados modelos de lista de verificação que podem ser adaptados às necessidades específicas. Dessa maneira, os engenheiros podem receber uma maneira de herdar conhecimento e flexibilidade suficiente quando necessário.
Quando verificar a disponibilidade do serviço para produção?
É útil realizar uma verificação de prontidão para a produção não apenas imediatamente antes da liberação, mas também ao transferi-la para outra equipe operacional ou novo funcionário.
Verifique quando:
- Liberando um novo serviço em produção.
- Transfira a operação do serviço de produção para outra equipe, como o SRE.
- Transferir a operação do serviço de produção para novos funcionários.
- Organize o suporte técnico.
Lista de verificação de prontidão para produção
Algum tempo atrás, como exemplo,
publiquei uma lista de verificação para verificar a disponibilidade da produção. Embora essa lista tenha sido exibida ao trabalhar com clientes do Google Cloud, será útil e aplicável fora do Google Cloud.
Design e desenvolvimento
- Projete um processo de construção reproduzível que não exija acesso a serviços externos e não dependa da falha de sistemas externos.
- Durante o período de design e desenvolvimento, defina e instale o SLO para seus serviços.
- Documente as expectativas para a disponibilidade de serviços externos dos quais você depende.
- Evite um único ponto de falha removendo dependências de um recurso global. Replicar o recurso ou usar a opção de fallback quando o recurso estiver indisponível (por exemplo, valor codificado).
Gerenciamento de configuração
- Configurações estáticas, pequenas e não secretas podem ser transmitidas através das opções da linha de comandos. De resto, use os serviços de armazenamento de configuração.
- A configuração dinâmica deve ter configurações de backup, caso o serviço de configuração não esteja disponível.
- A configuração do ambiente de desenvolvimento não deve estar relacionada à configuração de produção. Caso contrário, pode levar ao acesso aos serviços de produção do ambiente de desenvolvimento, o que pode causar problemas de privacidade e vazamento de dados.
- Documente o que pode ser configurado dinamicamente e descreva o comportamento de fallback se o sistema de entrega da configuração estiver indisponível.
Gerenciamento de Liberação
- Documente o processo de liberação em detalhes. Descreva como as liberações afetam os SLOs (por exemplo, um aumento temporário na latência devido a falhas de cache).
- Documente lançamentos de canários.
- Desenvolva um plano para analisar lançamentos de canários e, se possível, mecanismos de reversão automática.
- Verifique se as reversões podem usar os mesmos processos que a implantação.
Adequação para monitoramento (Observabilidade)
- Verifique se você está compilando o conjunto de métricas necessárias para o SLO.
- Certifique-se de poder distinguir entre dados do cliente e do servidor. Isso é importante para a solução de problemas.
- Defina alertas para reduzir os custos de mão-de-obra. Por exemplo, exclua alertas causados por operações de rotina.
- Se você usa o Stackdriver, inclua as métricas da plataforma GCP em seus painéis. Configure alertas para dependências do GCP.
- Sempre distribua o rastreamento de entrada. Mesmo se você não participar do rastreamento, isso permitirá que serviços de nível inferior depurem problemas de produção.
Protecção e segurança
- Verifique se todas as conexões externas estão criptografadas.
- Verifique se seus projetos de produção têm a configuração correta do IAM.
- Use redes para isolar grupos de instâncias de máquinas virtuais.
- Use uma VPN para conectar-se com segurança a redes remotas.
- Documente e monitore o acesso do usuário aos dados. Verifique se todo o acesso do usuário aos dados está marcado e registrado.
- Verifique se os pontos de extremidade de depuração são limitados por ACLs.
- Limpe a entrada do usuário. Configure os limites de tamanho da carga útil para entrada do usuário.
- Verifique se o seu serviço pode bloquear seletivamente o tráfego de entrada para usuários individuais. Isso bloqueará violações sem afetar outros usuários.
- Evite terminais externos que iniciam um grande número de operações internas.
Planejamento de capacidade
- Documente como o seu serviço é dimensionado. Por exemplo: número de usuários, tamanho da carga útil recebida, número de mensagens recebidas.
- Documente os requisitos de recursos para o seu serviço. Por exemplo: o número de instâncias de máquinas virtuais alocadas, o número de instâncias do Spanner, equipamentos especializados, como uma GPU ou TPU.
- Restrições de recursos do documento: tipo de recurso, região etc.
- Documente limites de cota para criar novos recursos. Por exemplo, limitando o número de solicitações de API do GCE, se você usar a API para criar novas instâncias.
- Considere executar testes de estresse para analisar a degradação do desempenho.
Isso é tudo. Vejo você na sala de aula!