REL08-BP04 Implemente usando infraestrutura imutável - AWS Estrutura Well-Architected

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

REL08-BP04 Implemente usando infraestrutura imutável

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

Siga uma estratégia de implantação de infraestrutura imutável para aumentar a confiabilidade, a consistência e a reprodutibilidade nas implantações de workload.

Resultado desejado: com uma infraestrutura imutável, nenhuma modificação no local é permitida para executar recursos de infraestrutura em uma workload. Em vez disso, quando uma alteração é necessária, um novo conjunto de recursos atualizados da infraestrutura que contém todas as alterações necessárias é implantado paralelamente aos recursos existentes. Essa implantação é validada automaticamente e, se bem-sucedida, o tráfego é gradualmente transferido para o novo conjunto de recursos.

Essa estratégia de implantação aplica-se a atualizações de software, patches de segurança, alterações na infraestrutura, atualizações de configuração e atualizações de aplicações, entre outros.

Práticas comuns que devem ser evitadas:

  • Implementação de mudanças no local em recursos da infraestrutura em execução.

Benefícios de implementar esta prática recomendada:

  • Maior consistência em todos os ambientes: como não há diferenças nos recursos de infraestrutura entre os ambientes, a consistência aumenta e os testes são simplificados.

  • Redução nos desvios de configuração: ao substituir recursos de infraestrutura por uma configuração conhecida e com controle de versão, a infraestrutura é redefinida para um estado conhecido, testado e confiável, evitando assim desvios de configuração.

  • Implantações atômicas confiáveis: as implantações são concluídas com sucesso ou nada muda, aumentando a consistência e a confiabilidade no processo de implantação.

  • Implantações simplificadas: as implantações são simplificadas porque não precisam oferecer suporte a atualizações. As atualizações são apenas novas implantações.

  • Implantações mais seguras com processos de reversão e recuperação rápidos: as implantações são mais seguras porque a versão de trabalho anterior não foi alterada. Em caso de erros, é possível reverter para ela.

  • Postura de segurança aprimorada: ao não permitir alterações na infraestrutura, mecanismos de acesso remoto (comoSSH) podem ser desativados. Isso reduz o vetor de ataque, melhorando a postura de segurança da organização.

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

Orientação para implementação

Automação

Ao definir uma estratégia de implantação de infraestrutura imutável, é recomendável usar a automação o máximo possível para aumentar a reprodutibilidade e minimizar o potencial de erro humano. Para obter mais detalhes, consulte REL08-BP05 Implantar mudanças com automação e Automatizar implantações seguras e sem intervenção.

Com a infraestrutura como código (IaC), as etapas de provisionamento, orquestração e implantação da infraestrutura são definidas de forma programática, descritiva e declarativa e armazenadas em um sistema de controle de código-fonte. O uso da infraestrutura como código simplifica a automatização da implantação da infraestrutura e ajuda a obter a imutabilidade da infraestrutura.

Padrões de implantação

Quando uma mudança na workload é necessária, a estratégia de implantação da infraestrutura imutável exige que um novo conjunto de recursos da infraestrutura seja implantado, incluindo todas as alterações necessárias. É importante que esse novo conjunto de recursos siga um padrão de implantação que minimize o impacto sobre o usuário. Há duas estratégias principais para essa implantação:

Implantação canário: a prática de direcionar um pequeno número de seus clientes para a nova versão, geralmente em execução em uma única instância de serviço (o canário). Em seguida, você examina profundamente todas as alterações de comportamento ou erros gerados. O tráfego poderá ser removido da implantação canário se problemas críticos forem encontrados, e os usuários poderão ser enviados de volta para a versão anterior. Se a implantação for bem-sucedida, você poderá continuar a implantar na velocidade desejada, enquanto monitora as alterações em busca de erros, até que esteja totalmente implantado. AWS CodeDeploy pode ser configurado com uma configuração de implantação que permita uma implantação canária.

Implantação azul/verde: semelhante à implantação canário, exceto que uma frota completa da aplicação é implantada em paralelo. Você alterna as implantações entre as duas pilhas (azul e verde). Novamente, é possível enviar o tráfego para a nova versão e voltar para a versão antiga se houver problemas na implantação. Normalmente, todo o tráfego é comutado de uma só vez, mas você também pode usar frações do seu tráfego para cada versão para aumentar a adoção da nova versão usando os DNS recursos de roteamento ponderado do Amazon Route 53. AWS CodeDeploy e AWS Elastic Beanstalkpode ser configurado com uma configuração de implantação que permita uma implantação azul/verde.

Diagrama mostrando a implantação azul/verde com o AWS Elastic Beanstalk e o Amazon Route 53

Figura 8: Implantação azul/verde com o AWS Elastic Beanstalk e o Amazon Route 53

Detecção de desvios

Um desvio é definido como qualquer alteração que faz com que um recurso de infraestrutura tenha um estado ou configuração diferente do esperado. Alterações não gerenciadas da configuração, sejam de que tipo for, são contrárias ao conceito de infraestrutura imutável e devem ser detectadas e corrigidas para que a implementação da infraestrutura imutável seja bem-sucedida.

Etapas de implementação

  • Proíba a modificação no local dos recursos de infraestrutura em execução.

    • Você pode usar AWS Identity and Access Management (IAM) para especificar em quem ou o que pode acessar serviços e recursos AWS, gerenciar centralmente permissões refinadas e analisar o acesso para refinar as permissões. AWS

  • Automatize a implantação dos recursos da infraestrutura para aumentar a reprodutibilidade e minimizar a possibilidade de erro humano.

    • Conforme descrito no AWS whitepaper Introdução ao DevOps on, a automação é a base dos AWS serviços e tem suporte interno em todos os serviços, recursos e ofertas.

    • Pré-preparar sua Amazon Machine Image (AMI) pode acelerar o tempo de lançamento. EC2O Image Builder é um AWS serviço totalmente gerenciado que ajuda você a automatizar a criação, manutenção, validação, compartilhamento e implantação de produtos personalizados, seguros e personalizados AMI para up-to-date Linux ou Windows.

    • Alguns dos serviços compatíveis com automação são:

      • AWS Elastic Beanstalké um serviço para implantar e escalar rapidamente aplicativos web desenvolvidos com Java,. NET,PHP, Node.js, Python, Ruby, Go e Docker em servidores conhecidos, como Apache, NGINX Passenger e. IIS

      • AWS Protonajuda as equipes de plataforma a conectar e coordenar todas as diferentes ferramentas que suas equipes de desenvolvimento precisam para provisionamento de infraestrutura, implantação de código, monitoramento e atualizações. AWS Proton permite uma infraestrutura automatizada como provisionamento de código e implantação de aplicativos sem servidor e baseados em contêineres.

    • Aproveitar a infraestrutura como código facilita a automatização da implantação da infraestrutura e ajuda a alcançar a imutabilidade da infraestrutura. AWS fornece serviços que permitem a criação, implantação e manutenção da infraestrutura de forma programática, descritiva e declarativa.

      • AWS CloudFormationajuda os desenvolvedores a criar AWS recursos de forma ordenada e previsível. Os recursos são escritos em arquivos de texto usando JSON ou YAML formatando. Os modelos exigem sintaxe e estrutura específicas que dependem dos tipos de recurso que estão sendo criados e gerenciados. Você cria seus recursos em JSON ou YAML com qualquer editor de código, por exemplo AWS Cloud9, os insere em um sistema de controle de versão e, em seguida, CloudFormation cria os serviços especificados de maneira segura e repetível.

      • AWS Serverless Application Model (AWS SAM) é uma estrutura de código aberto que você pode usar para criar aplicativos sem servidor. AWS AWS SAM se integra a outros AWS serviços e é uma extensão do AWS CloudFormation.

      • O AWS Cloud Development Kit (AWS CDK) é um framework de desenvolvimento de software de código aberto para modelar e provisionar recursos de aplicações em nuvem usando linguagens de programação conhecidas. Você pode usar AWS CDK para modelar a infraestrutura de aplicativos usando TypeScript Python, Java e. NET. AWS CDK usa AWS CloudFormation em segundo plano para provisionar recursos de forma segura e repetível.

      • AWS Cloud Control APIapresenta um conjunto comum de Create, Read, Update, Delete e List (CRUDL) APIs para ajudar os desenvolvedores a gerenciar sua infraestrutura de nuvem de forma fácil e consistente. O Cloud Control API comum APIs permite que os desenvolvedores gerenciem uniformemente o ciclo de vida dos serviços AWS e de terceiros.

  • Implemente padrões de implantação que minimizem o impacto no usuário.

  • Detecte variações de configuração ou estado. Para obter mais informações, consulte Como detectar alterações de configuração não gerenciadas para pilhas e recursos.

Recursos

Práticas recomendadas relacionadas:

Documentos relacionados:

Vídeos relacionados: