+
Reactive Architecture e
Microservices:
Microservices, APIs e Event Driven
http://sensedia.com/blog/
Petterson Andrade
Software Architect @ Sensedia
petterson.andrade@sensedia.com
@pett4j
Topic Title
Agenda
1. Microservice 2. Microservice 3. Microservice
Arquitetura de
software
Pessoas
Monolitico x Microservices
Cruzeiro x Atlético
Grêmio x Inter
Microservices
Single
Responsibility
principle
Dividir para conquistar
Foco
Pequeno
Bem Feito
Por que
adotar?
- Escolha a tecnologia certa para resolver o
problema
- Você não precisa repassar um problema você
pode isolar e se recuperar
- Você precisa escalar somente o que vai utilizar
- Desenvolva e teste rápido e focado
- Serviço pequeno, menos conflito, menos erros e
mais produtividade
- Re-uso! Não reinvente a roda!
- Otimize, joge fora e faça melhor!
SOA == Microservices (true)
SOA != Microservices (true)
O princípios
são iguais
Desacoplamento
Isolamento
Composição
Integração
Serviços autồnomos
A falta dos
princípios não
ESB ligando monolíticos
Comunicação complicada
Ineficiência
Sem flexibilidade
SOA == Microservices
SOA Microservices
Strangler Application
Pattern
Martin Fowler - 29 June 2004
Paul Hammant
http://paulhammant.com/2013/
07/14/legacy-application-strang
ulation-case-studies/
Você venceu sua jornada: é o fim do monolítico
Mas lembre-se: Você está em rota de colisão
E agora? Quem
poderá nos
defender?
San
Newman
samnewman.io
Chris
Richardson
microservices.io
Jonas Bonér
www.lightbend.com
Martin
Fowler
martinfowler.com
Eric Evans
domainlanguage.com/ddd
The Reactive
Manifesto
Published on September 16 2014. (v2.0)
- Aplicações eram gigantes e com dezenas de servers
- Segundo é a unidade de medida de resposta
- Horas de manutenção e de sistemas fora do ar
- Gigabytes é a unidade de medida de armazenamento
- Aplicações distribuídas
- Você faz tudo com um comando pelo smartphone
- Nuvem rodando milhares de máquina multi-core
- Milissegundos é obrigatoriamente a unidade de medida de
resposta
- 100% uptime.
- Data is measured in Petabytes.
Transformação
Digital
S M A C IoT
TODO NEGÓCIO SERÁ DIGITAL
The Reactive Manifesto
Se um sistema é:
Responsive, Resilient, Elastic and Message Driven,
Ele pode ser chamado de Reactive System
The Reactive Manifesto:
Responsive
Sempre da feedback aos usuários
Responde em tempo hábil
Detecta problemas e trata
Rápido e consistente
Alta confiabilidade
.
The Reactive Manifesto: Resilient
Responde em caso de falha
Replicação
contenção,
isolamento e
delegação.
The Reactive Manifesto: Elastic
Continua responsivo mesmo com aumento da demanda
Aumenta e diminui os recursos conforme a demanda
Distribui demanda
The Reactive Manifesto:
Message Driven
Usa mensagens assíncronas
Baixo acoplamento
Tratamento de erros por mensagem
Comunicação não blocante
Evita desgaste do sistema
Aqui é reativo p…!
BIIIIRRRLLL!
Sai de casa escrevi
código pra c……!
Fonte de dados
isolada
Event Driven
Data
Event Source
Synchronous
Versus
Asynchronous
100
ms
70
ms
50
ms
100
ms
Synchronous
320 ms
Req Resp
Req
70
ms
50
ms
100
ms
Asynchronous
Resp
100ms
Req
70
ms
50
ms
100
ms
Asynchronous
Resp
?
Backpressure
- O sistema precisa ser capaz de reagir ao erro
- Tempo de resposta não pode ser afetado
- Não pode propagar o erro
- Precisa ser capaz de fazer Rollback
Asynchronous
Orchestration vs
Choreography
Service 1 Service 3
Service 4
Service 2
Orchestration
Service 1 Service 3
Service 4
Service 2
Choreography
Service 3
pub
sub
sub
sub
API Management
API Gateway
API Gateway
Simplifica o client side
Roteamento
Encapsulamento de serviços
Tradução de protocolo
Service Discovery
- Inversão de controle
- Cada serviço se registra
- Configuração deixa de ser estática
- Pode ser aplicado ao cliente
- Deve ser aplicado ao server
API / REST / RESTFul
APIs
The Digital Glue
Backend
Ecossistema de
Parceiros Digitais
Integrações com
Aplicações SaaS
Aplicações Móveis e
Internet of Things
- Over HTTP
- Tira dependência de tecnologia
- O sistema precisa ser capaz de reagir ao erro
- Use padrões
- Implemente Restful de verdade
Hypermedia
- Use HAL (Hypertext Application Language)
- Hypermedia garante flexibilidade
- Possui suporte de várias bibliotecas
Front-end isolado
Aplicação 1
Aplicação
Web App
HTML
JS
Services
Acoplado Desacoplado
Web App
HTML
JS
Aplicação 2
Services
WEB Sockets
- Padrão no HTTP 2.0
- Torna o sistema mais responsivo
Client
API
WebSocket Server
Fire and forget
Events
Programação
reativa
- Padrão no HTTP 2.0
- Torna o sistema mais responsivo
Programação
reativa
- Use ferramentas para auxiliar
- RXJava
- RXJS
- Avalie usar imutabilidade
- Avalie usar funcional
Monitoramento
- Monitore tudo que for possível e mais um pouco
- Alerte a performance do serviço
- Alerte qualquer anomalia a estrutura
- Evite falsos positivos, refine os alertas
- Avalie o tempo todo as métricas
- Automatize e depois automatize de novo
Scalability
- Scale out
- Services Stateless
- Comunicação por eventos
- Nunca use pooling
- Deployment
Deployment
Reactive architecture e microservices  microservices, ap is e event driven (1)
Reactive architecture e microservices  microservices, ap is e event driven (1)
Reactive architecture e microservices  microservices, ap is e event driven (1)

Reactive architecture e microservices microservices, ap is e event driven (1)