Byron
Um framework para auxiliar o desenvolvimento de microsserviços reativos nativos à nuvem
Autores
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
Agenda
Arquitetura de software
Padrões de microsserviços
Frameworks - onde está a main?
Modelo proposto
Princípios de aplicação
Arquitetura
“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
Arquitetura em camadas
Camadas isoladas
Abstração de tudo abaixo
Separação de preocupações
Isolamento das mudanças
Model
View
Controller
Arquitetura em camadas
Branching hell
Releases esparças
Desperdício de recursos
O monolito
Microsserviços
Divisão em partes independentes
Autonomia para os times
Escalabilidade sob demanda
Microsserviços
Consistência
Sincronicidade
Endereçamento
as dificuldades de um sistema distribuído
Acoplamento
Microsserviços
um sistema distribuído
API Gateway
Microsserviços
um sistema distribuído
HTTPS
Sidecar
Sidecar
HTTP
HTTP
Microsserviços
um sistema distribuído
read
write
write
command
+
query
query
command
Command-Query Responsability Segregation
(CQRS)
Microsserviços
um sistema distribuído
RPC
publica evento
escuta evento
Event Sourcing
Onde está a main?
A MAIN?
Lib vs. Framework
lib
framework
fornecido
usuário
main()
main()
Simplificando
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
Nativo à Nuvem
replay de mensagens
rota /health
microsserviços
Nativo à Nuvem
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
Reativo
cache com alguma informação
Responde após validar
Reativo
sistema de mensageria
microsserviços
e escalabilidade independente
Simulação
User
Post
writes
id
name
bio
avatar
id
title
subtitle
body
keywords
Os componentes
User
Post
User:
- id
- name
- bio
- avatar
User:
- id
- name
Post:
- id
- title
- subtitle
- body
- keywords
O fluxo - novo usuário
O fluxo - novo post
Byron Framework
By João Daniel
Byron Framework
- 556