Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serverless com AWS SAM — Darede

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Serverless com AWS SAM — Darede

Como criar aplicações serverless na AWS com o SAM (Serverless Application Model): infraestrutura como código, Lambda, API Gateway e deploy automatizado. Apresentado por Flávio Pimenta (Darede).

Avatar for Flávio Pimenta

Flávio Pimenta PRO

September 11, 2026

More Decks by Flávio Pimenta

Other Decks in Programming

Transcript

  1. Agenda • Caso de uso: o problema! • Overview sobre

    arquitetura de eventos • Arquitetura proposta • Abordagem dos casos de teste • Mas e o SAM!!?
  2. Desejo do cliente: Desenvolver um processo de atualização de dados

    para o novo sistema de CRM que está entrando em produção com apenas 3 passos! 01 Extração 02 Envio 03 Consulta Status
  3. Top 10 Strategic Technology Trends for 2018. “By 2020, event-sourced,

    realtime situational awareness will be a required characteristic for 80% of digital business solutions, and 80% of new business ecosystems will require support for event processing.”
  4. O que é um evento? APIX é evento :p Em

    Arquitetura, um evento está relacionado à ações que geram mudança de estado e que afetam o negócio.
  5. 1 EVENT-DRIVEN ARCHITECTURE PADRÕES NOTIFICAÇÃ O Mudança de endereço PRÓS

    Serviço de clientes Database • Desacoplamento do receiver para o sender “Cliente 43F31A1 atualizou os dados” GET /clients/43F31A1 Broker de Eventos Serviço Bancário Serviço de Ofertas CONTRAS • Sobrecarga de requisições no produtor.
  6. 1 EVENT-DRIVEN ARCHITECTURE PADRÕES ATUALIZAÇÃO DE ESTADO Mudança de endereço

    PRÓS • Desacoplamento do receiver para o sender Serviço de clientes Database • Redução da carga do fornecedor “Cliente 43F31A1 atualizou o CEP para 29580000” CONTRAS • Replicação de dados. Broker de Eventos Database Serviço Bancário Serviço de Ofertas Database • Consistência de dados.
  7. 1 PADRÕES EVENT SOURCING Mudança de endereço PRÓS Serviço de

    clientes Evento: Mudança Endereço Event Source • Audit Database “Cliente 43F31A1 atualizou o CEP para 29580000” • Debug CONTRAS • Não é muito familiar. • Evento Schema
  8. Desejo do cliente: Desenvolver um processo de atualização de dados

    para o novo sistema de CRM que está entrando em produção com apenas 3 passos! 01 Extração 02 Envio 03 Consulta Status
  9. Arquitetura: Extração Características: • Ler de várias origens • Gravar

    em formato csv (requisito da API do SalesForce) • Limite de registros/tamanho por arquivo • Paginação • Execução paralelizada Texto
  10. Arquitetura: Envio Características: • Inicia com um evento indicando que

    há um arquivo novo • Dependência de entidades • Garantir entrega • Execução paralelizada, respeitando dependências Texto
  11. Arquitetura: Status Características: • Inicia com um evento contendo o

    lote de jobs a ser verificado • Busca status de cada job no SalesForce (API) usando “pooling” • Quando job possui status de concluído grava resultado. Texto
  12. Arquitetura: Controle Características: • Gera identificador do lote • Dispara

    mensagem que originará os envios • Dispara mensagem para a função de controle • Execução agendada Texto
  13. Tecnologias • Banco de dados relacional (engine PostgreSQL) • Linguagem:

    Python • File Storage com suporte a eventos (S3) • Serverless (lambda) • Custo: Menos de USD 1.00 / mês
  14. Testes unitários Como fazer um teste de unidade quando eu

    uso um serviço Cloud? Resposta: Use Mock!
  15. Testes unitários Há frameworks que emulam o comportamento de serviços

    Cloud!! Exemplo: LocalStack Há bibliotecas que são "mocks" de sdk`s de serviços Cloud. Exemplo: moto para python
  16. moto import boto3 from moto import mock_s3 from mymodule import

    MyModel @mock_s3 def test_my_model_save(): conn = boto3.resource('s3', region_name='us-east-1') # We need to create the bucket since this is all in Moto's 'virtual' AWS account conn.create_bucket(Bucket='mybucket')
  17. Testes de serviço Necessidade de escrever código integrando os serviços

    cloud para validar o uso dos mesmos. Exemplo: extração paginada. • Executo o método principal da classe de Extração com uma massa de dados de 10 registros e paginação = 3 registros/página • Espero 4 arquivos gerados sendo que 3 possuem 3 registros e 1 possui apenas 1 registro
  18. Testes End to End Como a “timeline” de execução é

    totalmente imprevisível, a única estratégia que adotamos até o momento foi a ideia de implementar “pooling” e verificar o status de cada etapa até que a verificação seja feita e o teste possa prosseguir.