Estilos de arquitetura e padrões de comunicação
Desenvolvendo Aplicações na AWS
Ricardo Sueiras
Principal Technologist
Seu instrutor
O que são padrões de arquitetura?
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.
Monólitos
Uma única unidade, fortemente acoplada.
Um codebase, um deploy.
Simples no início.
Difícil de escalar: você escala tudo junto.
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.
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 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.
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.
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.
Padrão: request/response
Espinha dorsal da maioria das interfaces de aplicação.
Comportamento previsível.
Feedback imediato para usuários.
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.
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.
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.
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: fan-out
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.
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.
Vamos praticar!
Desenvolvendo Aplicações na AWS
Preparing Video For Download...