

# REL 8  Como você implementa uma alteração?
<a name="w2aac19b9b9b9"></a>

As alterações controladas são necessárias para implantar novas funcionalidades e garantir que as cargas de trabalho e o ambiente operacional executem softwares conhecidos e possam ser corrigidos ou substituídos de maneira previsível. Se essas alterações forem descontroladas, será difícil prever o efeito ou resolver problemas decorrentes delas. 

**Topics**
+ [REL08-BP01 Usar runbooks para atividades padrão, como implantação](rel_tracking_change_management_planned_changemgmt.md)
+ [REL08-BP02 Integrar testes funcionais como parte da sua implantação](rel_tracking_change_management_functional_testing.md)
+ [REL08-BP03 Integrar testes de resiliência como parte da sua implantação](rel_tracking_change_management_resiliency_testing.md)
+ [REL08-BP04 Implantar usando uma infraestrutura imutável](rel_tracking_change_management_immutable_infrastructure.md)
+ [REL08-BP05 Implantar alterações com automação](rel_tracking_change_management_automated_changemgmt.md)

# REL08-BP01 Usar runbooks para atividades padrão, como implantação
<a name="rel_tracking_change_management_planned_changemgmt"></a>

 Os runbooks são os procedimentos predefinidos para alcançar um resultado específico. Use-os para executar atividades padrão, sejam elas feitas manualmente ou automaticamente. Os exemplos incluem a implantação de uma workload, a aplicação de patches a ela ou a realização de modificações de DNS. 

 Por exemplo, coloque processos em vigor para [garantir a segurança de reversão durante implantações](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments). Garantir que você possa reverter uma implantação sem qualquer interrupção para seus clientes é essencial para tornar um serviço confiável. 

 Para procedimentos de runbooks, comece com um processo manual efetivo válido, implemente-o em código e acione-o para ser executado automaticamente quando adequado. 

 Mesmo para cargas de trabalho sofisticadas altamente automatizadas, os runbooks ainda são úteis para [organizar dias de jogos](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays) ou atender a requisitos rigorosos de relatórios e auditoria. 

 Observe que playbooks são usados em resposta a incidentes específicos, e runbooks são usados para alcançar resultados específicos. Muitas vezes, os runbooks são para atividades de rotina, enquanto os playbooks são usados para responder a eventos que não são rotineiras. 

 **Antipadrões comuns:** 
+  Executar alterações não planejadas na configuração em produção. 
+  Ignorar as etapas do seu plano para agilizar a implantação, resultando em falha na implantação. 
+  Fazer alterações sem testar a inversão delas. 

 **Benefícios do estabelecimento desta prática recomendada:** O planejamento eficaz da alteração aumenta sua capacidade de executá-la com êxito, porque você está ciente de todos os sistemas afetados. A validação da alteração em ambientes de teste aumenta sua confiança. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Alto 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Documente os procedimentos em runbooks para permitir respostas consistentes e rápidas a eventos bem conhecidos. 
  +  [AWS Well-Architected Framework: conceitos: runbook](https://wa.aws.amazon.com/wat.concept.runbook.en.html) 
+  Use o princípio de infraestrutura como código para definir sua infraestrutura. Ao usar o AWS CloudFormation (ou um terceiro confiável) para definir a infraestrutura, você poderá usar o software de controle de versão para controlar as versões e acompanhar as alterações. 
  +  Use o AWS CloudFormation (ou um provedor confiável de terceiros) para definir sua infraestrutura. 
    +  [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  Use bons princípios de design de software para criar modelos exclusivos e desacoplados. 
    +  Determine as permissões, os modelos e as partes responsáveis pela implementação. 
      + [ Controle de acesso com o AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)
    +  Use o controle de origem, como o AWS CodeCommit ou uma ferramenta confiável de terceiros, para controle de versão. 
      +  [O que é o AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

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

 **Documentos relacionados:** 
+  [Parceiro da APN: parceiros que podem ajudá-lo a criar soluções de implantação automatizada](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace: produtos que podem ser usados para automatizar suas implantações](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [AWS Well-Architected Framework: conceitos: runbook](https://wa.aws.amazon.com/wat.concept.runbook.en.html) 
+  [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [O que é o AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

   **Exemplos relacionados:** 
+  [Automatização de operações com playbooks e runbooks](https://wellarchitectedlabs.com/operational-excellence/200_labs/200_automating_operations_with_playbooks_and_runbooks/) 

# REL08-BP02 Integrar testes funcionais como parte da sua implantação
<a name="rel_tracking_change_management_functional_testing"></a>

 Os testes funcionais são executados como parte da implantação automatizada. Se os critérios de êxito não forem atendidos, o pipeline será interrompido ou revertido. 

 Esses testes são executados em um ambiente de pré-produção, que é preparado antes da produção no pipeline. Idealmente, isso é feito como parte de um pipeline de implantação. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Alto 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Integre testes funcionais como parte da sua implantação. Os testes funcionais são executados como parte da implantação automatizada. Se os critérios de êxito não forem atendidos, o pipeline será interrompido ou revertido. 
  +  Invoque o AWS CodeBuild durante a “ação de teste” dos pipelines de lançamento de software baseados no AWS CodePipeline. Esse recurso permite que você execute facilmente uma variedade de testes no código, como testes de unidade, análises de código estático e testes de integração. 
    +  [O AWS CodePipeline adiciona compatibilidade para testes de unidade e de integração personalizada com o AWS CodeBuild](https://aws.amazon.com/about-aws/whats-new/2017/03/aws-codepipeline-adds-support-for-unit-testing/) 
  +  Use as soluções do AWS Marketplace para executar testes automatizados como parte do pipeline de entrega de software. 
    +  [Automação de teste de software](https://aws.amazon.com/marketplace/solutions/devops/software-test-automation) 

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

 **Documentos relacionados:** 
+  [O AWS CodePipeline adiciona compatibilidade para testes de unidade e de integração personalizada com o AWS CodeBuild](https://aws.amazon.com/about-aws/whats-new/2017/03/aws-codepipeline-adds-support-for-unit-testing/) 
+  [Automação de teste de software](https://aws.amazon.com/marketplace/solutions/devops/software-test-automation) 
+  [O que é o AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 

# REL08-BP03 Integrar testes de resiliência como parte da sua implantação
<a name="rel_tracking_change_management_resiliency_testing"></a>

 Os testes de resiliência (usando os [princípios da engenharia do caos](https://principlesofchaos.org/)) são executados como parte do pipeline de implantação automatizado em um ambiente de pré-produção. 

 Esses testes são preparados e executados no pipeline em um ambiente de pré-produção. Eles também devem ser executados em produção como parte de [https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays). 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Médio 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Integre testes de resiliência como parte da sua implantação. Use a engenharia do caos, a disciplina de experimentar em uma workload, para gerar confiança na capacidade da workload de resistir a condições conturbadas na produção. 
  +  Os testes de resiliência injetam falhas ou degradação de recursos para avaliar se a workload responde com a resiliência projetada. 
    +  [Laboratório do Well-Architected: nível 300: testes de resiliência do EC2 RDS e do S3](https://wellarchitectedlabs.com/Reliability/300_Testing_for_Resiliency_of_EC2_RDS_and_S3/README.html) 
  +  Esses testes podem ser executados regularmente em ambientes de pré-produção nos pipelines de implantação automatizados. 
  +  Eles também devem ser executados em produção, como parte dos dias de jogo programados. 
  +  Ao adotar os princípios da engenharia do caos, proponha hipóteses de como a carga de trabalho será executada sob várias condições adversas e, em seguida, teste essas hipóteses por meio dos testes de resiliência. 
    +  [Princípios da engenharia do caos](https://principlesofchaos.org/) 

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

 **Documentos relacionados:** 
+  [Princípios da engenharia do caos](https://principlesofchaos.org/) 
+  [O que é o AWS Fault Injection Simulator?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) 

 **Exemplos relacionados:** 
+  [Laboratório do Well-Architected: nível 300: testes de resiliência do EC2 RDS e do S3](https://wellarchitectedlabs.com/Reliability/300_Testing_for_Resiliency_of_EC2_RDS_and_S3/README.html) 

# REL08-BP04 Implantar usando uma infraestrutura imutável
<a name="rel_tracking_change_management_immutable_infrastructure"></a>

 A infraestrutura imutável é um modelo que não requer atualizações, patches de segurança ou alterações de configuração nas workloads de produção. Quando uma alteração é necessária, a arquitetura é criada em uma nova infraestrutura e implantada na produção. 

 A implementação mais comum do paradigma de infraestrutura imutável é o ***servidor imutável***. Isso significa que, se um servidor precisar de uma atualização ou uma correção, novos servidores serão implantados em vez de atualizar os já em uso. Portanto, em vez de fazer login no servidor via SSH e atualizar a versão do software, cada alteração no aplicativo começa com um push de software para o repositório de código, por exemplo, git push. Como as alterações não são permitidas na infraestrutura imutável, você pode ter certeza sobre o estado do sistema implantado. As infraestruturas imutáveis são inerentemente mais consistentes, confiáveis e previsíveis, e simplificam muitos aspectos do desenvolvimento e operações de software. 

 Use uma implantação de canário ou azul/verde ao implantar aplicativos em infraestruturas imutáveis. 

 [https://martinfowler.com/bliki/CanaryRelease.html](https://martinfowler.com/bliki/CanaryRelease.html) é a prática de direcionar um pequeno número de seus clientes para a nova versão, geralmente em execução em uma única instância de serviço (o canário). Em seguida, você examina profundamente todas as alterações de comportamento ou erros gerados. Você poderá remover o tráfego da implantação canário se encontrar problemas críticos e enviar os usuários de volta para a versão anterior. Se a implantação for bem-sucedida, você poderá continuar implantando a uma velocidade desejada enquanto monitora as alterações em busca de erros até a implantação estar concluída. O AWS CodeDeploy pode ser configurado com uma configuração de implantação que permitirá uma implantação canário. 

 [https://martinfowler.com/bliki/BlueGreenDeployment.html](https://martinfowler.com/bliki/BlueGreenDeployment.html) é semelhante à implantação canário, com a diferença que um conjunto completo do aplicativo é implantado em paralelo. Você alterna as implantações entre as duas pilhas (azul e verde). Novamente, é possível enviar o tráfego para a nova versão e voltar para a versão antiga se houver problemas na implantação. Normalmente, todo o tráfego é alternado de uma só vez. No entanto, você também pode usar frações do tráfego para cada versão para aumentar a adoção da nova versão usando os recursos de roteamento de DNS ponderado do Amazon Route 53. O AWS CodeDeploy e o AWS Elastic Beanstalk podem ser definidos com uma configuração de implantação que permitirá uma implantação azul/verde. 

![\[Diagrama mostrando a implantação azul/verde com o AWS Elastic Beanstalk e o Amazon Route 53\]](http://docs.aws.amazon.com/pt_br/wellarchitected/2022-03-31/framework/images/blue-green-deployment.png)


 Benefícios da infraestrutura imutável: 
+  **Redução em desvios de configuração:** ao substituir frequentemente os servidores de uma configuração básica, conhecida e controlada por versão, a infraestrutura é **redefinida** para um estado conhecido, evitando desvios de configuração. 
+  **Implantações simplificadas**: as implantações são simplificadas porque não precisam oferecer suporte a atualizações. As atualizações são apenas novas implantações. 
+  **Implantações atômicas confiáveis:** as implantações são concluídas com êxito ou nada muda. Ele dá mais confiança no processo de implantação. 
+  **Implantações mais seguras com processos rápidos de reversão e recuperação:** as implantações são mais seguras, pois a versão de trabalho anterior não é alterada. Você pode reverter para ele se forem detectados erros. 
+  **Ambientes consistentes de teste e depuração:** como todos os servidores usam a mesma imagem, não há diferenças entre ambientes. Uma compilação é implantada em vários ambientes. Ele também evita ambientes inconsistentes e simplifica o teste e a depuração. 
+  **Maior escalabilidade:** como os servidores usam uma imagem base, são consistentes e podem ser repetidos, a escalabilidade automática é trivial. 
+  **Cadeia de ferramentas simplificada**: a cadeia de ferramentas é simplificada, pois você pode se livrar das ferramentas de gerenciamento de configuração gerenciando atualizações de software de produção. Não há ferramentas ou agentes adicionais instalados nos servidores. As alterações são feitas na imagem base, testadas e implementadas. 
+  **Maior segurança:** ao negar todas as alterações nos servidores, você pode desabilitar o SSH nas instâncias e remover chaves. Isso reduz o vetor de ataque, melhorando a postura de segurança da sua organização. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Médio 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Faça a implantação com uma infraestrutura imutável. A infraestrutura imutável é um modelo no qual não ocorrem atualizações, patches de segurança ou alterações de configuração *no local* em sistemas de produção. Se for necessária uma alteração, outra versão da arquitetura será criada e implantada na produção. 
  +  [Visão geral de uma implantação azul/verde](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html#welcome-deployment-overview-blue-green) 
  +  [Implantação gradual de aplicativos sem servidor](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html) 
  +  [Infraestrutura imutável: confiabilidade, consistência e confiança por meio da imutabilidade](https://medium.com/@adhorn/immutable-infrastructure-21f6613e7a23) 
  +  [CanaryRelease](https://martinfowler.com/bliki/CanaryRelease.html) 

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

 **Documentos relacionados:** 
+  [CanaryRelease](https://martinfowler.com/bliki/CanaryRelease.html) 
+  [Implantação gradual de aplicativos sem servidor](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html) 
+  [Infraestrutura imutável: confiabilidade, consistência e confiança por meio da imutabilidade](https://medium.com/@adhorn/immutable-infrastructure-21f6613e7a23) 
+  [Visão geral de uma implantação azul/verde](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html#welcome-deployment-overview-blue-green) 
+  [A Amazon Builders’ Library: garanta a segurança da reversão durante implantações](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 

# REL08-BP05 Implantar alterações com automação
<a name="rel_tracking_change_management_automated_changemgmt"></a>

 As implantações e a aplicação de patches são automatizadas para eliminar o impacto negativo. 

 As alterações nos sistemas de produção são uma das maiores áreas de risco para muitas organizações. Consideramos as implantações um problema de primeira classe a ser resolvido junto com os problemas de negócio que o software aborda. Atualmente, isso significa usar a automação nas operações sempre que for viável, incluindo testar e implantar alterações, adicionar ou remover capacidade e migrar dados. O AWS CodePipeline permite gerenciar as etapas necessárias para liberar a sua carga de trabalho. Isso inclui um estado de implantação usando o AWS CodeDeploy para automatizar a implantação do código do aplicativo em instâncias do Amazon EC2, instâncias on-premises, funções do Lambda sem servidor ou serviços do Amazon ECS. 

**Recomendação**  
 Embora a sabedoria convencional sugira que você mantenha humanos no ciclo para os procedimentos operacionais mais difíceis, sugerimos automatizar esses procedimentos exatamente por isso. 

 **Antipadrões comuns:** 
+  Executar as alterações manualmente. 
+  Ignorar as etapas da sua automação por meio de fluxos de trabalho de emergência. 
+  Não seguir seus planos. 

 **Benefícios do estabelecimento desta prática recomendada:** Ao usar a automação para implantar todas as alterações, você elimina as chances de introduzir erros humanos e permite que sejam feitos testes antes de alterar a produção para garantir que seus planos sejam conduzidos. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Médio 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Automatize seu pipeline de implantação. Os pipelines de implantação permitem invocar testes automatizados e detecção de anomalias. Além disso, eles interrompem o pipeline em uma determinada etapa antes da implantação em produção ou revertem automaticamente uma alteração. 
  +  [A Amazon Builders’ Library: garanta a segurança da reversão durante implantações](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 
  +  [A Amazon Builders’ Library: acelere a entrega contínua](https://aws.amazon.com/builders-library/going-faster-with-continuous-delivery/) 
    +  Use o AWS CodePipeline (ou um produto de terceiros confiável) para definir e executar seus pipelines. 
      +  Configure o pipeline para ser iniciado quando uma alteração for confirmada no repositório do seu código. 
        +  [O que é o AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 
      +  Use o Amazon Simple Notification Service (Amazon SNS) e o Amazon Simple Email Service (Amazon SES) para enviar notificações sobre problemas no pipeline ou integrar-se com uma ferramenta de bate-papo da equipe, como o Amazon Chime. 
        +  [O que é o Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 
        +  [O que é o Amazon SES?](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html) 
        +  [O que é o Amazon Chime?](https://docs.aws.amazon.com/chime/latest/ug/what-is-chime.html) 
        +  [Automatize mensagens de chat com webhooks.](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) 

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

 **Documentos relacionados:** 
+  [Parceiro da APN: parceiros que podem ajudá-lo a criar soluções de implantação automatizada](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace: produtos que podem ser usados para automatizar suas implantações](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [Automatize mensagens de chat com webhooks.](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) 
+  [A Amazon Builders’ Library: garanta a segurança da reversão durante implantações](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 
+  [A Amazon Builders’ Library: acelere a entrega contínua](https://aws.amazon.com/builders-library/going-faster-with-continuous-delivery/) 
+  [O que é o AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 
+  [O que é o CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+  [O que é o Amazon SES?](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html) 
+  [O que é o Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 

 **Vídeos relacionados:** 
+  [Conferência da AWS 2019: CI/CD na AWS](https://youtu.be/tQcF6SqWCoY) 