O blog da AWS
Avaliação contínua da resiliência de aplicações utilizando AWS Resilience Hub e AWS CodePipeline
Por Scott Bryen, Arquiteto de Soluções Sênior e
Elie El khoury, Especialista do setor financeiro
Avaliações contínuas de resiliência
A Figura 1 mostra a arquitetura de automação de avaliações de resiliência em um ambiente multi-contas. O AWS CodePipeline, o AWS Step Functions e o AWS Resilience Hub são provisionados na conta de implantação, enquanto as pilhas de aplicações do AWS CloudFormation são importadas da conta que possui sua carga de trabalho. Esse padrão se baseia na funcionalidade do AWS Resilience Hub de importar pilhas do CloudFormation de contas e/ou regiões diferentes ao encontrar uma estrutura de aplicação.
Adicionar aplicativo ao AWS Resilience Hub
Comece registrando sua aplicação no AWS Resilience Hub e atribuindo uma política de resiliência. Isso pode ser feito por meio do Console AWS ou através do CloudFormation. Nesse caso, a aplicação foi registrada por meio do Console AWS. O post de Sebastien Stormacq, Meça e melhore a resiliência de aplicações com o AWS Resilience Hub, mostra como registrar uma aplicação no AWS Resilience Hub.
Em um ambiente com várias contas, clientes possuem uma conta AWS para cada ambiente distinto, e recomendamos que se separe os recursos de CI/CD em outra conta dedicada. Neste post, a aplicação registrada no AWS Resilience Hub foi criada na conta de implantação e os recursos foram descobertos e implementados usando uma pilha do CloudFormation da conta de ambiente de aplicação. São necessárias permissões adequadas para utilizar o AWS Resilience Hub para gerenciar aplicações em várias contas.
Crie o AWS Step Function para executar a avaliação de resiliência
Sempre que você faz uma alteração no seu aplicativo CloudFormation, você precisa atualizar e publicar a versão mais recente no AWS Resilience Hub para garantir que você esteja avaliando as mudanças mais recentes. Agora que as integrações do SDK do AWS Step Functions oferecem suporte ao AWS Resilience Hub, você pode criar uma máquina de estado para coordenar o processo, que será acionado a partir do AWS CodePipeline.
O AWS Step Functions é um serviço low-code de fluxo de trabalho visual que os desenvolvedores usam para criar aplicativos distribuídos, automatizar processos de TI e de negócios e criar pipelines de dados e aprendizado de máquina usando os serviços da AWS. Os fluxos de trabalho gerenciam falhas, novas tentativas, paralelização, integrações de serviços e observabilidade para que os desenvolvedores possam se concentrar em uma lógica de negócios de maior valor.
- A primeira etapa do fluxo de trabalho é atualizar os recursos associados ao aplicativo definido no AWS Resilience Hub chamando ImportResourcesToDraftApplication.
- Verifique se o processo de importação foi concluído usando um estado de espera, uma chamada para DescribeDraftAppVersionResourcesImportStatus e, em seguida, um estado de escolha para decidir se deseja prosseguir ou continuar aguardando.
- Depois de concluído, publique o rascunho do aplicativo chamando publishAppVersion para garantir que estamos avaliando a versão mais recente.
- Depois de publicado, invoque StartAppAssessment para iniciar uma avaliação de resiliência.
- Verifique se a avaliação será concluída usando um estado de espera, uma chamada para DescribeAppAssessment e, em seguida, um estado de escolha para decidir se deseja progredir ou continuar aguardando.
- No estado de escolha, use o status da avaliação da resposta para determinar se a avaliação está pendente, em andamento ou bem-sucedida.
- Se for bem-sucedido, use o status de conformidade da resposta para determinar se deve progredir para o sucesso ou para o fracasso.
- O status de conformidade será “PolicyMet” ou ”PolicyBreached”.
- Se a política for violada, publique no SNS para alertar a equipe de desenvolvimento antes de progredir o status para fracasso.
Crie um estágio dentro do pipeline de código
Agora que criamos a AWS Step Function, precisamos integrá-la ao nosso pipeline. O post Entrega contínua refinada com CodePipeline e AWS Step Functions demonstra como você pode acionar uma Step Function a partir do AWS Code Pipeline.
Ao adicionar o estágio, você precisa passar o ARN da pilha que foi implantado no estágio anterior, bem como o ARN do aplicativo no AWS Resilience Hub. Eles serão necessários nas chamadas do SDK da AWS e você poderá transmiti-los como uma entrada Literal.
Para obter mais informações sobre essas chamadas do SDK da AWS, consulte os documentos de referência da API do AWS Resilience Hub.
Os clientes geralmente executam suas cargas de trabalho em ambientes mais baixos de uma forma menos resiliente para economizar custos. É importante adicionar o estágio de avaliação no ponto apropriado do seu pipeline. Recomendamos adicionar isso ao seu pipeline após a implantação em um ambiente de teste que espelhe a produção, mas antes da implantação na produção. Ao fazer isso, você pode falhar rapidamente e interromper as mudanças que reduzirão a resiliência na produção.
Uma observação sobre cotas de serviço: o AWS Resilience Hub permite que você execute 20 avaliações por mês por aplicativo. Se você precisar aumentar essa cota, crie um ticket com o AWS Support.
Conclusão
Neste post, propomos uma abordagem para avaliar continuamente a resiliência como parte do seu pipeline de CI/CD usando o AWS Resilience Hub, o AWS CodePipeline e o AWS Step Functions. Essa abordagem permitirá que você entenda rapidamente se uma mudança enfraquecerá a sua resiliência.
O AWS Resilience Hub também gera experimentos recomendados do AWS FIS que você pode implantar e usar para testar a resiliência do seu aplicativo. Além de avaliar a resiliência, também recomendamos que você integre a execução desses testes em seu pipeline. O post Teste de caos com o AWS Fault Injection Simulator e o AWS CodePipeline descreve como isso pode ser implementado.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre os autores
Scott Bryen é um Arquiteto de Soluções Sênior que trabalha na equipe de serviços financeiros da AWS no Reino Unido. Ele ajuda seus clientes de serviços financeiros a acelerar sua jornada na nuvem e a usar a nuvem para transformar seus negócios.
Elie El khoury é especialista do setor financeiro na AWS. Elie mora na cidade de Nova York, onde trabalha com clientes de serviços financeiros para ajudá-los a projetar, implantar e dimensionar seus aplicativos na nuvem. Fora do trabalho, Elie gosta de andar de bicicleta, fazer caminhadas e passar o tempo com amigos e familiares.