

# OPS 5. Como reduzir defeitos, facilitar a correção e melhorar o fluxo na produção?
<a name="ops-05"></a>

 Adote abordagens que melhoram o fluxo de alterações na produção, que acionem refatoração, feedback rápido sobre a qualidade e correção de erros. Isso acelera as alterações benéficas que entram na produção, limita os problemas implantados e alcança a rápida identificação e correção dos problemas introduzidos pelas atividades de implantação. 

**Topics**
+ [OPS05-BP01 Usar controle de versão](ops_dev_integ_version_control.md)
+ [OPS05-BP02 Testar e validar alterações](ops_dev_integ_test_val_chg.md)
+ [OPS05-BP03 Usar sistemas de gerenciamento de configuração](ops_dev_integ_conf_mgmt_sys.md)
+ [OPS05-BP04 Usar sistemas de gerenciamento de compilação e de implantação](ops_dev_integ_build_mgmt_sys.md)
+ [OPS05-BP05 Executar o gerenciamento de patches](ops_dev_integ_patch_mgmt.md)
+ [OPS05-BP06 Compartilhar padrões de design](ops_dev_integ_share_design_stds.md)
+ [OPS05-BP07 Implementar práticas para aprimorar a qualidade do código](ops_dev_integ_code_quality.md)
+ [OPS05-BP08 Usar vários ambientes](ops_dev_integ_multi_env.md)
+ [OPS05-BP09 Fazer alterações frequentes, pequenas e reversíveis](ops_dev_integ_freq_sm_rev_chg.md)
+ [OPS05-BP10 Automatizar totalmente a integração e a implantação](ops_dev_integ_auto_integ_deploy.md)

# OPS05-BP01 Usar controle de versão
<a name="ops_dev_integ_version_control"></a>

 Use o controle de versão para ativar o rastreamento de alterações e liberações. 

 Muitos serviços da AWS oferecem recursos de controle de versão. Use um sistema de revisão ou de [controle de código-fonte](https://aws.amazon.com/devops/source-control/) como o [Git](https://aws.amazon.com/devops/source-control/git/) para gerenciar código e outros artefatos, como modelos do [AWS CloudFormation](https://aws.amazon.com/cloudformation/) com controle de versão da infraestrutura. 

 **Resultado desejado:** suas equipes colaboram no código. Quando mesclado, o código é consistente e nenhuma alteração é perdida. Os erros são facilmente revertidos por meio do versionamento correto. 

 **Práticas comuns que devem ser evitadas:** 
+  Você está desenvolvendo e armazenando seu código na estação de trabalho. Você teve uma falha de armazenamento irrecuperável na estação de trabalho e seu código foi perdido. 
+  Depois de substituir o código existente pelas alterações, você reinicia a aplicação e ela deixa de ser operável. Não é possível reverter a alteração. 
+  Você tem um bloqueio de gravação em um arquivo de relatório que outra pessoa precisa editar. Ela entra em contato com você solicitando que você interrompa o trabalho para que ela possa concluir as tarefas. 
+  Sua equipe de pesquisa tem trabalhado em uma análise detalhada que moldará seu trabalho futuro. Alguém salvou acidentalmente a lista de compras sobre o relatório final. Não é possível reverter a alteração e você terá que recriar o relatório. 

 **Benefícios de implementar esta prática recomendada:** ao usar recursos de controle de versão, você pode reverter facilmente para estados e versões anteriores reconhecidamente bons e limitar o risco de perda de ativos. 

 **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>

 Mantenha ativos em repositórios controlados por versão. Fazer isso oferece suporte ao rastreamento de alterações, à implantação de novas versões, à detecção de alterações nas versões existentes e à reversão para versões anteriores (por exemplo, a reversão para um estado reconhecidamente bom no caso de uma falha). Integre os recursos de controle de versão dos sistemas de gerenciamento de configurações aos seus procedimentos. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS05-BP04 Usar sistemas de gerenciamento de compilação e de implantação](ops_dev_integ_build_mgmt_sys.md) 

 **Vídeos relacionados:** 
+ [AWS re:Invent 2023 - How Lockheed Martin builds software faster, powered by DevSecOps ](https://www.youtube.com/watch?v=Q1OSyxYkl5w)
+ [AWS re:Invent 2023 - How GitHub operationalizes AI for team collaboration and productivity ](https://www.youtube.com/watch?v=cOVvGaiusOI)

# OPS05-BP02 Testar e validar alterações
<a name="ops_dev_integ_test_val_chg"></a>

 Cada alteração implantada deve ser testada para evitar erros na produção. A prática recomendada concentra-se em testar alterações do controle de versão na build de artefato. Além das alterações do código da aplicação, o teste deve incluir infraestrutura, configuração, controles de segurança e procedimentos de operações. O teste assume muitas formas, desde testes de unidade à análise dos componentes do software (SCA). Mova os testes mais para a esquerda na integração do software e o processo de entrega resultará em maior certeza da qualidade do artefato. 

 Sua organização deve desenvolver padrões de teste para todos os artefatos de software. Os testes automatizados reduzem o trabalho e evitam erros de testes manuais. Os testes manuais podem ser necessários em alguns casos. Os desenvolvedores precisam ter acesso aos resultados dos testes automatizados para criar loops de feedback que melhorem a qualidade do software. 

 **Resultado desejado:** as alterações do software são testadas antes de serem entregues. Os desenvolvedores têm acesso aos resultados e às validações dos testes. Sua organização tem um padrão de testes que se aplica a todas as alterações do software. 

 **Práticas comuns que devem ser evitadas:** 
+  Você implanta uma nova alteração do software sem nenhum teste. Ele não é executado na produção, o que ocasiona uma interrupção. 
+  Novos grupos de segurança são implantados com o AWS CloudFormation sem serem testados em um ambiente de pré-produção. Os grupos de segurança tornam sua aplicação inacessível para seus clientes. 
+  Um método é modificado, mas não há testes de unidade. O software falha quando é implantado em produção. 

 **Benefícios de implementar esta prática recomendada:** a taxa de falhas em alterações nas implantações de software é reduzida. A qualidade do software é aprimorada. Os desenvolvedores aumentaram a conscientização sobre a viabilidade do código deles. As políticas de segurança podem ser distribuídas com confiança para apoiar a conformidade da organização. Alterações da infraestrutura, como atualizações da política de ajuste de escala automático, são testadas com antecedência para atender às necessidades de tráfego. 

 **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>

 Testes são realizados em todas as alterações, desde o código da aplicação à infraestrutura, como parte de sua prática de integração contínua. Os resultados dos testes são publicados para que os desenvolvedores tenham feedback rápido. Sua organização tem um padrão de testes de que todas as alterações devem ser aprovadas. 

 Use o poder da IA generativa com o Amazon Q Developer para melhorar a produtividade do desenvolvedor e a qualidade do código. O Amazon Q Developer inclui a geração de sugestões de código (com base em grandes modelos de linguagem), produção de testes unitários (incluindo condições de limite) e aprimoramentos de segurança de código por meio da detecção e correção de vulnerabilidades de segurança. 

 **Exemplo de cliente** 

 Como parte do pipeline de integração contínua, a AnyCompany Retail realiza alguns tipos de teste em todos os artefatos de software. Eles praticam desenvolvimento orientado a testes para que todo o software tenha testes de unidade. Depois que o artefato é criado, eles executam testes completos. Depois que a primeira etapa de testes é concluída, eles executam uma verificação de segurança da aplicação estática, que procura vulnerabilidades conhecidas. Os desenvolvedores recebem mensagens à medida que cada gate de testes é aprovado. Depois que todos os testes são concluídos, o artefato de software é armazenado em um repositório de artefatos. 

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

1.  Trabalhe com partes interessadas em sua organização para desenvolver um padrão de testes para artefatos de software. Em quais testes padrão todos os artefatos devem ser aprovados? Há requisitos de conformidade ou governança que devem ser incluídos na cobertura de testes? Você precisa realizar testes de qualidade de código? Quando os testes são concluídos, quem precisa saber? 

   1.  A [Arquitetura de referência do pipeline de implantação da AWS](https://pipelines.devops.aws.dev/) contém uma lista confiável de tipos de testes que podem ser conduzidos em artefatos de software como parte de um pipeline de integração. 

1.  Instrumente sua aplicação com os testes necessários com base em seu padrão de testes de software. Cada conjunto de testes deve ser concluído em menos de dez minutos. Os testes devem ser executados como parte de um pipeline de integração. 

   1.  Use o [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html), uma ferramenta generativa de IA que pode ajudar a criar casos de teste unitários (incluindo condições de limite), gerar funções usando código e comentários e implementar algoritmos conhecidos. 

   1.  Use o [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) para testar defeitos no código da sua aplicação. 

   1.  Você pode usar o [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) para realizar testes em artefatos de software. 

   1.  O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) pode orquestrar seus testes de software em um pipeline. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS05-BP01 Usar controle de versão](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_version_control.html) 
+  [OPS05-BP06 Compartilhar padrões de design](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 
+  [OPS05-BP07 Implementar práticas para aprimorar a qualidade do código](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_code_quality.html) 
+  [OPS05-BP10 Automatizar totalmente a integração e a implantação](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_auto_integ_deploy.html) 

 **Documentos relacionados:** 
+  [Adote uma abordagem de desenvolvimento orientado por testes](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [Acelerar seu ciclo de vida de desenvolvimento de software com o Amazon Q](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [O Amazon Q Developer, agora disponível ao público em geral, inclui visualizações de novos recursos para reimaginar a experiência do desenvolvedor](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [A folha de dicas definitiva para usar o Amazon Q Developer em seu IDE](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [workload Shift-Left: aproveitando a IA para a criação de testes](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q Developer Center](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [Dez maneiras de criar aplicações mais rapidamente com o Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [Olhar além da cobertura de código com o Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [Práticas recomendadas para engenharia rápida com o Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [Pipeline de teste do AWS CloudFormation automatizado com TaskCat e CodePipeline](https://aws.amazon.com/blogs/devops/automated-cloudformation-testing-pipeline-with-taskcat-and-codepipeline/) 
+  [Criar um pipeline de CI/CD completo do AWS DevSecOps com ferramentas de código aberto SCA, SAST e DAST](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) 
+  [Conceitos básicos de testes de aplicações com tecnologia sem servidor)](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/) 
+  [Meu pipeline de CI/CD é meu capitão de lançamentos](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [Whitepaper Praticar a integração e entrega contínuas na AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) 

 **Vídeos relacionados:** 
+  [Implementar uma API com o Amazon Q Developer Agent para desenvolvimento de software](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [Instalar, configurar e usar o Amazon Q Developer com os IDEs da JetBrains (instruções)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [Dominar a arte do Amazon CodeWhisperer: playlist do YouTube](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [AWS re:Invent 2020: Infraestrutura testável: teste de integração na AWS](https://www.youtube.com/watch?v=KJC380Juo2w) 
+  [AWS Summit ANZ 2021: Conduzir uma estratégia de primeiro teste com o CDK e desenvolvimento orientado a testes](https://www.youtube.com/watch?v=1R7G_wcyd3s) 
+  [Testar sua infraestrutura como código com o AWS CDK CDK](https://www.youtube.com/watch?v=fWtuwGSoSOU) 

 **Recursos relacionados:** 
+  [Arquitetura de referência do pipeline de implantação da AWS: aplicação](https://pipelines.devops.aws.dev/application-pipeline/index.html) 
+  [Pipeline de DevSecOps de Kubernetes da AWS](https://github.com/aws-samples/devsecops-cicd-containers) 
+  [Executar testes de unidade para uma aplicação Node.js do GitHub usando o AWS CodeBuild](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) 
+  [Usar o Serverspec para o desenvolvimento orientado por testes de código de infraestrutura](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-serverspec-for-test-driven-development-of-infrastructure-code.html) 

 **Serviços relacionados:** 
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 

# OPS05-BP03 Usar sistemas de gerenciamento de configuração
<a name="ops_dev_integ_conf_mgmt_sys"></a>

 Use os sistemas de gerenciamento de configuração para fazer e rastrear alterações nas configurações. Esses sistemas reduzem os erros causados pelos processos manuais e o nível de esforço para implantar as alterações. 

O gerenciamento da configuração estática define valores ao inicializar um recurso que deve permanecer consistente durante todo o tempo de vida do recurso. O gerenciamento da configuração dinâmica define valores na inicialização que podem ou devem ser alterados durante o tempo de vida de um recurso. Por exemplo, é possível definir um recurso para ativar a funcionalidade em seu código por meio de uma alteração na configuração ou alterar o nível de detalhes do registro durante um incidente.

As configurações devem ser implantadas em um estado conhecido e consistente. Recomenda-se usar a inspeção automatizada para monitorar continuamente as configurações de recursos em todos os ambientes e regiões. Esses controles devem ser definidos como código e gerenciamento automatizados para garantir que as regras sejam aplicadas de forma consistente em todos os ambientes. As alterações nas configurações devem ser atualizadas por meio de procedimentos de controle de alterações acordados e aplicadas de forma consistente, respeitando o controle de versão. A configuração da aplicação deve ser gerenciada independentemente do código da aplicação e da infraestrutura. Isso permite uma implantação consistente em vários ambientes. As alterações na configuração não resultam na reconstrução ou reimplantação da aplicação. 

 **Resultado desejado:** você configura, valida e implanta como parte de seu pipeline de integração contínua e entrega contínua (CI/CD). Você monitora para validar se as configurações estão corretas. Isso minimiza qualquer impacto para usuários finais e clientes. 

 **Práticas comuns que devem ser evitadas:** 
+  Você atualiza manualmente a configuração do servidor Web em toda a frota e vários servidores não respondem devido a erros de atualização. 
+  Você atualiza manualmente a frota do servidor de aplicações ao longo de muitas horas. A inconsistência na configuração durante a alteração causa comportamentos inesperados. 
+  Alguém atualizou seus grupos de segurança e seus servidores Web não estão mais acessíveis. Sem saber o que foi alterado, você gasta muito tempo investigando o problema, ampliando o tempo de recuperação. 
+  Você coloca uma configuração de pré-produção em produção por meio de CI/CD sem validação. Você expõe usuários e clientes a dados e serviços incorretos. 

 **Benefícios de implementar esta prática recomendada:** a adoção de sistemas de gerenciamento de configurações reduz o nível de esforço para fazer e rastrear alterações, bem como a frequência de erros causados por procedimentos manuais. Os sistemas de gerenciamento de configuração fornecem garantias com relação aos requisitos regulatórios, de conformidade e de governança. 

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

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

 Os sistemas de gerenciamento de configuração são usados para rastrear e implementar alterações nas configurações de aplicações e ambientes. Os sistemas de gerenciamento de configuração também são usados para reduzir erros causados por processos manuais, tornar as alterações de configuração repetíveis e auditáveis e reduzir o nível de esforço. 

 Na AWS, é possível usar o [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) para monitorar continuamente suas configurações de recursos da AWS em [todas as contas e regiões](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html). Isso ajuda a rastrear o histórico da configuração, compreender como a alteração de uma configuração afeta outros recursos e auditá-la em relação a configurações esperadas ou desejadas, usando o [Regras do AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) e o [AWS Config Conformance Packs](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html). 

 Para configurações dinâmicas em suas aplicações executadas em instâncias do Amazon EC2, AWS Lambda, contêineres, aplicações móveis ou dispositivos de IoT do Amazon EC2, você pode usar o [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)para configurá-los, valida-los, implantá-los e monitorá-los em seus ambientes. 

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

1.  Identifique os proprietários da configuração. 

   1.  Informe os proprietários das configurações sobre quaisquer necessidades regulatórias, de conformidade ou de controle. 

1.  Identifique os itens de configuração e os resultados. 

   1.  Os itens de configuração são todas as configurações de aplicações e ambientes afetadas por uma implantação em seu pipeline de CI/CD. 

   1.  Os resultados incluem critérios de sucesso, validação e o que monitorar. 

1.  Selecione ferramentas para gerenciamento de configuração com base nos requisitos de seus negócios e no pipeline de entrega. 

1.  Considere implantações ponderadas, como implantações canário, para alterações significativas na configuração, a fim de minimizar o impacto de configurações incorretas. 

1.  Integre seu gerenciamento de configuração ao seu pipeline de CI/CD. 

1.  Valide todas as alterações enviadas. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS06-BP01 Preparar-se para alterações malsucedidas](ops_mit_deploy_risks_plan_for_unsucessful_changes.md) 
+  [OPS06-BP02 Testar implantações](ops_mit_deploy_risks_test_val_chg.md) 
+  [OPS06-BP03 Utilizar estratégias de implantação seguras](ops_mit_deploy_risks_deploy_mgmt_sys.md) 
+  [OPS06-BP04 Automatizar os testes e a reversão](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ [Acelerador de zona de pouso da AWS](https://aws.amazon.com/solutions/implementations/landing-zone-accelerator-on-aws/)
+ [AWS Config](https://aws.amazon.com/config/)
+ [O que é o AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+ [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+  [Ferramentas de desenvolvedor AWS](https://aws.amazon.com/products/developer-tools/) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
+ [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)

 **Vídeos relacionados:** 
+ [AWS re:Invent 2022: governança e conformidade proativas para workloads da AWS](https://youtu.be/PpUnH9Y52X0?si=82wff87KHXcc6nbT)
+ [AWS re:Invent 2020: Alcançar a conformidade como código usando o AWS Config](https://youtu.be/m8vTwvbzOfw?si=my4DP0FLq1zwKjho)
+ [Gerenciar e implantar configurações de aplicações com o AWS AppConfig](https://youtu.be/ztIxMY3IIu0?si=ovYGsxWOBysyQrg0)

# OPS05-BP04 Usar sistemas de gerenciamento de compilação e de implantação
<a name="ops_dev_integ_build_mgmt_sys"></a>

 Use sistemas de gerenciamento de compilação e implantação. Esses sistemas reduzem os erros causados pelos processos manuais e o nível de esforço para implantar as alterações. 

 Na AWS, é possível criar pipelines de integração contínua/implantação contínua (CI/CD) usando serviços como as [Ferramentas de desenvolvedor da AWS](https://aws.amazon.com/products/developer-tools/) (por exemplo, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/) e [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)). 

 **Resultado desejado:** seus sistemas de gerenciamento de compilação e implantação oferecem suporte ao sistema de integração contínua (CI/CD) de sua organização, que fornece recursos para automatizar implementações seguras com as configurações corretas. 

 **Práticas comuns que devem ser evitadas:** 
+  Depois de compilar o código no sistema de desenvolvimento e copiar o executável nos sistemas de produção, há uma falha na inicialização. Os arquivos de log locais indicam que a falha ocorreu devido à ausência de dependências. 
+  Você cria a aplicação com êxito com os novos recursos em seu ambiente de desenvolvimento e fornece o código à garantia de qualidade (QA). Ele falha no QA porque não há ativos estáticos. 
+  Na sexta-feira, após muito esforço, você consegue criar a aplicação manualmente em seu ambiente de desenvolvimento, incluindo os recursos recém-codificados. Na segunda-feira, você não consegue repetir as etapas que permitiram criar a aplicação com êxito. 
+  Você executa os testes que criou para a nova versão. Então você passa a próxima semana configurando um ambiente de teste e executando todos os testes de integração existentes, seguidos pelos testes de performance. O novo código tem um impacto inaceitável na performance e deve ser desenvolvido e testado novamente. 

 **Benefícios de implementar esta prática recomendada:** ao fornecer mecanismos para gerenciar atividades de criação e implantação, você reduz o nível de esforço para executar tarefas repetitivas, libera os membros da equipe para se concentrarem em tarefas criativas de alto valor e limita o surgimento de erros provenientes de procedimentos manuais. 

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

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

 Os sistemas de gerenciamento de compilação e implantação são usados para rastrear e implementar mudanças, reduzir erros causados por processos manuais e reduzir o nível de esforço necessário para implantações seguras. Automatize totalmente o pipeline de integração e implantação desde o check-in do código até a compilação, o teste, a implantação e a validação. Isso reduz o tempo de espera, diminui os custos, incentiva o aumento da frequência de mudanças, reduz o nível de esforço e aumenta a colaboração. 

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

![\[Diagrama que mostra um pipeline de CI/CD usando o AWS CodePipeline e serviços relacionados\]](http://docs.aws.amazon.com/pt_br/wellarchitected/latest/framework/images/deployment-pipeline-tooling.png)


 

1.  Use um sistema de controle de versão para armazenar e gerenciar ativos (como documentos, código-fonte e arquivos binários). 

1.  Use o CodeBuild para compilar código-fonte, executar testes de unidade e produzir artefatos prontos para implantação. 

1.  Use o CodeDeploy como um serviço de implantação que automatiza implantações de aplicações em instâncias do [Amazon EC2](https://aws.amazon.com/ec2/), instâncias on-premises, [funções AWS Lambda com tecnologia sem servidor](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ou [Amazon ECS](https://aws.amazon.com/ecs/). 

1.  Monitore suas implantações. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS06-BP04 Automatizar os testes e a reversão](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+  [Ferramentas de desenvolvedor AWS](https://aws.amazon.com/products/developer-tools/) 
+  [O que é AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+  [O que é AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+ [AWS re:Invent 2022: Práticas recomendadas do AWS Well-Architected para DevOps na AWS](https://youtu.be/hfXokRAyorA)

# OPS05-BP05 Executar o gerenciamento de patches
<a name="ops_dev_integ_patch_mgmt"></a>

 Execute o gerenciamento de patches para obter recursos, solucionar problemas e manter a conformidade com a governança. Automatize o gerenciamento de patches para reduzir erros causados por processos manuais, escalar e facilitar a realização de patches. 

 O gerenciamento de patches e vulnerabilidades faz parte de suas atividades de gerenciamento de benefícios e riscos. É preferível ter infraestruturas imutáveis e implantar workloads em bons estados verificados e conhecidos. Quando isso não é viável, a aplicação de patches é a opção restante. 

 O [AWS Health](https://aws.amazon.com/premiumsupport/technology/aws-health/) é a fonte confiável de informações sobre eventos planejados do ciclo de vida e outros eventos que requerem ações e afetam a integridade de dos recursos da Nuvem AWS. Você deve estar ciente das próximas alterações e atualizações que devem ser realizadas. Os principais eventos planejados do ciclo de vida são enviados com pelo menos seis meses de antecedência. 

 O [Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/) fornece pipelines para atualizar imagens de máquinas. Como parte do gerenciamento de patches, considere utilizar [imagens de máquina da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html       ) (AMIs) com um [pipeline de imagens de AMI](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html) ou imagens de contêiner com um [pipeline de imagem Docker](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html). Ao mesmo tempo, o AWS Lambda fornece padrões para [runtimes personalizados e bibliotecas adicionais](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html) para remover vulnerabilidades. 

 Você deve gerenciar as atualizações das [imagens de máquina da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) para Linux ou Windows Server usando o [Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/). É possível usar o [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) com seu pipeline existente para gerenciar imagens do Amazon ECS e gerenciar imagens do Amazon EKS. O Lambda inclui [recursos de gerenciamento de versões](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html). 

 A aplicação de patches não deve ser realizada em sistemas de produção sem antes testá-los em um ambiente seguro. Os patches só deverão ser aplicados se forem compatíveis com um resultado operacional ou comercial. Na AWS, é possível usar o [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) para automatizar o processo de aplicação de patches em sistemas gerenciados e programar a atividade usando as [Janelas de manutenção do Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html). 

 **Resultado desejado:** suas imagens de AMI e contêiner receberam os patches e estão atualizadas e prontas para o lançamento. É possível rastrear o status de todas as imagens implantadas e conhecer a conformidade do patch. Você também pode emitir relatórios do status atual e ter um processo para atender às suas necessidades de conformidade. 

 **Práticas comuns que devem ser evitadas:** 
+  Você recebe uma ordem para aplicar todos os novos patches de segurança em até duas horas, resultando em várias interrupções devido à incompatibilidade da aplicação com os patches. 
+  Uma biblioteca sem patches resulta em consequências indesejadas, pois partes desconhecidas usam vulnerabilidades dentro dela para acessar a workload. 
+  Você aplica patches nos ambientes do desenvolvedor automaticamente, sem notificar os desenvolvedores. Você recebe várias reclamações dos desenvolvedores afirmando que o ambiente deles não está funcionando conforme o esperado. 
+  Você não aplicou patches no software pronto para uso comercial em uma instância persistente. Quando você tiver um problema com o software e entrar em contato com o fornecedor, ele informará que a versão não é compatível e será necessário aplicar patches a um nível específico para receber assistência. 
+  Um patch lançado recentemente para o software de criptografia que você usou tem melhorias significativas de performance. Seu sistema sem patches tem problemas de performance que permanecem enquanto a aplicação de patches não é feita. 
+  Você é notificado sobre uma vulnerabilidade de dia zero que exige uma correção de emergência e precisa fazer isso em todos os seus ambientes manualmente. 
+  Você não está ciente das ações básicas necessárias para manter seus recursos, como atualizações obrigatórias de versão, porque não analisa os próximos eventos planejados do ciclo de vida e outras informações. Você perde um tempo significativo para planejar e executar, o que resulta em alterações emergenciais para suas equipes e em possíveis impactos ou tempo de inatividade inesperado. 

 **Benefícios de implementar esta prática recomendada:** ao estabelecer um processo de gerenciamento de patches, incluindo seus critérios de aplicação de patches e metodologia para distribuição em seus ambientes, você pode escalar e gerar relatórios sobre os níveis de patch. Isso fornece garantias sobre a aplicação de patches de segurança e garante uma visibilidade clara do status das correções conhecidas em vigor. Isso permite a adoção de recursos e capacidades desejados, a remoção rápida de problemas e a conformidade contínua com a governança. Implemente sistemas de gerenciamento de patches e automação para reduzir o nível de esforço na implantação de patches e limitar erros causados por processos manuais. 

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

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

 Aplique patches nos sistemas para corrigir problemas, obter os recursos ou capacidades desejados e permanecer em conformidade com a política de governança e os requisitos de suporte do fornecedor. Em sistemas imutáveis, implante com o conjunto de patches adequado para alcançar o resultado desejado. Automatize o mecanismo de gerenciamento de patches para reduzir o tempo decorrido na aplicação de patches, reduzir erros causados por processos manuais e reduzir o nível de esforço para corrigir. 

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

 Para Amazon EC2 Image Builder: 

1.  Usando o Amazon EC2 Image Builder, especifique os detalhes do pipeline: 

   1.  Crie um pipeline de imagens e atribua um nome a ele 

   1.  Defina a programação e o fuso horário do pipeline 

   1.  Configure todas as dependências 

1.  Escolha uma fórmula: 

   1.  Selecione a fórmula existente ou crie uma nova. 

   1.  Selecione o tipo de imagem 

   1.  Nomeie e crie a versão da sua fórmula 

   1.  Selecione sua imagem base 

   1.  Adicione componentes de compilação e adicione ao registro de destino 

1.  Opcional: defina sua configuração de infraestrutura. 

1.  Opcional: defina as configurações. 

1.  Revise as configurações. 

1.  Mantenha a higiene da fórmula regularmente. 

 Para o Gerenciador de patches do Systems Manager: 

1.  Crie uma lista de referência de patches. 

1.  Selecione um método de operações de patch. 

1.  Habilite relatórios e verificações de conformidade. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS06-BP04 Automatizar os testes e a reversão](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [O que é o Amazon EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)
+ [Criar um pipeline de imagens usando o Amazon EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)
+ [Criar um pipeline de imagens de contêiner](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)
+  [Gerenciador de patches do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+ [Trabalhar com o Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-console.html)
+ [Trabalhar com relatórios de conformidade de patches](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-compliance-reports.html)
+ [Ferramentas de desenvolvedor da AWS](https://aws.amazon.com/products/developer-tools)

 **Vídeos relacionados:** 
+  [CI/CD para aplicações de tecnologia sem servidor na AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
+  [Design com Ops em mente](https://youtu.be/uh19jfW7hw4) 

   **Exemplos relacionados:** 
+ [Tutoriais do Gerenciador de patches do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-tutorials.html)

# OPS05-BP06 Compartilhar padrões de design
<a name="ops_dev_integ_share_design_stds"></a>

 Compartilhe práticas recomendadas entre equipes para aumentar a conscientização e maximizar os benefícios dos esforços de desenvolvimento. Documente-as e mantenha-as atualizadas à medida que sua arquitetura evolui. Se padrões compartilhados forem aplicados na sua organização, será fundamental que existam mecanismos para solicitar adições, alterações e exceções para os padrões. Sem essa opção, os padrões se tornam uma restrição à inovação. 

 **Resultado desejado:** os padrões de design são compartilhados entre as equipes nas organizações. Eles são documentados e mantidos atualizados de acordo com a evolução das práticas recomendadas. 

 **Práticas comuns que devem ser evitadas:** 
+ Cada uma das duas equipes de desenvolvimento criou um serviço de autenticação de usuários. Os usuários devem manter um conjunto separado de credenciais para cada parte do sistema que desejam acessar. 
+ Cada equipe gerencia sua própria infraestrutura. Um novo requisito de conformidade força uma alteração na infraestrutura e cada equipe o implementa de maneira diferente.

 **Benefícios de implementar esta prática recomendada:** usar padrões compartilhados contribui para a adoção das práticas recomendadas e maximiza os benefícios dos esforços de desenvolvimento. A documentação e atualização dos padrões de design mantém a organização atualizada com relação às práticas recomendadas e aos requisitos de segurança e conformidade. 

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

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

 Compartilhe as práticas recomendadas, os padrões de design, as listas de verificação, os procedimentos operacionais, as orientações e os requisitos de governança entre equipes. Adote procedimentos para solicitar alterações, adições e exceções para padrões de design a fim de apoiar a melhoria e a inovação. As equipes devem estar cientes do conteúdo publicado. Adote um mecanismo para manter os padrões de design atualizados à medida que surgem novas práticas recomendadas. 

 **Exemplo de cliente** 

 A AnyCompany Retail tem uma equipe de arquitetura multifuncional que cria padrões de arquitetura de software. Essa equipe cria a arquitetura com conformidade e governança integradas. As equipes que adotam esses padrões compartilhados recebem os benefícios de ter a conformidade e governança integradas. Elas podem criar rapidamente com base no padrão de design. A equipe de arquitetura se reúne trimestralmente para avaliar os padrões de arquitetura e atualizá-los, se necessário. 

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

1.  Identifique uma equipe multifuncional que seja responsável pelo desenvolvimento e pela atualização dos padrões de design. Essa equipe deverá trabalhar com as partes interessadas na organização para desenvolver os padrões de design, os procedimentos operacionais, as listas de verificações, as orientações e os requisitos de governança. Documente os padrões de design e compartilhe-os na organização. 

   1.  O [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) pode ser usado para criar portfólios representando os padrões de design usando infraestrutura como código. É possível compartilhar portfólios entre contas. 

1.  Tenha um mecanismo em vigor para manter os padrões de design atualizados à medida que novas práticas recomendadas são identificadas. 

1.  Se os padrões de design forem aplicados centralmente, tenha um processo para solicitar alterações, atualizações e isenções. 

 **Nível de esforço do plano de implementação:** Médio. O desenvolvimento de um processo para criar e compartilhar padrões de design pode exigir coordenação e cooperação com as partes interessadas na organização. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS01-BP03 Avaliar os requisitos de governança](ops_priorities_governance_reqs.md): os requisitos de governança influenciam os padrões de design. 
+  [OPS01-BP04 Avaliar os requisitos de conformidade](ops_priorities_compliance_reqs.md): a conformidade é um fator fundamental na criação dos padrões de design. 
+  [OPS07-BP02 Garantir uma revisão consistente da prontidão operacional](ops_ready_to_support_const_orr.md): as listas de verificação de prontidão operacional são um mecanismo para implementar os padrões de design ao projetar a workload. 
+  [OPS11-BP01 Adotar um processo para melhoria contínua](ops_evolve_ops_process_cont_imp.md): a atualização dos padrões de design faz parte da melhoria contínua. 
+  [OPS11-BP04 Gerenciar o conhecimento](ops_evolve_ops_knowledge_management.md): como parte da sua prática de gerenciamento de conhecimento, documente e compartilhe os padrões de design. 

 **Documentos relacionados:** 
+ [Automatizar AWS Backups com o AWS Service Catalog](https://aws.amazon.com/blogs/mt/automate-aws-backups-with-aws-service-catalog/)
+ [Conta do AWS Service Catalog aprimorada de fábrica](https://aws.amazon.com/blogs/mt/aws-service-catalog-account-factory-enhanced/)
+ [Como o Expedia Group criou uma oferta de banco de dados como serviço (DBaaS) usando o AWS Service Catalog](https://aws.amazon.com/blogs/mt/how-expedia-group-built-database-as-a-service-dbaas-offering-using-aws-service-catalog/)
+ [Manter a visibilidade sobre o uso dos padrões de arquitetura de nuvem](https://aws.amazon.com/blogs/architecture/maintain-visibility-over-the-use-of-cloud-architecture-patterns/)
+ [Simplifique o compartilhamento de seus portfólios do AWS Service Catalog em uma configuração do AWS Organizations](https://aws.amazon.com/blogs/mt/simplify-sharing-your-aws-service-catalog-portfolios-in-an-aws-organizations-setup/)

 **Vídeos relacionados:** 
+ [Conceitos básicos do AWS Service Catalog](https://www.youtube.com/watch?v=A9kKy6WhqVA)
+ [AWS re:Invent 2020: gerenciar seus portfólios do AWS Service Catalog como um especialista](https://www.youtube.com/watch?v=lVfXkWHAtR8)

 **Exemplos relacionados:** 
+ [Arquitetura de referência do AWS Service Catalog](https://github.com/aws-samples/aws-service-catalog-reference-architectures)
+ [Workshop do AWS Service Catalog](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US)

 **Serviços relacionados:** 
+  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 

# OPS05-BP07 Implementar práticas para aprimorar a qualidade do código
<a name="ops_dev_integ_code_quality"></a>

 Implemente práticas para aprimorar a qualidade do código e minimizar os defeitos. Alguns exemplos incluem desenvolvimento orientado por testes, análises de código, adoção de padrões e programação de pares. Incorpore essas práticas em seu processo de entrega e integração contínua. 

 **Resultado desejado:** sua organização usa práticas recomendadas como análises de código ou programação de pares para melhorar a qualidade do código. Os desenvolvedores e os operadores adotam práticas recomendadas de qualidade do código como parte do ciclo de vida de desenvolvimento de software. 

 **Práticas comuns que devem ser evitadas:** 
+  Você confirma o código para a ramificação principal da aplicação sem uma análise de código. A alteração é implantada automaticamente na produção e causa uma interrupção. 
+  Uma nova aplicação é desenvolvida sem nenhum teste de integração, completo ou de unidade. Não há como testar a aplicação antes da implantação. 
+  Sua equipe faz alterações manuais na produção para solucionar os defeitos. As alterações não passam por testes nem análises de código e não são capturadas nem registradas por processos contínuos de entrega e integração. 

 **Benefícios de implementar esta prática recomendada:** ao adotar práticas para melhorar a qualidade do código, é possível reduzir os problemas introduzidos na produção. As práticas recomendadas de qualidade do código incluem programação de pares, análises de código e implementação de ferramentas de produtividade de IA. 

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

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

 Implemente práticas para melhorar a qualidade do código visando a minimizar os defeitos antes que eles sejam implantados. Use práticas como desenvolvimento orientado por testes, análises de código e programação de pares para aumentar a qualidade do desenvolvimento. 

 Use o poder da IA generativa com o Amazon Q Developer para melhorar a produtividade do desenvolvedor e a qualidade do código. O Amazon Q Developer inclui a geração de sugestões de código (com base em grandes modelos de linguagem), produção de testes unitários (incluindo condições de limite) e aprimoramentos de segurança de código por meio da detecção e correção de vulnerabilidades de segurança. 

 **Exemplo de cliente** 

 A AnyCompany Retail adota várias práticas para melhorar a qualidade do código. O desenvolvimento orientado por testes foi adotado com o padrão para escrever aplicações. Para alguns recursos novos, os desenvolvedores farão a programação de pares em conjunto durante um sprint. Cada pull request passa por uma análise de código feita por um desenvolvedor sênior antes de ser integrada e implantada. 

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

1.  Adote práticas de qualidade de código como desenvolvimento orientado por testes, análises de código e programação de pares em seu processo de entrega e integração contínua. Use essas técnicas para melhorar a qualidade do software. 

   1.  Use o [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html), uma ferramenta de IA generativa que pode ajudar a criar casos de teste unitários (incluindo condições de limite), gerar funções usando código e comentários, implementar algoritmos conhecidos, detectar violações de políticas de segurança e vulnerabilidades em seu código, detectar segredos, examinar infraestrutura como código (IaC) e código de documentos e aprender bibliotecas de código de terceiros mais rapidamente. 

   1.  O [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) pode fornecer recomendações de programação para código Java e Python usando machine learning. 

 **Nível de esforço do plano de implementação:** Médio. Há muitas maneiras de implementar essa prática recomendada, mas pode ser difícil garantir a adesão organizacional. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS05-BP02 Testar e validar alterações](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_test_val_chg.html) 
+  [OPS05-BP06 Compartilhar padrões de design](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 

 **Documentos relacionados:** 
+  [Adote uma abordagem de desenvolvimento orientado por testes](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [Acelerar seu ciclo de vida de desenvolvimento de software com o Amazon Q](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [O Amazon Q Developer, agora disponível ao público em geral, inclui visualizações de novos recursos para reimaginar a experiência do desenvolvedor](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [A folha de dicas definitiva para usar o Amazon Q Developer em seu IDE](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [workload Shift-Left: aproveitando a IA para a criação de testes](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q Developer Center](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [Dez maneiras de criar aplicações mais rapidamente com o Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [Olhar além da cobertura de código com o Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [Práticas recomendadas para engenharia rápida com o Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [Guia do software Agile](https://martinfowler.com/agile.html) 
+  [Meu pipeline de CI/CD é meu capitão de lançamentos](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [Automatizar as revisões de código com o Amazon CodeGuru Reviewer](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/) 
+  [Adote uma abordagem de desenvolvimento orientado por testes](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [Como o DevFactory cria melhores aplicações com o Amazon CodeGuru](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/) 
+  [Sobre a programação de pares](https://martinfowler.com/articles/on-pair-programming.html) 
+  [RENGA Inc. automatiza as revisões de código com o Amazon CodeGuru)](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/) 
+  [A arte do desenvolvimento ágil: desenvolvimento orientado por testes](http://www.jamesshore.com/v2/books/aoad1/test_driven_development) 
+  [Por que as revisões de código são importantes (e economizam tempo\$1)](https://www.atlassian.com/agile/software-development/code-reviews) 

 **Vídeos relacionados:** 
+  [Implementar uma API com o Amazon Q Developer Agent para desenvolvimento de software](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [Instalar, configurar e usar o Amazon Q Developer com os IDEs da JetBrains (instruções)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [Dominar a arte do Amazon CodeWhisperer: playlist do YouTube](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [AWS re:Invent 2020: Melhoria contínua da qualidade do código com o Amazon CodeGuru](https://www.youtube.com/watch?v=iX1i35H1OVw) 
+  [AWS Summit ANZ 2021: Conduzir uma estratégia de primeiro teste com o CDK e desenvolvimento orientado a testes](https://www.youtube.com/watch?v=1R7G_wcyd3s) 

 **Serviços relacionados:** 
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 

# OPS05-BP08 Usar vários ambientes
<a name="ops_dev_integ_multi_env"></a>

 Use vários ambientes para experimentar, desenvolver e testar a workload. Use níveis crescentes de controles à medida que os ambientes se aproximam da produção para adquirir confiança de que sua workload operará conforme pretendido quando implantada. 

 **Resultado desejado:** você tem vários ambientes que refletem suas necessidades de conformidade e governança. Você testa e promove o código por meio de ambientes em seu caminho para a produção. 

1.  Sua organização faz isso por meio do estabelecimento de uma zona de pouso, que fornece governança, controles, automações de contas, rede, segurança e observabilidade operacional. Gerencie esses recursos da zona de pouso usando vários ambientes. Um exemplo comum é uma organização de sandbox para desenvolver e testar mudanças em uma zona de pouso baseada no [AWS Control Tower](https://aws.amazon.com/controltower/), que inclui [Centro de Identidade do AWS IAM](https://aws.amazon.com/iam/identity-center/) e políticas como [políticas de controle de serviços (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html). Todos esses elementos podem impactar significativamente o acesso e a operação das Contas da AWS dentro da zona de pouso. 

1.  Além desses serviços, as equipes ampliam as capacidades das zonas de pouso com soluções publicadas pela AWS ou por parceiros da AWS, ou na forma de soluções personalizadas desenvolvidas na sua organização. Exemplos de soluções publicadas pela AWS incluem [Personalizações para AWS Control Tower (CfCT)](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) e [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html). 

1.  Sua organização aplica os mesmos princípios de teste, promoção de código e mudanças de políticas para a zona de pouso por meio de ambientes no caminho para a produção. Essa estratégia fornece um ambiente de zona de pouso estável e seguro para as equipes de aplicações e workloads. 

 **Práticas comuns que devem ser evitadas:** 
+  Você está trabalhando em um desenvolvimento em um ambiente de desenvolvimento compartilhado e outro desenvolvedor substitui suas alterações de código. 
+  Os controles de segurança restritivos em seu ambiente de desenvolvimento compartilhado estão impedindo que você experimente novos serviços e recursos. 
+  Você realiza testes de carga em seus sistemas de produção e causa uma interrupção para seus usuários. 
+  Ocorreu um erro crítico na produção que resulta na perda de dados. No ambiente de produção, você tenta recriar as condições que levaram à perda de dados para identificar como isso aconteceu e impedir a recorrência. Para evitar mais perda de dados durante o teste, você é forçado a tornar indisponível a aplicação para seus usuários. 
+  Você está operando um serviço multilocatário e não consegue oferecer suporte a uma solicitação do cliente para um ambiente dedicado. 
+  Nem sempre você testa, mas, quando o faz, o teste acontece em seu ambiente de produção. 
+  Você acredita que a simplicidade de um único ambiente substitui o escopo do impacto das alterações dentro do ambiente. 
+  Você atualiza um recurso importante da zona de pouso, mas a mudança prejudica a capacidade da equipe de vender contas para novos projetos ou para workloads existentes. 
+  Você aplica novos controles às Contas da AWS, mas a mudança afeta a capacidade da sua equipe de workload de implantar mudanças dentro das Contas da AWS dela. 

 **Benefícios de implementar essa prática recomendada:** ao implantar vários ambientes, é possível oferecer suporte a vários ambientes simultâneos de desenvolvimento, teste e produção sem criar conflitos entre desenvolvedores ou comunidades de usuários. Para recursos complexos, como zonas de pouso, isso reduz significativamente o risco de mudanças, simplifica o processo de melhoria e reduz o risco de atualizações críticas no ambiente. Organizações que usam zonas de pouso naturalmente se beneficiam de várias contas no ambiente da AWS delas, com configurações de estrutura de contas, governança, rede e segurança. Com o tempo, à medida que a organização cresce, a zona de pouso pode evoluir para proteger e organizar as workloads e recursos. 

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

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

 Use vários ambientes e forneça aos desenvolvedores ambientes de sandbox com controles minimizados para permitir a experimentação. Forneça ambientes de desenvolvimento individuais para ajudar o trabalho em paralelo, aumentando a agilidade do desenvolvimento. Implemente controles mais rigorosos nos ambientes ao se aproximar da produção para permitir que os desenvolvedores inovem. Use a infraestrutura como sistemas de gerenciamento de código e configuração para implantar ambientes que são configurados de maneira consistente com os controles presentes na produção para garantir que os sistemas operem conforme o esperado quando implantados. Quando os ambientes não estiverem em uso, desligue-os para evitar custos associados a recursos inativos (por exemplo, sistemas de desenvolvimento à noite e fins de semana). Implante ambientes equivalentes de produção ao carregar o teste para melhorar resultados válidos. 

 Equipes como engenharia de plataforma, redes e operações de segurança geralmente gerenciam recursos no nível da organização com requisitos distintos. A separação de contas por si só é insuficiente para fornecer e manter ambientes separados para experimentação, desenvolvimento e teste. Nesses casos, crie instâncias separadas do AWS Organizations. 

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

 **Documentos relacionados:** 
+ [Agendador de instâncias na AWS](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/)
+  [O que é AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+ [Organizing Your AWS Environment Using Multiple Accounts - Multiple organizations - Test changes to your overall AWS environment](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/multiple-organizations.html#test-changes-to-your-overall-aws-environment)
+ [Guia do AWS Control Tower](https://catalog.workshops.aws/control-tower)

# OPS05-BP09 Fazer alterações frequentes, pequenas e reversíveis
<a name="ops_dev_integ_freq_sm_rev_chg"></a>

 Alterações frequentes, pequenas e reversíveis reduzem o escopo e o impacto de uma alteração. Quando usadas em conjunto com sistemas de gerenciamento de alterações, sistemas de gerenciamento de configuração e sistemas de compilação e entrega, alterações frequentes, pequenas e reversíveis reduzem o escopo e o impacto de uma mudança. Isso resulta em solução de problemas mais eficaz e correção mais rápida, com a opção de reverter alterações. 

 **Práticas comuns que devem ser evitadas:** 
+  Você implanta uma nova versão de sua aplicação trimestralmente com uma janela de alteração que significa que um serviço principal está desativado. 
+  Você frequentemente faz alterações no esquema do banco de dados sem rastrear as alterações nos sistemas de gerenciamento. 
+  Você realiza atualizações manuais no local, substituindo as instalações e configurações existentes e não tem um plano claro de reversão. 

 **Benefícios de implantar esta prática recomendada:** os esforços de desenvolvimento são mais rápidos com a implantação frequente de pequenas alterações. Quando as alterações são pequenas, é muito mais fácil identificar se elas têm consequências indesejadas e são mais fáceis de serem revertidas. Quando as alterações são reversíveis, há menos risco de implementar a alteração à medida que a recuperação é simplificada. O processo de mudança tem um risco reduzido e o impacto de uma alteração malsucedida é reduzido. 

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

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

 Use alterações frequentes, pequenas e reversíveis para reduzir o escopo e o impacto de uma mudança. Isso facilita a solução de problemas, ajuda a fazer uma correção mais rápida e oferece a opção de reverter uma alteração. Além disso, aumenta a taxa na qual você pode agregar valor aos negócios. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS05-BP03 Usar sistemas de gerenciamento de configuração](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Usar sistemas de gerenciamento de compilação e de implantação](ops_dev_integ_build_mgmt_sys.md) 
+  [OPS06-BP04 Automatizar os testes e a reversão](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [Implementar microsserviços na AWS](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html)
+ [Microservices: observabilidade](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/observability.html)

# OPS05-BP10 Automatizar totalmente a integração e a implantação
<a name="ops_dev_integ_auto_integ_deploy"></a>

 Automatize a construção, a implantação e o teste da workload. Isso reduz os erros causados pelos processos manuais e reduz o esforço para implantar alterações. 

 Aplique metadados usando [tags de recursos](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) e [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.html) seguindo uma estratégia consistente de [marcação com tags](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) para identificar seus recursos. Marque com tags seus recursos de organização, contabilidade de custos, controles de acesso pensando na execução de atividades operacionais automatizadas. 

 **Resultado desejado:** os desenvolvedores usam ferramentas para entregar códigos e levá-los até a produção. Os desenvolvedores não precisam fazer login no Console de gerenciamento da AWS para fazer atualizações. Há uma trilha de auditoria completa de alterações e configurações, o que atende às necessidades de governança e conformidade. Os processos são repetíveis e padronizados entre as equipes. Os desenvolvedores podem se concentrar no desenvolvimento e na introdução de código, aumentando a produtividade. 

 **Práticas comuns que devem ser evitadas:** 
+  Na sexta-feira, você conclui a criação do novo código para a ramificação do recurso. Na segunda-feira, depois de executar os scripts de teste de qualidade de código e cada um dos scripts de teste de unidade, você registra seu código para a próxima versão agendada. 
+  Você tem a tarefa de codificar uma correção para um problema crítico que afeta um grande número de clientes em produção. Depois de testar a correção, você confirma o gerenciamento de alterações de e-mail e código para solicitar aprovação para implantá-lo na produção. 
+  Como desenvolvedor, você faz login no Console de gerenciamento da AWS para criar um novo ambiente de desenvolvimento usando métodos e sistemas que não são padrão. 

 **Benefícios de implementar esta prática recomendada:**: ao implementar sistemas automatizados de gerenciamento de criação e implantação, você reduz os erros causados por processos manuais e o esforço para implantar alterações, ajudando os membros da equipe a se concentrarem na entrega de valor para a empresa. Você aumenta a velocidade de entrega à medida que avança até a produção. 

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

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

 Você usa sistemas de gerenciamento de criação e implantação para rastrear e implementar alterações, reduzir erros causados por processos manuais e reduzir o nível de esforço. Automatize totalmente o pipeline de integração e implantação desde o check-in do código até a compilação, o teste, a implantação e a validação. Isso reduz o tempo de espera, aumenta a frequência de alterações, reduz o nível de esforço, aumenta a velocidade de entrada no mercado, resulta em maior produtividade e aumenta a segurança do seu código à medida que você o leva até a produção. 

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

 **Práticas recomendadas relacionadas:** 
+  [OPS05-BP03 Usar sistemas de gerenciamento de configuração](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Usar sistemas de gerenciamento de compilação e de implantação](ops_dev_integ_build_mgmt_sys.md) 

 **Documentos relacionados:** 
+  [O que é AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [O que é AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+ [AWS re:Invent 2022: Práticas recomendadas do AWS Well-Architected para DevOps na AWS](https://youtu.be/hfXokRAyorA)