Atividades de pré-implantação - Recomendações da AWS

Atividades de pré-implantação

Projeto do ambiente

O ambiente em que você testa e avalia sua aplicação afeta a profundidade com que é possível testá-la e o nível de confiança de que esses resultados refletem com precisão o que ocorrerá na produção. Talvez você possa realizar alguns testes de integração localmente em máquinas de desenvolvedores usando serviços como o Amazon DynamoDB (consulte Configurar o DynamoDB local na documentação do DynamoDB). No entanto, em algum momento, você precisará testar em um ambiente que replique seu ambiente de produção para obter a maior confiança em seus resultados. Esse ambiente gerará custos, por isso recomendamos que você adote uma abordagem em etapas ou em pipeline para seus ambientes, em que ambientes semelhantes aos de produção apareçam posteriormente no pipeline.

Teste de integração

O teste de integração é o processo de testar se um componente bem definido de uma aplicação executa suas funções corretamente quando opera com dependências externas. Essas dependências externas podem ser outros componentes desenvolvidos de forma personalizada, serviços da AWS que você usa para sua aplicação, dependências de terceiros e dependências on-premises.  Este guia se concentra em testes de integração que demonstram a resiliência da sua aplicação. Ele pressupõe que já existam testes de unidade e de integração que demonstrem a precisão funcional do seu software.

Recomendamos que você projete testes de integração que testem especificamente os padrões de resiliência que você implementou, como padrões de disjuntores ou redução de carga (consulte Etapa 2: projetar e implementar). Os testes de integração orientados à resiliência geralmente envolvem a aplicação de uma carga específica à aplicação ou a introdução intencional de interrupções no ambiente usando recursos como o AWS Fault Injection Service (AWS FIS). De preferência, você deve executar todos os testes de integração como parte do seu pipeline de CI/CD e garantir a execução de testes sempre que o código for confirmado. Isso ajuda você a detectar e reagir rapidamente a quaisquer alterações no código ou nas configurações que resultem em violações de seus objetivos de resiliência. Aplicações distribuídas em grande escala são complexas, e até mesmo pequenas alterações podem afetar significativamente a resiliência de partes aparentemente não relacionadas da sua aplicação. Tente executar seus testes em cada commit. A AWS fornece um excelente conjunto de ferramentas para operar seu pipeline de CI/CD e outras ferramentas de DevOps. Para obter mais informações, consulte Introduction to DevOps on AWS no site da AWS.

Pipelines de implantação automatizada

A implantação e o teste em seus ambientes de pré-produção é uma tarefa repetitiva e complexa que é melhor deixar para a automação. A automação desse processo libera recursos humanos e reduz a possibilidade de erros. O mecanismo para automatizar esse processo geralmente é chamado de pipeline. Ao criar seu pipeline, recomendamos que você configure uma série de ambientes de teste que se aproximem cada vez mais da sua configuração de produção. Você usa essa série de ambientes para testar repetidamente sua aplicação. O primeiro ambiente fornece um conjunto de recursos mais limitado do que o ambiente de produção, mas tem um custo significativamente menor. Ambientes subsequentes devem adicionar serviços e escalabilidade para refletir mais fielmente o ambiente de produção.

Comece testando no primeiro ambiente. Depois que suas implantações passarem por todos os testes no primeiro ambiente de teste, deixe a aplicação ser executada sob certa quantidade de carga por um período para ver se algum problema ocorrerá nesse tempo. Confirme se você configurou a observabilidade corretamente (consulte Precisão do alarme mais adiante neste guia) para que você possa detectar quaisquer problemas que surjam. Quando esse período de observação for concluído com êxito, implante sua aplicação em seu próximo ambiente de teste e repita o processo, adicionando testes ou cargas adicionais conforme suportado pelo ambiente. Depois de testar suficientemente sua aplicação dessa forma, você pode usar os métodos de implantação configurados anteriormente para implantar a aplicação na produção (consulte Definir estratégias de CI/CD anteriormente neste guia). O artigo Automating safe, hands-off deployments na Amazon Builders' Library é um excelente recurso que descreve como a Amazon automatiza a implantação de código. O número de ambientes que precedem sua implantação de produção vai variar, dependendo da complexidade da sua aplicação e dos tipos de dependências que ela tem.

Testes de carga

À primeira vista, o teste de carga se assemelha ao teste de integração. Você testa uma função discreta da sua aplicação e suas dependências externas para verificar se ela funciona conforme o esperado. O teste de carga então vai além do teste de integração para se concentrar em como a aplicação funciona sob cargas bem definidas. O teste de carga exige a verificação da funcionalidade correta, portanto, ele deve ocorrer após um teste de integração com êxito. É importante entender o quão bem a aplicação responde sob as cargas esperadas e como ela se comporta quando a carga excede as expectativas. Isso ajuda a verificar se você implementou os mecanismos necessários para garantir que sua aplicação permaneça resiliente sob carga extrema. Para obter um guia abrangente sobre testes de carga na AWS, consulte Distributed Load Testing on AWS na Biblioteca de Soluções da AWS.