SlideShare uma empresa Scribd logo
1 de 51
microservices
introdução a quebra de gigantes em pequenos
Vinícius Krolow
FULL STACK DEVELOPER
@krolow
krolow.com.br
“mas, o que são
microservices?”
serviços 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?
hipsters fazendo sistemas
distribuídos
ps ax | grep node | awk '{print $1}'
pipeline para unix
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.
“como fazemos aplicações web
normalmente?”
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
@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
“como é isso tudo
em prática?”
Aplicação monolítica
usuários
inventário
ordem de pedidos
pós vendas
diversos components em uma base de código
“quais são os obstáculos das
aplicações
monolíticas?”
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
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
dificuldades para criar novas
funcionalidades
● vai performar?
● diversos times trabalhando no mesmo code base
● insegurança nas alterações
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
“e onde entram
os microservices?”
para tentar arrumar a casa…
para tentar arrumar a casa…
escolher stacksreaproveitar
serviços
dividir responsabilidades
facilitar a escalabilidade falhar pequeno
...
fácil de atualizar
http://www.slideshare.net/alvarosanchezmariscal/stateless-authentication-for-microservices
Menores e simples
Ao 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
liberdade
escolha o stack que melhor resolva seu problema, mude, jogue fora,
refaça...
“como quebrar suas aplicações
em microservices?”
Utilizando alguns conceitos
estratégicos
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.
Bounded Context
http://martinfowler.com/bliki/BoundedContext.html
mapear os contextos e suas comunicações,
possibilita
a quebra em serviços
distintos!
“bacana mas
como eles se falam?”
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...
“e onde rodam os
microservices?”
usam e abusam da
cloud
● virtual machines
● containers (dockers)
● servidores físicos
● instâncias separadas
● instâncias juntas
“quem anda usando
microservices?”
http://pt.slideshare.net/adriancockcroft/goto-berlin
mas nem tudo são
flores...
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”
controlar inconsistências, sem
“transaction”
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
testar sistemas distribuídos é
complexo!
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
deploy de vários serviços…
automação.
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
versionamento, fallback,
coordenadação para evitar quebras
de interface de contrato!
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
serviços poliglotas, significa
desenvolvedores poliglotas...
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
duplicação de esforços...
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
monitoramento da aplicações
log de aplicações
tolerâncias a falhas
“bom então qualé?”
é 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/
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...
eras isso qualquer coisa
krolow.com.br =)

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Micro serviços com node.js
Micro serviços com node.jsMicro serviços com node.js
Micro serviços com node.js
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Micro serviços ppt
Micro serviços pptMicro serviços ppt
Micro serviços ppt
 
Microframeworksphp
MicroframeworksphpMicroframeworksphp
Microframeworksphp
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Integração e APIs com Mulesoft
Integração e APIs com MulesoftIntegração e APIs com Mulesoft
Integração e APIs com Mulesoft
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 
Microservices
MicroservicesMicroservices
Microservices
 
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviçosTCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Fluxo DevOps NG - Equipe ADVPL
Fluxo DevOps NG - Equipe ADVPLFluxo DevOps NG - Equipe ADVPL
Fluxo DevOps NG - Equipe ADVPL
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API Gateway
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
 

Destaque

Structuring apps in Scala
Structuring apps in ScalaStructuring apps in Scala
Structuring apps in Scala
Phil Calçado
 
Evolutionary Architecture at Work
Evolutionary  Architecture at WorkEvolutionary  Architecture at Work
Evolutionary Architecture at Work
Phil Calçado
 

Destaque (20)

Object Calisthenics
Object CalisthenicsObject Calisthenics
Object Calisthenics
 
Machucando o código - Técnicas para escrever um código com uma maior legibil...
Machucando o código - Técnicas para escrever um código com uma maior legibil...Machucando o código - Técnicas para escrever um código com uma maior legibil...
Machucando o código - Técnicas para escrever um código com uma maior legibil...
 
programming.success - carreira de programador
programming.success - carreira de programadorprogramming.success - carreira de programador
programming.success - carreira de programador
 
Empregado like a boss
Empregado  like a boss Empregado  like a boss
Empregado like a boss
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHP
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Design patterns
Design patternsDesign patterns
Design patterns
 
APIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodAPIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog Food
 
Os cuidados e os limites do Responsive Web Design
Os cuidados e os limites do Responsive Web DesignOs cuidados e os limites do Responsive Web Design
Os cuidados e os limites do Responsive Web Design
 
CSS 4 - What's coming up
CSS 4 - What's coming upCSS 4 - What's coming up
CSS 4 - What's coming up
 
Structuring apps in Scala
Structuring apps in ScalaStructuring apps in Scala
Structuring apps in Scala
 
Cloud Reliability Patterns
Cloud Reliability PatternsCloud Reliability Patterns
Cloud Reliability Patterns
 
Desafio dos testes em uma arquitetura de micro serviços
Desafio dos testes em uma arquitetura de micro serviçosDesafio dos testes em uma arquitetura de micro serviços
Desafio dos testes em uma arquitetura de micro serviços
 
Evolutionary Architecture at Work
Evolutionary  Architecture at WorkEvolutionary  Architecture at Work
Evolutionary Architecture at Work
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a Function
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
 
Rhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionRhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a Function
 
Vida longa para SOA com microservices
Vida longa para SOA com microservicesVida longa para SOA com microservices
Vida longa para SOA com microservices
 
Um pequeno estudo sobre a microsoft
Um pequeno estudo sobre a microsoftUm pequeno estudo sobre a microsoft
Um pequeno estudo sobre a microsoft
 
Integração utilizando REST API e Microservices
Integração utilizando REST API e MicroservicesIntegração utilizando REST API e Microservices
Integração utilizando REST API e Microservices
 

Semelhante a Microservices - Quebrando gigantes em pequenos

Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
Leandro Silva
 

Semelhante a Microservices - Quebrando gigantes em pequenos (20)

Microserviços
MicroserviçosMicroserviços
Microserviços
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Microservices arquitetura parte 2
Microservices arquitetura parte 2Microservices arquitetura parte 2
Microservices arquitetura parte 2
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Microservices
MicroservicesMicroservices
Microservices
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
 
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud nativeTDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
 

Último

Último (8)

COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor Sucroenergético
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Microservices - Quebrando gigantes em pequenos