

# OPS 5  Como você reduz defeitos, facilita a correção e melhora o fluxo na produção?
<a name="ops-05"></a>

 Adote abordagens que melhoram o fluxo de alterações na produção, que permitem 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 permite a rápida identificação e correção dos problemas introduzidos pelas atividades de implantação. 

**Topics**
+ [OPS05-BP01 Usar o controle de versão](ops_dev_integ_version_control.md)
+ [OPS05-BP02 Testar e valide as 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 os 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 o controle de versão
<a name="ops_dev_integ_version_control"></a>

 Use o controle de versão para habilitar 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 controle de origem como o [AWS CodeCommit](https://aws.amazon.com/codecommit/) para gerenciar código e outros artefatos, como modelos do [AWS CloudFormation](https://aws.amazon.com/cloudformation/) com controle de versão da sua infraestrutura. 

 **Antipadrões comuns:** 
+  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 em que seu código foi perdido. 
+  Depois de substituir o código existente pelas alterações, você reinicia o aplicativo e ele deixa de ser operável. Não é possível reverter para 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 sua lista de compras no relatório final. Não é possível reverter a alteração e você terá que recriar o relatório. 

 **Benefícios do estabelecimento desta prática recomendada:** Ao usar recursos de controle de versão, você pode reverter facilmente para bons estados conhecidos, versões anteriores e limitar o risco de perda de ativos. 

 **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>
+  Usar o controle de versão: mantenha os ativos em repositórios controlados por versão. Fazer isso oferece suporte para o rastreamento de alterações, a implantação de novas versões, a detecção de alterações nas versões existentes e a reversão para versões anteriores (por exemplo, a reversão para um estado bom e conhecido no caso de uma falha). Integre os recursos de controle de versão dos sistemas de gerenciamento de configurações aos seus procedimentos. 
  +  [Introduction to AWS CodeCommit (Introdução ao AWS CodeCommit)](https://youtu.be/46PRLMW8otg) 
  +  [O que é o AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

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

 **Documentos relacionados:** 
+  [O que é o AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+  [Introduction to AWS CodeCommit (Introdução ao AWS CodeCommit)](https://youtu.be/46PRLMW8otg) 

# OPS05-BP02 Testar e valide as 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:** 
+  Todas as alterações do software são testadas antes de serem entregues. 
+  Os desenvolvedores têm acesso aos resultados dos testes. 
+  Sua organização tem um padrão de testes que se aplica a todas as alterações do software. 

 **Antipadrões comuns:** 
+ 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 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 do estabelecimento desta prática recomendada:** 
+  A taxa de falha de alteração de 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 escalabilidade automática, são testadas com antecedência para atender às necessidades de tráfego. 

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

## Orientações para a 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. 

 **Exemplo de clientes** 

 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 da implementação** 

1.  Trabalhe com stakeholders 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 de pipeline de implantação da AWS](https://pipelines.devops.aws.dev/) contém uma lista oficial de tipos de teste que podem ser realizados 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.  O [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) pode testar seu código de aplicação quanto a defeitos. 

   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 o controle de versão](ops_dev_integ_version_control.md): deve ser feito backup de todos os artefatos de software em um repositório com controle de versão. 
+  [OPS05-BP06 Compartilhar os padrões de design](ops_dev_integ_share_design_stds.md): os padrões de teste de software de sua organização informam seus padrões de design. 
+  [OPS05-BP10 Automatizar totalmente a integração e a implantação](ops_dev_integ_auto_integ_deploy.md): os testes de software devem ser executados automaticamente como parte de seu pipeline maior de implantação e integração. 

 **Documentos relacionados:** 
+ [ Adopt a test-driven development approach](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) (Adotar uma abordagem de desenvolvimento orientada a testes)
+ [ Automated CloudFormation Testing Pipeline with TaskCat and CodePipeline ](https://aws.amazon.com/blogs/devops/automated-cloudformation-testing-pipeline-with-taskcat-and-codepipeline/) (Pipeline automatizado de testes do CloudFormation com TaskCat e CodePipeline)
+ [ Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) (Criar um pipeline de CI/CD completo do AWS DevSecOps e ferramentas DAST)
+ [ Getting started with testing serverless applications ](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/) (Conceitos básicos de testes de aplicações com tecnologia sem servidor)
+ [ My CI/CD pipeline is my release captain ](https://aws.amazon.com/builders-library/cicd-pipeline/) (Meu pipeline de CI/CD é meu capitão de lançamentos)
+ [ Whitepaper Practicing Continuous Integration and Continuous Delivery on AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) (Praticar a integração e entrega contínuas na AWS)

 **Vídeos relacionados:** 
+ [AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS](https://www.youtube.com/watch?v=KJC380Juo2w) (AWS re:Invent 2020: Infraestrutura testável: teste de integração no AWS 
+ [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development ](https://www.youtube.com/watch?v=1R7G_wcyd3s) (AWS Summit ANZ 2021: Conduzir uma estratégia de primeiro teste com o CDK e desenvolvimento orientado a testes)
+ [ Testing Your Infrastructure as Code with AWS CDK ](https://www.youtube.com/watch?v=fWtuwGSoSOU) (Testar sua infraestrutura como código com o AWS CDK)

 **Recursos relacionados:** 
+ [AWS Deployment Pipeline Reference Architecture - Application ](https://pipelines.devops.aws.dev/application-pipeline/index.html) (Arquitetura de referência de pipeline de implantação da AWS: aplicação)
+ [AWS Kubernetes DevSecOps Pipeline ](https://github.com/aws-samples/devsecops-cicd-containers) (Pipeline do AWS Kubernetes DevSecOps)
+ [ Workshop sobre política como código: desenvolvimento orientado a testes ](https://catalog.us-east-1.prod.workshops.aws/workshops/9da471a0-266a-4d36-8596-e5934aeedd1f/en-US/pac-tools/cfn-guard/tdd)
+ [ Run unit tests for a Node.js application from GitHub by using 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) (Executar testes de unidade para uma aplicação Node.js do GitHub usando o AWS CodeBuild)
+ [ Use Serverspec for test-driven development of infrastructure code ](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-serverspec-for-test-driven-development-of-infrastructure-code.html) (Usar o Serverspec para desenvolvimento orientado a testes do código de infraestrutura)

 **Serviços relacionados:** 
+  [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. Alguns exemplos incluem a definição da configuração do servidor web ou de aplicação em uma instância, ou a definição da configuração de um serviço da AWS no [Console de gerenciamento da AWS](https://docs.aws.amazon.com/awsconsolehelpdocs/index.html) ou por meio da [AWS CLI](https://aws.amazon.com/cli/). 

 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 a alternância de um recurso para ativar uma funcionalidade no código por meio de uma alteração na configuração, ou alterar o nível de detalhes do log durante um incidente para capturar mais dados e alterar de volta depois do incidente, eliminando os logs agora desnecessários e a despesa associada. 

 Se tiver configurações dinâmicas em suas aplicações executadas em instâncias, contêineres, funções de tecnologia sem servidor ou dispositivos, você poderá usar o [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) para gerenciar e implantá-las entre seus ambientes. 

 No AWS, você pode usar o [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) para monitorar continuamente as configurações de seus recursos da AWS [entre contas e regiões](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html). Isso permite 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 [os pacotes de conformidade do AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html). 

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

 Tenha um calendário de alterações e monitore quando atividades ou eventos comerciais ou operacionais significativos que estão planejados podem ser afetados pela implementação da alteração. Ajuste as atividades para gerenciar riscos relacionados a esses planos. [Calendário de alterações do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html) fornece um mecanismo para documentar blocos de tempo como abertos ou fechados para alterações e o motivo desses eventos, bem como para [compartilhar essas informações](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-calendar-share.html) com outras Contas da AWS. Os scripts do AWS Systems Manager Automation podem ser configurados para aderir ao estado de calendário de alteração. 

 [AWS Systems Manager Maintenance Windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html) pode ser usado para programar a execução de scripts de Run Command ou de Automação do AWS SSM, invocações do AWS Lambda ou atividades do AWS Step Functions em horários especificados. Marque essas atividades no calendário de alterações para que elas possam ser incluídas na avaliação. 

 **Antipadrões comuns:** 
+  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 aplicativos 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. 

 **Benefícios do estabelecimento desta 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. 

 **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>
+  Usar sistemas de gerenciamento de configuração: use sistemas de gerenciamento de configuração para rastrear e implementar alterações, reduzir erros causados por processos manuais e diminuir o nível de esforço. 
  +  [Gerenciamento de configuração de infraestrutura](https://aws.amazon.com/answers/configuration-management/aws-infrastructure-configuration-management/) 
  +  [AWS Config](https://aws.amazon.com/config/) 
  +  [O que é o AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) 
  +  [Introduction to AWS CloudFormation (Introdução ao AWS CloudFormation)](https://youtu.be/Omppm_YUG2g) 
  +  [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  [AWS OpsWorks](https://aws.amazon.com/opsworks/) 
  +  [O que é o AWS OpsWorks?](https://docs.aws.amazon.com/opsworks/latest/userguide/welcome.html) 
  +  [Introduction to AWS Elastic Beanstalk (Introdução ao AWS Elastic Beanstalk)](https://youtu.be/SrwxAScdyT0) 
  +  [O que é o AWS Elastic Beanstalk?](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) 

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

 **Documentos relacionados:** 
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+  [Ferramentas do desenvolvedor da AWS](https://aws.amazon.com/products/developer-tools/) 
+  [AWS OpsWorks](https://aws.amazon.com/opsworks/) 
+  [Calendário de alterações do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html) 
+  [AWS Systems Manager Maintenance Windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html) 
+  [Gerenciamento de configuração de infraestrutura](https://aws.amazon.com/answers/configuration-management/aws-infrastructure-configuration-management/) 
+  [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [O que é o AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) 
+  [O que é o AWS Elastic Beanstalk?](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) 
+  [O que é o AWS OpsWorks?](https://docs.aws.amazon.com/opsworks/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+  [Introduction to AWS CloudFormation (Introdução ao AWS CloudFormation)](https://youtu.be/Omppm_YUG2g) 
+  [Introduction to AWS Elastic Beanstalk (Introdução ao AWS Elastic Beanstalk)](https://youtu.be/SrwxAScdyT0) 

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

 Usar 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: [Ferramentas do desenvolvedor da AWS](https://aws.amazon.com/products/developer-tools/) (por exemplo, AWS CodeCommit, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/), [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)e aos [AWS CodeStar](https://aws.amazon.com/codestar/)). 

 **Antipadrões comuns:** 
+  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 registro locais indicam que ele falhou devido à ausência de dependências. 
+  Você cria sua aplicação com êxito com os novos recursos em seu ambiente de desenvolvimento e fornece o código à garantia de qualidade (QA). Ele falha na QA porque não há ativos estáticos. 
+  Na sexta-feira, após muito esforço, você consegue criar o aplicativo 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 do estabelecimento desta 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 exposição a riscos quando esta prática recomendada não é estabelecida:** Médio 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Usar sistemas de gerenciamento de compilação e de implantação: use sistemas de gerenciamento de compilação e de 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, teste, implantação e validação. Isso reduz o tempo de execução, permite maior frequência de mudança e reduz o nível de esforço. 
  +  [O que é o AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
  +  [As melhores práticas de integração contínua para equipes de desenvolvimento de software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
  +  [Slalom: CI/CD para aplicações de tecnologia sem servidor na AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
  +  [Introduction to AWS CodeDeploy: automated software deployment with Amazon Web Services (Introdução ao AWS CodeDeploy: implantação de software automatizada com a Amazon Web Services)](https://www.youtube.com/watch?v=Wx-ain8UryM) 
  +  [O que é o AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

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

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

 **Vídeos relacionados:** 
+  [As melhores práticas de integração contínua para equipes de desenvolvimento de software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
+  [Introduction to AWS CodeDeploy: automated software deployment with Amazon Web Services (Introdução ao AWS CodeDeploy: implantação de software automatizada com a Amazon Web Services)](https://www.youtube.com/watch?v=Wx-ain8UryM) 
+  [Slalom: CI/CD para aplicações de tecnologia sem servidor na AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 

# 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 e reduzir o nível de esforço para corrigir. 

 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 cargas de trabalho em bons estados verificados e conhecidos. Quando isso não é viável, a aplicação de patches é a opção restante. 

 Atualizar imagens de máquinas, imagens de contêineres ou o Lambda [tempos de execução personalizados e bibliotecas adicionais](https://docs.aws.amazon.com/lambda/latest/dg/security-configuration.html) do Lambda para remover vulnerabilidades faz parte do gerenciamento de patches. Você deve gerenciar atualizações em [Amazon Machine Images](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) (AMIs) para imagens do Linux ou Windows Server usando o [EC2 Image Builder](https://aws.amazon.com/image-builder/). Você pode usar [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) com seu pipeline existente para [gerenciar imagens do Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) e [gerenciar imagens do Amazon EKS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html). O AWS Lambda inclui recursos de gerenciamento de [versão](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 testar em um ambiente seguro. Os patches só deverão ser aplicados se forem compatíveis com um resultado operacional ou comercial. No AWS, você pode 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 o [AWS Systems Manager Maintenance Windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html). 

 **Antipadrões comuns:** 
+  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 sua carga de trabalho. 
+  Você aplica patches nos ambientes do desenvolvedor automaticamente, sem notificar os desenvolvedores. Você recebe várias reclamações dos desenvolvedores, dizendo que o ambiente deles deixa de funcionar conforme o esperado. 
+  Você não aplicou os 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 não for feita a aplicação de patches. 

 **Benefícios do estabelecimento desta prática recomendada:** Ao estabelecer um processo de gerenciamento de patches, incluindo critérios de aplicação de patches e metodologia para distribuição em seus ambientes, você poderá perceber os benefícios e controlar o impacto. Isso permitirá a adoção de recursos e capacidades desejados, a remoção 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 para implantar patches e limitar erros causados por processos manuais. 

 **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>
+  Gerenciamento de patches: aplique patches aos sistemas para corrigir problemas, obter as capacidades ou os recursos desejados e permanecer em conformidade com a política de governança e com 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 para aplicar patches, reduzir erros causados por processos manuais e reduzir o nível de esforço para corrigir. 
  +  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 

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

 **Documentos relacionados:** 
+  [Ferramentas do desenvolvedor da AWS](https://aws.amazon.com/products/developer-tools/) 
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 

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

   **Exemplos relacionados:** 
+  [Well-Architected Labs – Inventory and Patch Management (Laboratórios do Well-Architected: Gerenciamento de inventário e patches)](https://wellarchitectedlabs.com/operational-excellence/100_labs/100_inventory_patch_management/) 

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

Compartilhe as melhores práticas entre as 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 forem aplicados padrões compartilhados na sua organização, será fundamental que haja 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:** 
+  Padrões de design são compartilhados entre as equipes nas organizações. 
+  Eles são documentados e mantidos atualizados à medida que as práticas recomendadas evoluem. 

 **Antipadrões comuns:** 
+ 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 forma uma alteração na infraestrutura e cada equipe o implementa de maneira diferente.

 **Benefícios do estabelecimento desta prática recomendada:** 
+  O uso dos padrões compartilhados apoia 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 é estabelecida:** médio 

## Orientações para a 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. Tenha 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. Tenha um mecanismo para manter os padrões de design atualizados à medida que surgem novas práticas recomendadas. 

 **Exemplo de clientes** 

 A Loja UmaEmpresa 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 da implementação** 

1.  Identifique uma equipe multifuncional que seja responsável pelo desenvolvimento e pela atualização dos padrões de design. Essa equipe 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 análise 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 Ter um processo para a 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 Realizar o gerenciamento de 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:** 
+ [ Automatize 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 para o setor ](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:** 
+ [AWS Service Catalog – conceitos básicos ](https://www.youtube.com/watch?v=A9kKy6WhqVA)
+ [AWS re:Invent 2020: gerencie seus portfólios do AWS Service Catalog como 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 sobre o 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 operadores adotam práticas recomendadas de qualidade do código como parte do ciclo de vida de desenvolvimento de software. 

 **Antipadrões comuns:** 
+ 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 ou análises de código e não são capturadas nem registradas por processos contínuos de entrega e integração. 

 **Benefícios do estabelecimento desta prática recomendada:** 
+  Ao adotar práticas para melhorar a qualidade do código, é possível reduzir os problemas surgidos na produção. 
+  A qualidade do código aumenta com o uso de práticas recomendadas como programação de pares e análises de código. 

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

## Orientações para a 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. 

 **Exemplo de clientes** 

 A Loja UmaEmpresa 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. Todo pull request passa por uma análise de código feita por um desenvolvedor sênior antes de ser integrada e implantada. 

 **Etapas da implementação** 

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

   1.  É possível criar ambientes de desenvolvimento compartilhados com o serviço [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html), no qual é possível colaborar no desenvolvimento do código. 

 **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-BP06 Compartilhar os padrões de design](ops_dev_integ_share_design_stds.md) – É possível compartilhar padrões de design como parte de sua prática de qualidade de código. 

 **Documentos relacionados:** 
+ [ Agile Software Guide ](https://martinfowler.com/agile.html) (Guia do software Agile)
+ [ My CI/CD pipeline is my release captain (Meu pipeline de CI/CD é meu capitão de lançamentos)](https://aws.amazon.com/builders-library/cicd-pipeline/)
+ [ Automate code reviews with Amazon CodeGuru Reviewer ](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/)(Revisões de código automatizadas com o Amazon CodeGuru Reviewer)
+ [ Adopt a test-driven development approach](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) (Adotar uma abordagem de desenvolvimento orientada a testes)
+ [ How DevFactory builds better applications with Amazon CodeGuru ](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/) (Como o DevFactory cria melhores aplicações com o Amazon CodeGuru)
+ [ On Pair Programming ](https://martinfowler.com/articles/on-pair-programming.html) (Sobre a programação de pares)
+ [ RENGA Inc. automates code reviews with Amazon CodeGuru ](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/) (RENGA Inc. automatiza análises de código com o Amazon CodeGuru)
+ [ The Art of Agile Development: Test-Driven Development ](http://www.jamesshore.com/v2/books/aoad1/test_driven_development) (A Arte do Desenvolvimento Ágil: Desenvolvimento Orientado por Testes)
+ [ Why code reviews matter (and actually save time\$1) ](https://www.atlassian.com/agile/software-development/code-reviews) (Por que as análises de código são importantes (e economizam tempo\$1)

 **Vídeos relacionados:** 
+ [AWS re:Invent 2020: Continuous improvement of code quality with Amazon CodeGuru ](https://www.youtube.com/watch?v=iX1i35H1OVw) (AWS re:Invent 2020: melhoria contínua da qualidade do código com o Amazon CodeGuru)
+ [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development ](https://www.youtube.com/watch?v=1R7G_wcyd3s) (AWS Summit ANZ 2021: Conduzir uma estratégia de primeiro teste com o CDK e desenvolvimento orientado a testes)

 **Serviços relacionados:** 
+ [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)
+  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.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 carga de trabalho. Use níveis crescentes de controles à medida que os ambientes se aproximam da produção para adquirir confiança de que sua carga de trabalho operará conforme pretendido quando implantada. 

 **Antipadrões comuns:** 
+  Você está realizando o 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 a aplicação indisponível para os 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. 
+  Talvez você não teste sempre, mas quando o faz, já está em produção. 
+  Você acredita que a simplicidade de um único ambiente substitui o escopo do impacto das alterações dentro do ambiente. 

 **Benefícios do estabelecimento desta prática recomendada:** Ao implantar vários ambientes, você pode oferecer suporte a vários ambientes simultâneos de desenvolvimento, teste e produção, sem criar conflitos entre desenvolvedores ou comunidades de usuários. 

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

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Usar vários ambientes: forneça aos desenvolvedores ambientes de área restrita para testes com controles minimizados para permitir a experimentação. Forneça ambientes de desenvolvimento individuais para permitir 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 habilitar resultados válidos. 
  +  [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  [Como interrompo e inicio instâncias do Amazon EC2 em intervalos regulares usando o AWS Lambda?](https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/) 

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

 **Documentos relacionados:** 
+  [Como interrompo e inicio instâncias do Amazon EC2 em intervalos regulares usando o AWS Lambda?](https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/) 
+  [O que é o AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 

# 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. Isso facilita a solução de problemas, permite uma correção mais rápida e oferece a opção de reverter uma alteração. 

 **Antipadrões comuns:** 
+  Você implanta uma nova versão do seu aplicativo trimestralmente. 
+  Você faz alterações no esquema de banco de dados com frequência. 
+  Você realiza atualizações manuais no local, substituindo instalações e configurações existentes. 

 **Benefícios do estabelecimento desta prática recomendada:** Você reconhece os benefícios dos esforços de desenvolvimento mais rapidamente implantando pequenas alterações com frequência. Quando as alterações são pequenas, é muito mais fácil identificar se elas têm consequências indesejadas. Quando as alterações são reversíveis, há menos risco de implementar a alteração à medida que a recuperação é simplificada. 

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

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Fazer alterações frequentes, pequenas e reversíveis: alterações frequentes, pequenas e reversíveis reduzem o escopo e o impacto de uma alteração. Isso facilita a solução de problemas, permite uma correção mais rápida e oferece a opção de reverter uma alteração. Também aumenta a taxa na qual você pode agregar valor aos negócios. 

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

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

 Aplique metadados usando o [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 [de marcação consistente](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) para permitir a identificação dos seus recursos. Identifique seus recursos para organização, contabilidade de custos, controles de acesso e direcione a execução de atividades operacionais automatizadas. 

 **Antipadrões comuns:** 
+  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 em cada um dos scripts de testes unitários, você verificará o código para o próximo lançamento programado. 
+  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 do código para solicitar aprovação para implantação na produção. 

 **Benefícios do estabelecimento desta 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, permitindo que os membros da equipe se concentrem na entrega de valor empresarial. 

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

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Usar sistemas de gerenciamento de compilação e de implantação: use sistemas de gerenciamento de compilação e de 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, teste, implantação e validação. Isso reduz o tempo de execução, permite maior frequência de mudança e reduz o nível de esforço. 
  +  [O que é o AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
  +  [As melhores práticas de integração contínua para equipes de desenvolvimento de software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
  +  [Slalom: CI/CD para aplicações de tecnologia sem servidor na AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
  +  [Introduction to AWS CodeDeploy: automated software deployment with Amazon Web Services (Introdução ao AWS CodeDeploy: implantação de software automatizada com a Amazon Web Services)](https://www.youtube.com/watch?v=Wx-ain8UryM) 
  +  [O que é o AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

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

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

 **Vídeos relacionados:** 
+  [As melhores práticas de integração contínua para equipes de desenvolvimento de software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
+  [Introduction to AWS CodeDeploy: automated software deployment with Amazon Web Services (Introdução ao AWS CodeDeploy: implantação de software automatizada com a Amazon Web Services)](https://www.youtube.com/watch?v=Wx-ain8UryM) 
+  [Slalom: CI/CD para aplicações de tecnologia sem servidor na AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 