A tradução do artigo foi preparada especialmente para os alunos do curso , que começa hoje mesmo!

Você já lançou um novo serviço em produção? Ou talvez tenha trabalhado na manutenção de tais serviços? Se sim, quais foram suas diretrizes? O que é bom para a produção e o que não é? Como você treina novos membros da equipe para lançamentos ou para a manutenção de serviços existentes.
A maioria das empresas, em termos de práticas de operação industrial, acaba adotando abordagens do 'Velho Oeste'. Cada equipe, por meio de tentativas e erros, determina independentemente suas ferramentas e melhores práticas. Mas isso muitas vezes 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 culpados 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.
Organizações de sucesso:
- reconhecem a necessidade de diretrizes para a produção,
- estudam as melhores práticas,
- iniciam discussões sobre a prontidão para a produção durante o desenvolvimento de novos sistemas ou componentes,
- garantem a conformidade com as regras de preparação para a produção.
A preparação para a produção inclui o processo de 'revisão'. A revisão pode ser feita na forma de uma lista de verificação ou um conjunto de perguntas. As revisões podem ser feitas manualmente, automaticamente ou de ambas as maneiras. Em vez de listas de requisitos estáticas, podem ser criados modelos de listas de verificação que se adaptam a necessidades específicas. Dessa forma, os engenheiros podem possuir uma forma de herdar conhecimentos e ter a flexibilidade necessária quando necessário.
Quando verificar o serviço para prontidão para a produção?
A verificação de prontidão para a produção deve ser realizada não apenas imediatamente antes do lançamento, mas também ao transferir para outra equipe de operações ou para um novo colaborador.
Realize a verificação quando:
- Você lançar um novo serviço em produção.
- Transferir a operação de um serviço de produção para outra equipe, como o SRE.
- Transferir a operação de um serviço de produção para novos colaboradores.
- Organizar suporte técnico.
Checklist de prontidão para a produção
Algum tempo atrás, eu elaborei um checklist de prontidão para a produção. Apesar de este lista ter surgido ao trabalhar com clientes do Google Cloud, ela será útil e aplicável fora do Google Cloud.
Design e desenvolvimento
- Desenvolva um processo de construção reproduzível que não exija acesso a serviços externos e não dependa de falhas de sistemas externos.
- Durante o design e o desenvolvimento, defina e estabeleça SLO para os seus serviços.
- Documente as expectativas de disponibilidade dos serviços externos dos quais você depende.
- Evite um ponto único de falha eliminando dependências de um único recurso global. Replicando o recurso ou usando uma alternativa quando o recurso não estiver disponível (por exemplo, um valor codificado).
Gerenciamento de configuração
- Configurações estáticas, pequenas e não secretas podem ser passadas por meio de parâmetros de linha de comando. Para todo o resto, utilize serviços de armazenamento de configuração.
- Configurações dinâmicas devem ter ajustes 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 ligada à configuração de produção. Caso contrário, isso pode levar ao acesso do ambiente de desenvolvimento aos serviços de produção, o que pode causar problemas de privacidade e vazamento de dados.
- Documente o que pode ser configurado dinamicamente e descreva o comportamento de backup caso o sistema de entrega de configuração não esteja disponível.
Gerenciamento de lançamentos
- Documente detalhadamente o processo de lançamento. Descreva como os lançamentos afetam o SLO (por exemplo, aumento temporário de latência devido a falhas de cache).
- Documente lançamentos canário.
- Desenvolva um plano para analisar lançamentos canário e, sempre que possível, mecanismos de rollback automático.
- Certifique-se de que os rollbacks possam usar os mesmos processos que a implantação.
Adaptabilidade à monitorização (Observability)
- Assegure-se de que um conjunto de métricas necessárias para o SLO esteja sendo coletado.
- Assegure-se de poder distinguir entre dados do cliente e do servidor. Isso é importante para identificar as causas de falhas.
- Configure alertas para minimizar a carga de trabalho. Por exemplo, remova alertas causados por operações de rotina.
- Se você usar o Stackdriver, ative as métricas da plataforma GCP em seus painéis. Configure alertas para dependências do GCP.
- Sempre espalhe a rastreabilidade de entrada. Mesmo que você não participe da rastreabilidade, isso ajudará os serviços de nível inferior a depurar problemas em produção.
Proteção e segurança
- Certifique-se de que todas as conexões externas sejam criptografadas.
- Certifique-se de que seus projetos de produção estejam com a configuração IAM correta.
- Use redes para isolar grupos de instâncias de máquinas virtuais.
- Utilize VPN para uma conexão segura a redes remotas.
- Documente e monitore o acesso dos usuários aos dados. Garanta que todo acesso dos usuários aos dados seja verificado e registrado.
- Assegure-se de que os pontos finais para depuração sejam restritos com ACL.
- Sanitize a entrada do usuário. Configure limites de tamanho da carga útil para a entrada do usuário.
- Certifique-se de que seu serviço possa bloquear seletivamente o tráfego de entrada para usuários específicos. Isso permitirá bloquear infrações sem afetar outros usuários.
- Evite pontos finais externos que iniciem um grande número de operações internas.
Planejamento de capacidade
- Documente como seu serviço escalona. Por exemplo: número de usuários, tamanho da carga útil de entrada, número de mensagens recebidas.
- Documente os requisitos de recursos para o seu serviço. Por exemplo: número de instâncias de máquinas virtuais dedicadas, número de instâncias do Spanner, hardware especializado como GPU ou TPU.
- Documente as limitações de recursos: tipo de recurso, região, etc.
- Documente as limitações de cota para a criação de novos recursos. Por exemplo, limitações no número de solicitações da API GCE, se você estiver usando a API para criar novas instâncias.
- Considere realizar testes de carga para analisar a degradação de desempenho.
É isso aí. Até a próxima aula!
Fonte: habr.com
