Testando e implantando suas APIs

Desenvolvendo Aplicações na AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code para desenvolvedores

 

iac

  • Apps cloud native implantam com Infrastructure-as-Code (IaC).
  • Defina recursos de nuvem em arquivos de configuração.
  • Evita configuração manual no AWS Management Console (clickops).
Desenvolvendo Aplicações na AWS

AWS CloudFormation

 

cloudformation

  • O serviço IaC fundamental na AWS.
  • Defina recursos AWS com templates YAML ou JSON.
Desenvolvendo Aplicações na AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK define IaC usando código.
  • Escreva em Python, TypeScript ou Java em vez de YAML ou JSON.
  • Apps são sintetizados em templates CloudFormation na hora do deploy.
Desenvolvendo Aplicações na AWS

AWS Serverless Application Model (SAM)

  • Estende o CloudFormation.
  • Sintaxe simplificada para recursos serverless e APIs.
  • Atua como camada de transformação.
  • Converte sintaxe SAM em templates completos do CloudFormation.

 

sam

Desenvolvendo Aplicações na AWS

Recursos do SAM

  • Gera automaticamente roles IAM de menor privilégio, com opção de ajuste fino.
  • Defina seu pipeline de deploy como configuração.
  • Empacote e faça deploy com sam build e sam deploy.
  • Detecte erros de template cedo com sam validate.
  • Emule Lambda localmente com sam local start-lambda.
    • Fornece um endpoint local persistente

 

sam features

Desenvolvendo Aplicações na AWS

Testando com SAM

  • Compile, invoque e teste apps serverless localmente antes do deploy.
  • Teste funções Lambda e integrações do API Gateway.
  • Invoque uma função localmente com sam local invoke.
    • Invocação pontual
  • Emule o API Gateway com sam local start-api.

 

testing with sam

Desenvolvendo Aplicações na AWS

Testes de unidade

 

unit tests

  • Use SAM com testes de unidade para validar o comportamento da Lambda.
  • Testes locais aceleram o ciclo de desenvolvimento.
  • Combine com frameworks como pytest, JUnit ou Jest.
Desenvolvendo Aplicações na AWS

Fluxo de testes

 

test workflow

  • Gere eventos de teste com sam local generate-event.
  • Ele gera arquivos de evento em JSON.
  • Invoque localmente com sam local invoke FunctionName -e event.json.
  • Adicione asserções do framework para verificar a resposta antes do deploy.
Desenvolvendo Aplicações na AWS

Mockando serviços AWS

 

mocking tests

  • Combine testes locais com bibliotecas de mocking como moto.
  • Interaja com serviços AWS simulados, sem chamadas reais.
  • Melhora a velocidade dos testes.
  • Reduz custos de teste.
  • Valida cenários de erro como throttling ou falhas.
Desenvolvendo Aplicações na AWS

Integração contínua e deploy contínuo (CI/CD)

  • Apps SAM são geralmente implantados via pipelines de CI/CD.
  • Automatize build, testes, empacotamento e deploy.
  • AWS CodeCommit armazena código e templates SAM.
  • AWS CodeBuild executa testes e sam build.
  • AWS CodePipeline orquestra o fluxo.

 

cicd

Desenvolvendo Aplicações na AWS

Fluxo de CI/CD

  • Faça commit do código-fonte e do template SAM em um repositório.
  • Rode testes e validações automáticos.
  • Empacote o app com sam build.
  • Faça deploy dos recursos com sam deploy.
  • Monitore após o deploy com CloudWatch.

 

workflow

Desenvolvendo Aplicações na AWS

Solucionando problemas de deploy

  troubleshooting

  • Troubleshooting é uma habilidade operacional chave.
  • Falhas comuns de deploy:
  • Problemas de permissão IAM.
  • Templates SAM ou CloudFormation inválidos.
  • Empacotamento da Lambda falhou ou dependências ausentes.
  • Configurações incorretas do API Gateway.
Desenvolvendo Aplicações na AWS

Solucionando problemas de deploy

  troubleshooting

  • Deploys do SAM rodam sobre o CloudFormation.
  • Fornece eventos da stack e rollback automático.
  • Ajuda a identificar falhas de deploy.
  • Faz rollback para restaurar o estado anterior do ambiente.
Desenvolvendo Aplicações na AWS

Solucionando problemas de deploy

  troubleshooting

  • Solucione problemas usando:
  • CloudWatch Logs.
  • Logs de execução do API Gateway.
  • Logs da Lambda.
  • Métricas do CloudWatch.
Desenvolvendo Aplicações na AWS

Vamos praticar!

Desenvolvendo Aplicações na AWS

Preparing Video For Download...