SEC11-BP06 Implantar software programaticamente - Framework Well-Architected da AWS

SEC11-BP06 Implantar software programaticamente

Faça implantações de software de forma programática quando possível. Essa abordagem diminui a probabilidade de falha em uma implantação ou da introdução de um problema inesperado devido a erro humano.

Resultado desejado: a versão da workload que você testa é a versão que você implanta, e a implantação é sempre executada de forma consistente. Você externaliza a configuração da sua workload, o que ajuda você a implantar em diferentes ambientes sem alterações. Assinar de maneira criptográfica os pacotes de software é uma boa maneira de garantir que nada seja alterado entre os ambientes.

Práticas comuns que devem ser evitadas:

  • Implantar software manualmente em produção.

  • Realizar alterações manualmente no software para suprir diferentes ambientes.

Benefícios de implementar esta prática recomendada:

  • Maior confiança no processo de lançamento de software.

  • Redução do risco de uma alteração com falha afetar a funcionalidade dos negócios.

  • Maior cadência de lançamentos devido ao menor risco de alterações.

  • Recurso de reversão automática para eventos inesperados durante a implantação.

  • Capacidade de comprovar de forma criptográfica que o software testado é o software implantado.

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

Orientação para implementação

Para manter uma infraestrutura de aplicações robusta e confiável, implemente práticas de implantação seguras e automatizadas. Essa prática envolve remover o acesso humano persistente dos ambientes de produção, usar ferramentas de CI/CD para implantações e externalizar dados de configuração específicos do ambiente. Ao seguir essa abordagem, você pode aprimorar a segurança, reduzir o risco de erros humanos e simplificar o processo de implantação.

Você pode criar uma estrutura de Conta da AWS para remover o acesso humano persistente dos ambientes de produção. Essa prática minimiza o risco de alterações não autorizadas ou modificações acidentais, o que melhora a integridade de seus sistemas de produção. Em vez do acesso humano direto, você pode usar ferramentas de CI/CD como AWS CodeBuild e AWS CodePipeline para realizar implantações. Você pode usar esses serviços para automatizar os processos de criação, teste e implantação, o que reduz a intervenção manual e aumenta a consistência.

Para aprimorar ainda mais a segurança e a rastreabilidade, é possível assinar pacotes de aplicações depois de testados e validar essas assinaturas durante a implantação. Para fazer isso, use ferramentas criptográficas como AWS Signer ou AWS Key Management Service (AWS KMS). Ao assinar e verificar pacotes, você pode garantir a implantação somente de código autorizado e validado em seus ambientes.

Além disso, sua equipe pode arquitetar a workload para obter dados de configuração específicos do ambiente de uma fonte externa, como o AWS Systems Manager Parameter Store. Essa prática separa o código da aplicação dos dados de configuração, o que ajuda você a gerenciar e atualizar as configurações de maneira independente, sem modificar o código da aplicação em si.

Para simplificar o provisionamento e o gerenciamento da infraestrutura, considere usar ferramentas de infraestrutura como código (IaC), como AWS CloudFormation ou AWS CDK. Você pode usar essas ferramentas para definir sua infraestrutura como código, o que melhora a consistência e a repetibilidade das implantações em diferentes ambientes.

Considere as implantações canário para validar a implantação bem-sucedida do software. As implantações canário envolvem a implementação de alterações em um subconjunto de instâncias ou usuários antes da implantação em todo o ambiente de produção. Em seguida, você pode monitorar o impacto das mudanças e revertê-las, se necessário, o que minimiza o risco de problemas generalizados.

Siga as recomendações descritas no whitepaper Organizando seu ambiente AWS usando várias contas. Este whitepaper fornece orientação sobre como separar ambientes (como desenvolvimento, preparação e produção) em Contas da AWS distintas, o que aumenta ainda mais a segurança e o isolamento.

Etapas de implementação

  1. Configure a estrutura de Conta da AWS:

    • Siga as orientações no whitepaper Organizing Your AWS Environment Using Multiple Accounts para criar Contas da AWS separadas para diferentes ambientes (por exemplo, desenvolvimento, preparação e produção).

    • Configure os controles e permissões de acesso apropriados para cada conta para restringir o acesso humano direto aos ambientes de produção.

  2. Implemente um pipeline de CI/CD:

    • Configure um pipeline de CI/CD usando serviços, como AWS CodeBuild e AWS CodePipeline.

    • Configure o pipeline para criar, testar e implantar automaticamente o código da aplicação nos respectivos ambientes.

    • Integre repositórios de código com o pipeline de CI/CD para controle de versão e gerenciamento de código.

  3. Assine e verifique pacotes de aplicações:

    • Use o AWS Signer ou o AWS Key Management Service (AWS KMS) para assinar os pacotes de aplicações depois de testados e validados.

    • Configure o processo de implantação para verificar as assinaturas dos pacotes de aplicações antes de implantá-los nos ambientes de destino.

  4. Externalize os dados de configuração:

    • Armazene dados de configuração específicos do ambiente no AWS Systems Manager Parameter Store.

    • Modifique o código da aplicação para recuperar dados de configuração do Parameter Store durante a implantação ou o runtime.

  5. Implemente a infraestrutura como código (IaC):

    • Use ferramentas de IaC como AWS CloudFormation ou AWS CDKpara definir e gerenciar sua infraestrutura como código.

    • Crie modelos do CloudFormation ou scripts de CDK para provisionar e configurar os recursos da AWS necessários para a aplicação.

    • Integre a IaC ao seu pipeline de CI/CD para implantar automaticamente as alterações na infraestrutura com as alterações no código da aplicação.

  6. Implemente implantações canário:

    • Configure o processo de implantação para oferecer suporte a implantações canário, em que as alterações são implementadas em um subconjunto de instâncias ou usuários antes de serem implantadas em todo o ambiente de produção.

    • Use serviços, como o AWS CodeDeploy ou o AWS ECS, para gerenciar implantações canário e monitorar o impacto das mudanças.

    • Implemente mecanismos de reversão para reverter para a versão estável anterior se forem detectados problemas durante a implantação canário.

  7. Monitore e audite:

    • Configure mecanismos de monitoramento e registro em log para rastrear implantações, desempenho de aplicações e mudanças na infraestrutura.

    • Use serviços, como o Amazon CloudWatch e o AWS CloudTrail, para coletar e analisar logs e métricas.

    • Implemente verificações de auditoria e conformidade para verificar a adesão às práticas recomendadas de segurança e aos requisitos regulatórios.

  8. Melhore continuamente:

    • Analise e atualize regularmente suas práticas de implantação e incorpore feedback e lições aprendidas em implantações anteriores.

    • Automatize o máximo possível do processo de implantação para reduzir a intervenção manual e possíveis erros humanos.

    • Colabore com equipes multifuncionais (por exemplo, operações ou segurança) para alinhar e melhorar continuamente as práticas de implantação.

Seguindo essas etapas, você pode implementar práticas de implantação seguras e automatizadas em seu ambiente AWS, o que aumenta a segurança, reduz o risco de erros humanos e simplifica o processo de implantação.

Recursos

Práticas recomendadas relacionadas:

Documentos relacionados:

Vídeos relacionados:

Exemplos relacionados: