89
+ Reactive Architecture e Microservices: Microservices, APIs e Event Driven

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

Embed Size (px)

Citation preview

+

Reactive Architecture e Microservices: Microservices, APIs e Event Driven

http://sensedia.com/blog/

Petterson Andrade

Software Architect @ [email protected]@pett4j

Topic Title

Agenda

1. Microservice 2. Microservice 3. Microservice

Arquitetura de software

Pessoas

Monolitico x MicroservicesCruzeiro x Atlético

Grêmio x Inter

Microservices

Single Responsibility

principle

Dividir para conquistar

FocoPequeno

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 Hammanthttp://paulhammant.com/2013/07/14/legacy-application-strangulation-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

100ms

70 ms

50 ms

100ms

Synchronous

320 ms

Req Resp

Req

70 ms

50ms

100ms

Asynchronous

Resp

100ms

Req

70 ms

50ms

100ms

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 3pub

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

APIsThe 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 AppHTMLJS

Services

Acoplado Desacoplado

Web AppHTMLJS

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