Um framework para auxiliar o desenvolvimento de microsserviços reativos nativos à nuvem
Co-fundador e ex-presidente do UCL, entusiasta de Typescript, front-end, React hater
Presidente do UCL, professor de web, fullstack dev e Docker boy
Arquitetura de software
Padrões de microsserviços
Frameworks - onde está a main?
Modelo proposto
Princípios de aplicação
“A arquitetura de software de um sistema computacional é o conjunto de estruturas necessárias para raciocinar e discutir a respeito do sistema, que compreende os elementos de software, as relações entre eles e as propriedades de ambos.”
Documenting Software Architectures, Bass et al
Camadas isoladas
Abstração de tudo abaixo
Separação de preocupações
Isolamento das mudanças
Model
View
Controller
Branching hell
Releases esparças
Desperdício de recursos
O monolito
Divisão em partes independentes
Autonomia para os times
Escalabilidade sob demanda
Consistência
Sincronicidade
Endereçamento
Acoplamento
API Gateway
HTTPS
Sidecar
Sidecar
HTTP
HTTP
read
write
write
command
+
query
query
command
Command-Query Responsability Segregation
(CQRS)
RPC
publica evento
escuta evento
Event Sourcing
lib
framework
fornecido
usuário
main()
main()
Resiliência
Agilidade
Operabilidade
Observabilidade
Aceitar falhas ao invés de tentar as prevenir
Permitir entregas rápidas e iterações breves
Adicionar controle interno do ciclo de vida ao invés de depender de ferramentas externas
Prover informações que respondam perguntas sobre o estado da aplicação
replay de mensagens
rota /health
microsserviços
Responsividade
Resiliência
Elasticidade
Orientação à Mensagens
Prover tempos de resposta consistentes e razoáveis
Manter o sistema responsivo em caso de falhas
Manter o sistema responsivo em diversas condições de carga, sem gargalos
Prover desacoplamento por meio da troca de mensagens assíncronas entre componentes
cache com alguma informação
Responde após validar
sistema de mensageria
microsserviços
e escalabilidade independente
User
Post
writes
id
name
bio
avatar
id
title
subtitle
body
keywords
User
Post
User:
- id
- name
- bio
- avatar
User:
- id
- name
Post:
- id
- title
- subtitle
- body
- keywords