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

email

bio

avatar

id

title

subtitle

body

keywords

Os componentes

User

Post

User:

- id

- name

- email

- bio

- avatar

User:

- id

- name

Post:

- id

- title

- subtitle

- body

- keywords

O fluxo - novo usuário

O fluxo - novo post

Made with Slides.com