

# OPS06-BP02 Testar as implantações
<a name="ops_mit_deploy_risks_test_val_chg"></a>

 Teste os procedimentos de lançamento na pré-produção usando a mesma configuração de implantação, controles de segurança, etapas e procedimentos da produção. Valide se todas as etapas implantadas foram concluídas conforme o esperado, como inspecionar arquivos, configurações e serviços. Teste ainda mais todas as alterações com testes funcionais, de integração e de carga, além de qualquer monitoramento, como verificações de integridade. Ao fazer esses testes, você pode identificar problemas de implantação com antecedência, podendo planejá-los e mitigá-los antes da produção. 

 Você pode criar ambientes paralelos temporários para testar cada alteração. Automatize a implantação dos ambientes de teste usando a infraestrutura como código (IaC) para ajudar a reduzir a quantidade de trabalho envolvido e garantir estabilidade, consistência e entrega mais rápida de atributos. 

 **Resultado desejado:** A organização adota uma cultura de desenvolvimento orientada a testes que inclui testes de implantações. Isso garante que as equipes se concentrem em oferecer valor empresarial em vez de gerenciar lançamentos. As equipes são engajadas desde o início após a identificação dos riscos de implantação para determinar o curso apropriado da mitigação. 

 **Antipadrões comuns:** 
+  Durante as versões de produção, implantações não testadas causam problemas frequentes que exigem soluções e encaminhamento. 
+  Sua versão contém infraestrutura como código (IaC) que atualiza os recursos existentes. Você não tem certeza se a IaC será executada com êxito ou causará impacto nos recursos. 
+  Você implanta um novo atributo na aplicação. Ele não funciona conforme o esperado e não há visibilidade até ser relatado pelos usuários afetados. 
+  Você atualiza seus certificados. Você instala acidentalmente os certificados nos componentes errados, o que não é detectado e afeta os visitantes do site porque não é possível estabelecer uma conexão segura. 

 **Benefícios de estabelecer esta prática recomendada:** Testes extensivos na pré-produção dos procedimentos de implantação, considerando-se que as mudanças introduzidas por eles minimizam o impacto potencial na produção causado pelas etapas de implantação. Isso aumenta a confiança durante o lançamento da produção e minimiza o suporte operacional sem diminuir a velocidade das alterações que estão sendo entregues. 

 **Nível de risco exposto se esta prática recomendada não for estabelecida:** alto 

## Orientação para implementação
<a name="implementation-guidance"></a>

 Testar seu processo de implantação é tão importante quanto testar as alterações resultantes da implantação. Isso pode ser realizado testando suas etapas de implantação em um ambiente de pré-produção que se assemelhe o máximo possível à produção. Problemas comuns, como etapas de implantação incompletas ou incorretas, ou configurações incorretas, podem ser detectados como resultado antes da produção. Além disso, você pode testar suas etapas de recuperação. 

 **Exemplo de clientes** 

 Como parte do pipeline de integração e entrega contínuas (CI/CD), a Loja UmaEmpresa executa as etapas definidas necessárias para lançar atualizações de infraestrutura e software para seus clientes em um ambiente semelhante ao de produção. O pipeline é composto por pré-verificações para detectar desvios (detecção de alterações nos recursos executados fora da IaC) nos recursos antes da implantação, bem como validar as ações que a IaC realiza após seu início. Ele valida as etapas de implantação, como verificar se determinados arquivos e configurações estão em vigor e se os serviços estão em execução e respondendo corretamente às verificações de integridade no host local antes de serem registrados novamente no balanceador de carga. Além disso, todas as alterações sinalizam vários testes automatizados, como testes funcionais, de segurança, de regressão, de integração e de carga. 

### Etapas para a implementação
<a name="implementation-steps"></a>

1.  Execute verificações de pré-instalação para espelhar o ambiente de pré-produção na produção. 

   1.  Use [detecção de desvios](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html) para detectar quando os recursos foram alterados fora do CloudFormation. 

   1.  Use [conjuntos de alterações](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html) para validar se a intenção da atualização da pilha corresponde às ações que o CloudFormation realiza quando o conjunto de alterações é iniciado. 

1.  Isso aciona uma etapa de aprovação manual no [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals.html) para autorizar a implantação no ambiente de pré-produção. 

1.  Use configurações de implantação, como [arquivos do AWS CodeDeploy AppSpec](https://docs.aws.amazon.com/codedeploy/latest/userguide/application-specification-files.html) para definir as etapas de implantação e validação. 

1.  Quando aplicável, [integre o AWS CodeDeploy a outros serviços da AWS](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws.html) ou [integre o AWS CodeDeploy a produtos e serviços de parceiros](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-partners.html). 

1.  [Monitore as implantações](https://docs.aws.amazon.com/codedeploy/latest/userguide/monitoring.html) usando notificações de eventos do Amazon CloudWatch, do AWS CloudTrail e do Amazon SNS. 

1.  Execute testes automatizados pós-implantação, incluindo testes funcionais, de segurança, regressão, integração e carga. 

1.  [Solução de problemas](https://docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting.html) de implantação. 

1.  A validação bem-sucedida das etapas acima deve iniciar um fluxo de trabalho de aprovação manual para autorizar a implantação na produção. 

 **Nível de esforço do plano de implementação:** Alto 

## Recursos
<a name="resources"></a>

 **Práticas recomendadas relacionadas:** 
+  [OPS05-BP02 Testar e valide as alterações](ops_dev_integ_test_val_chg.md) 

 **Documentos relacionados:** 
+ [AWS Builders' Li\| Automating safe, hands-off deployments \| Test Deployments ](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/#Test_deployments_in_pre-production_environments)
+ [ Whitepaper da AWS Whitepaper \| Practicing Continuous Integration and Continuous Delivery on AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/testing-stages-in-continuous-integration-and-continuous-delivery.html)
+ [ A história da Apollo: o mecanismo de implantação da Amazon ](https://www.allthingsdistributed.com/2014/11/apollo-amazon-deployment-engine.html)
+  [How to test and debug AWS CodeDeploy locally before you ship your code](https://aws.amazon.com/blogs/devops/how-to-test-and-debug-aws-codedeploy-locally-before-you-ship-your-code/) 
+ [ Integrar testes de conectividade de rede com implantação de infraestrutura ](https://aws.amazon.com/blogs/networking-and-content-delivery/integrating-network-connectivity-testing-with-infrastructure-deployment/)

 **Vídeos relacionados:** 
+ [ re:Invent 2020 \| Testar software e sistemas na Amazon ](https://www.youtube.com/watch?v=o1sc3cK9bMU)

 **Exemplos relacionados:** 
+ [ Tutorial \| Deploy and Amazon ECS service with a validation test ](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment-with-hooks.html)