Estilos de arquitetura e padrões de comunicação

Desenvolvendo Aplicações na AWS

Ricardo Sueiras

Principal Technologist

Seu instrutor

instrutor

Desenvolvendo Aplicações na AWS

O que são padrões de arquitetura?

 

 

Arquitetura de aplicação

 

  • Solução repetível para um problema comum.
  • Padrões mostram como combinar serviços da AWS.
  • A arquitetura define como seu app se comporta sob carga.
  • Vários padrões arquiteturais que você precisa conhecer.
Desenvolvendo Aplicações na AWS

Monólitos

 

 

diagrama de um exemplo de arquitetura monolítica

 

 

  • Uma única unidade, fortemente acoplada.
  • Um codebase, um deploy.
  • Simples no início.
  • Difícil de escalar: você escala tudo junto.
Desenvolvendo Aplicações na AWS

Microservices

 

arquitetura de microservices

 

  • Serviços pequenos e independentes: cada um cuida de uma capacidade de negócio.
  • Faz deploy, escala e atualiza cada serviço de forma independente.
  • Trade-off: mais complexidade operacional e comunicação entre serviços.
Desenvolvendo Aplicações na AWS

Serverless

  • Sem infraestrutura para gerenciar, só código e configuração.
  • Construa compondo serviços gerenciados da AWS.
  • A AWS cuida de provisionamento, escalabilidade e manutenção.
  • Trade-off: limites de tempo de execução, cold starts, vendor lock-in.
  • Quase zero overhead operacional e escalabilidade automática.

 

arquitetura serverless

Desenvolvendo Aplicações na AWS

Arquitetura orientada a eventos (EDA)

  • Componentes se comunicam por eventos, não por chamadas diretas.
  • Um evento registra algo que aconteceu (pedido feito, pagamento recebido, item enviado).
  • Produtores emitem eventos.
  • Consumidores assinam os eventos de interesse.

 

arquitetura orientada a eventos

Desenvolvendo Aplicações na AWS

Sistemas fortemente e fracamente acoplados

  • Apps modernos na nuvem são compostos de vários serviços.
  • Serviços precisam se comunicar e coordenar o trabalho.
  • Comunicação síncrona é fortemente acoplada.
  • Comunicação assíncrona é fracamente acoplada.

sistemas fortemente e fracamente acoplados

Desenvolvendo Aplicações na AWS

Comunicação síncrona

 

comunicação síncrona

  • Um serviço envia uma requisição e espera a resposta.
  • O chamador fica bloqueado até a resposta ou timeout.
  • Fácil de implementar e entender.
  • Forte acoplamento: lentidão ou falha a jusante pode cascatar.
  • Mitigue com timeouts, retries e circuit breakers.
Desenvolvendo Aplicações na AWS

Padrão: request/response

requisição e resposta

  • Espinha dorsal da maioria das interfaces de aplicação.
  • Comportamento previsível.
  • Feedback imediato para usuários.
Desenvolvendo Aplicações na AWS

Comunicação assíncrona

 

comunicação assíncrona

  • O remetente não espera resposta.
  • Envia uma mensagem ou evento e segue o processamento.
  • O receptor processa a mensagem de forma independente.
  • Fracamente acoplado: melhor escalabilidade e tolerância a falhas.
  • Lida bem com picos de tráfego e falhas parciais.
  • Desafios: mensagens duplicadas, ordenação e consistência eventual.
Desenvolvendo Aplicações na AWS

Padrão: desacoplamento por fila

  • O produtor envia mensagens para uma fila.
  • O consumidor puxa e processa mensagens de forma independente.
  • Evita que falhas virem cascata.
  • Produtor e consumidor escalam separadamente.

  baseado em filas

Desenvolvendo Aplicações na AWS

Padrão: worker queue

  • Vários workers puxam mensagens de uma fila.
  • Mensagens processadas em paralelo.
  • Permite escala horizontal e maior throughput.
  • Ordem das mensagens não é garantida.

fila de workers

Desenvolvendo Aplicações na AWS

Padrão: publish/subscribe

  • Publicadores enviam mensagens para um tópico do SNS.
  • Múltiplos assinantes recebem a mesma mensagem.
  • Broadcast em tempo real para muitos consumidores.

 

padrão publish/subscribe

Desenvolvendo Aplicações na AWS

Padrão: fan-out

fanout

  • Uma mensagem entregue a múltiplos consumidores ao mesmo tempo.
  • Muito usado em arquiteturas orientadas a eventos.
  • Útil quando vários serviços devem reagir ao mesmo evento.
Desenvolvendo Aplicações na AWS

Ordenação de mensagens

ordenação de mensagens

  • Alguns workloads precisam processar mensagens na ordem correta.
  • Amazon SQS FIFO e Kinesis suportam processamento ordenado.
  • Ordenação estrita reduz o throughput.
  • Equilibre correção e escalabilidade.
Desenvolvendo Aplicações na AWS

Vamos praticar!

Desenvolvendo Aplicações na AWS

Preparing Video For Download...