Microservices - Quebrando gigantes em pequenos

51
microservices introdução a quebra de gigantes em pequenos

Transcript of Microservices - Quebrando gigantes em pequenos

Page 1: Microservices - Quebrando gigantes em pequenos

microservicesintrodução a quebra de gigantes em pequenos

Page 2: Microservices - Quebrando gigantes em pequenos

Vinícius Krolow

FULL STACK DEVELOPER

@krolow

krolow.com.br

Page 3: Microservices - Quebrando gigantes em pequenos

“mas, o que são

microservices?”

Page 4: Microservices - Quebrando gigantes em pequenos

serviços pequenos!

Page 5: Microservices - Quebrando gigantes em pequenos

http://martinfowler.com/articles/microservices.html

componente “é aquela unidade de software que pode ser

aprimorada e substituída de forma independente”

serviço “seria na realidade um tipo especial de

componente, o componente descrito acima chamaríamos

de biblioteca. Seria o código que ligamos aquele que

escrevemos. O serviço é oposto, não ligamos o código a

este, apenas executamos fazendo chamadas remotas para

este”

Martin Fowler

o que são serviços /

componentes?

Page 6: Microservices - Quebrando gigantes em pequenos

hipsters fazendo sistemas

distribuídos

Page 7: Microservices - Quebrando gigantes em pequenos

ps ax | grep node | awk '{print $1}'

pipeline para unix

Page 8: Microservices - Quebrando gigantes em pequenos

mas o que é então?

não existe uma definição “concreta”

ainda…

Arquitetura de software que busca

desacoplar/quebrar aplicações em

serviços “pequenos” que atendam

um requisito funcional da aplicação e

que funcionem de forma

independente.

Page 9: Microservices - Quebrando gigantes em pequenos

“como fazemos aplicações web

normalmente?”

Page 10: Microservices - Quebrando gigantes em pequenos

browser hey http server get “/”?

for sure, let me see here…

…..

alright here is the response

UI

Store Service

Inventory Service

Shipping Service

Aplicação monolítica

Page 11: Microservices - Quebrando gigantes em pequenos

@browser: hey @http_server get “/”?

Store service

Inventory Service

Shipping Service

Aplicação monolítica / single page

UI

@http_server, okay here are the

html/js and lets make theses ajax

calls to backend

Page 12: Microservices - Quebrando gigantes em pequenos

“como é isso tudo

em prática?”

Page 13: Microservices - Quebrando gigantes em pequenos

Aplicação monolítica

usuários

inventário

ordem de pedidos

pós vendas

diversos components em uma base de código

Page 14: Microservices - Quebrando gigantes em pequenos

“quais são os obstáculos das

aplicações

monolíticas?”

Page 15: Microservices - Quebrando gigantes em pequenos

programadores assustados

● base de código normalmente muito grande● é difícil dominar a camada de negócio● possível demora ao carregar projeto na IDE● difícil manter o versionamento de código

Page 16: Microservices - Quebrando gigantes em pequenos

dificuldades para deploys

frequentes

● um “;” faltando pode quebrar a app inteira● para alterar um componente precisa fazer redeploy

da app inteira● ciclos longos de QA● medo de fazer mudanças

Page 17: Microservices - Quebrando gigantes em pequenos

dificuldades para criar novas

funcionalidades

● vai performar?● diversos times trabalhando no mesmo code base● insegurança nas alterações

Page 18: Microservices - Quebrando gigantes em pequenos

longa vida com seu stack

escolhido

● escolha de framework/linguagem é vida longa● migração de código para outras linguagens

normalmente são custosas● não é possível tirar melhor proveito das ferramentas

Page 19: Microservices - Quebrando gigantes em pequenos

“e onde entram

os microservices?”

Page 20: Microservices - Quebrando gigantes em pequenos

para tentar arrumar a casa…

Page 21: Microservices - Quebrando gigantes em pequenos

para tentar arrumar a casa…

escolher stacksreaproveitar

serviços

dividir responsabilidades

facilitar a escalabilidade falhar pequeno

...

fácil de atualizar

Page 22: Microservices - Quebrando gigantes em pequenos

http://www.slideshare.net/alvarosanchezmariscal/stateless-authentication-for-microservices

Page 23: Microservices - Quebrando gigantes em pequenos

Menores e simplesAo contrário das aplicações monolíticas, os microservices vão focar

em pequenos contextos/soluções o que leva:

● Ser mais fácil de entender

● Menor code base

● Rápido de rodar e fazer deploy

● Reduzir/Dividir developers por

serviços

● Maior controle domínio do

contexto

Page 24: Microservices - Quebrando gigantes em pequenos

liberdadeescolha o stack que melhor resolva seu problema, mude, jogue fora,

refaça...

Page 25: Microservices - Quebrando gigantes em pequenos

“como quebrar suas aplicações

em microservices?”

Page 26: Microservices - Quebrando gigantes em pequenos

Utilizando alguns conceitos

estratégicos

Page 27: Microservices - Quebrando gigantes em pequenos

Conceitos:Domínio: Venda de produtos onlines (e-commerce)

Sub-domínios: Venda, Estoque, Controle financeiro, Pós

venda, Histórico de compras, Pagamento, Logística,

etc…

Contextos Delimitadores: “Usuários” podem ter contexto

diferentes no sub-dominío de venda, e no subdomínio

de pós vendas.

Page 28: Microservices - Quebrando gigantes em pequenos

Bounded Context

http://martinfowler.com/bliki/BoundedContext.html

Page 29: Microservices - Quebrando gigantes em pequenos

mapear os contextos e suas comunicações,

possibilita

a quebra em serviços

distintos!

Page 30: Microservices - Quebrando gigantes em pequenos

“bacana mas

como eles se falam?”

Page 31: Microservices - Quebrando gigantes em pequenos

depende...

Pode ser comunicação síncrona ou assíncrona

HTTP/REST JSON ou Protobuf

Messages Queue (ZeroMQ, RabbitMQ, etc..)

Assim como pode variar o protocolo TCP/UDP...

Page 32: Microservices - Quebrando gigantes em pequenos

“e onde rodam os

microservices?”

Page 33: Microservices - Quebrando gigantes em pequenos

usam e abusam da

cloud

● virtual machines

● containers (dockers)

● servidores físicos

● instâncias separadas

● instâncias juntas

Page 34: Microservices - Quebrando gigantes em pequenos

“quem anda usando

microservices?”

Page 35: Microservices - Quebrando gigantes em pequenos
Page 36: Microservices - Quebrando gigantes em pequenos

http://pt.slideshare.net/adriancockcroft/goto-berlin

Page 37: Microservices - Quebrando gigantes em pequenos

mas nem tudo são

flores...

Page 38: Microservices - Quebrando gigantes em pequenos

complexidade de sistemas

distribuídos

1. The network is reliable.

2. Latency is zero.

3. Bandwidth is infinite.

4. The network is secure.

5. Topology doesn't change.

6. There is one administrator.

7. Transport cost is zero.

8. The network is homogeneous.

http://www.rgoarchitects.com/Files/fallacies.pdf

“8 falácias de sistemas distruídos”

Page 39: Microservices - Quebrando gigantes em pequenos

controlar inconsistências, sem

“transaction”

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 40: Microservices - Quebrando gigantes em pequenos

testar sistemas distribuídos é

complexo!

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 41: Microservices - Quebrando gigantes em pequenos

deploy de vários serviços…

automação.

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 42: Microservices - Quebrando gigantes em pequenos

versionamento, fallback,

coordenadação para evitar quebras

de interface de contrato!

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 43: Microservices - Quebrando gigantes em pequenos

serviços poliglotas, significa

desenvolvedores poliglotas...

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 44: Microservices - Quebrando gigantes em pequenos

duplicação de esforços...

http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

Page 45: Microservices - Quebrando gigantes em pequenos

monitoramento da aplicações

Page 46: Microservices - Quebrando gigantes em pequenos

log de aplicações

Page 47: Microservices - Quebrando gigantes em pequenos

tolerâncias a falhas

Page 48: Microservices - Quebrando gigantes em pequenos

“bom então qualé?”

Page 49: Microservices - Quebrando gigantes em pequenos

é algo que está em

alta

Pode vir a se tornar uma tendência para

os projetos maiores web, por ser uma

tendência/hype, padrões de projetos,

padrões de arquitetura e ferramentas

estão sendo criados para atender essa

demanda.

http://microservices.io/

Page 50: Microservices - Quebrando gigantes em pequenos

Não é pau de toda

obra…

Mas pode ser uma solução eficaz para

alguns tipos de projetos onde reutilização

de serviços se da necessário e ou

escalabilidade e divisão de esforços são

necessários...

Page 51: Microservices - Quebrando gigantes em pequenos

eras isso qualquer coisa

krolow.com.br =)