SlideShare uma empresa Scribd logo
Microservices
Tiago Dolphine
Tiago Marchetti Dolphine
tiagodolphine@gmail.com
@tiagodolphine
Sobre?
Agenda
• O que é ? como surgiu? Porque?
• Decompondo uma aplicação em microservices
• Comunicação e integração
• Estrutura básica
• Desafios (micro?)
• Case de arquitetura microservices
Vamos imaginar que estamos desenvolvendo
uma loja virtual ...
Browser /
Mobile App
App Server/Container (Tomcat/Jetty)
Framework (Spring/JavaEE)
LB
X Scaling
DB
Front End
Framework
Product Svc
Order Svc
Pricing Svc
Stock Svc
ORM
(Hibernate)
Aplicação Monolítica
Simplicidade em:
• Desenvolver
• Testar
• Deploy
• Escalar
É natural pois é como aprendemos !
Aplicação Monolítica
Porém...
• Crescimento do negócio
• Aumento da complexidade
do negócio
E para os desenvolvedores?
E para os desenvolvedores?
Enquanto isso em nossa loja virtual ...
Aumento de vendas 
Serviço de Pedidos  Gargalo
Vamos escalar nossa aplicação !
App Server/Container (Tomcat/Jetty)
Framework (Spring/JavaEE)
Front End
Framework
Product Svc
Order Svc
Pricing Svc
Stock Svc
ORM
(Hibernate)
App Server/Container (Tomcat/Jetty)
Framework (Spring/JavaEE)
Front End
Framework
Product Svc
Order Svc
Pricing Svc
Stock Svc
ORM
(Hibernate)
App Server/Container (Tomcat/Jetty)
Framework (Spring/JavaEE)
Front End
Framework
Product Svc
Order Svc
Pricing Svc
Stock Svc
ORM
(Hibernate)
App Server/Container (Tomcat/Jetty)
Framework (Spring/JavaEE)
Front End
Framework
Product Svc
Order Svc
Pricing Svc
Stock Svc
ORM
(Hibernate)
• Custos desnecessários (Cloud $$)
• Subaproveitamento de recurso
computacional
Preciso escalar toda a aplicação !
http://microservices.io/articles/scalecube.html
Alguns pontos negativos
• Redeploy de toda a aplicação para pequenas mudanças
• Alto tempo de interrupções
• Risco de falhas
• Dificulta mudanças
• Updates menos frequentes
A microservice architecture builds software as suites of collaborating
services.
(Martin Fowler)
O que é? Qual vantagem?
• Conjunto de pequenos serviços
• Foco em funcionalidade
• Independência
• Tecnologias heterogêneas e poliglotas
• Escalabilidade em gargalos
• DRY  Reuso de funcionalidades
• Deploy independente (favorece CI/CD)
• Equipes menores e focadas
Como definir um bom microservice?
• Funcionalidades relacionados devem ficar juntas
• Baixo acoplamento / Alta coesão
• Estudar e delimitar o escopo do serviço
• Modelar pensando em funcionalidades, não nos dados
• Bounded Contexts (modelo interno e modelo exposto)
• Módulos (app monólítica) candidatos a microservices
O menor possível, porém grande o suficiente para
representar o seu domínio
Como ficaria nossa loja virtual?
Browser /
Mobile App
LB
Y Scaling
DB
Micro container framework
Order Svc
DB
Stock Svc
Front End
DB
Product Svc
DB
Pricing Svc
http://microservices.io/articles/scalecube.html
Integração e comunicação
• Como um serviço se comunica com outro?
Chamada à funções  Chamadas à APIs remotas
• Síncrono: request/response
• Assíncrono: request/callback
Orquestração vs coreografia
Vamos pensar no processo de criação de um novo cliente
Um serviço gerencia quando tomar ações Cada serviço sabe quando tomar ações diante de um evento
REST
• Mecanismo síncrono
• Recurso  É o foco do serviço
• Desacoplamento do exposto para o armazenado
• HTTP
• Semântica e verbos (ex: GET, POST, PUT, DELETE)
• Caching proxies
• Load balancers
• Ferramentas de monitoramento
• Métodos de segurança
API Gateway
API
GW
Web
App
Mobile
App
Customer
Product
Stock
Pricing
• Ponto único de entrada
• Agregação de dados
• API otimizada para diferentes
clientes
• Evita exposição de dados
desnecessários
• Tradução de protocolo
• Cross domain e Same-origin policy
Mensageria
• Mecanismo assíncrono (baseado em eventos)
• Publish/Subscribe
• Incentiva a coreografia e baixo acoplamento
• Padrões para mensagens (AMQP, JMS...)
• Message Broker (RabbitMQ, ActiveMQ, HornetQ...)
• Aumenta complexidade
Híbrido
Stock
Pricing
Email
TopicOrderFrontEnd
Product
CustomerDB
REST/HTTP
Vamos pensar num fluxo de compra
Falhas são inevitáveis
• Estar preparado para falhas
• Assumir que as chamadas e serviços podem falhar
• Rede é instável
• Recuperação à falhas
• Adotar este pensamento em tudo que for desenvolvido
Estrutura básica de um Microservice
Recursos
Serviço
Modelo
do Domínio
Repositórios
ORM / Framework Dados
Gateway
Recursos
Serviço
Modelo
doDomínio
Repositórios
ORM/Framework
Dados
Gateway
Deploy
• Instância
• Serviços isolados
• Sem conflito de recursos
• Aloca todo recurso disponível
• Virtual Machine
• Facilidade de escalar  add mais VMs
• Controle de CPU e memória
• VM lenta de buildar e startar
• Container
• Rápido para buildar e startar
• Não necessita startar todo SO, apenas o processo do serviço
E como ficam os times de
desenvolvimento?
"Qualquer empresa que projeta um
sistema, inevitavelmente produz um
projeto cuja estrutura é uma cópia
da estrutura de comunicação da
organização“...
• Times multidisciplinares
• Paraleliza mais facilmente o desenvolvimento
• Cada time é responsável (dono) por cada microservice
Microservices no ifood...
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Vamos a um exemplo de código
... com Spring boot
https://github.com/tiagodolphine/microservices
Concluindo...
• Maior complexidade!
• Preciso de microservices para o meu problema?
• Estar sempre ciente dos desafios que terei que enfrentar!
• Descoberta de serviços
• Operações transacionais
• Testes
• Monitoramento
• Teorema CAP (consistency, availability, partition tolerance)
• Dia a dia do desenvolvedor mais agitado e divertido 
Algumas referências
• Microservices (Martin Fowler e James Lewis)
• microservices.io (Chris Richardson)
• Building "Bootiful" Microservices with Spring Boot (Josh Long)
• Testing Strategies in a Microservice Architecture (Toby Clemson)
• Building Microservices
Designing Fine Grained Systems (Sam Newman) fev/2015
Tiago Marchetti Dolphine
tiagodolphine@gmail.com
@tiagodolphine
Dúvidas ?
Algumas idéias de tecnologias
• Micro container: Spring Boot, Play, DropWizard
• Comunicação:
• REST : Spring MVC, JAX-RS
• Mensageria: Spring AMQP com RabbitMQ
• Deploy: Container com Docker
• Monitoramento: Logstash, Kibana, NewRelic, Consul
• Service Discovery: Consul

Mais conteúdo relacionado

PDF
Vantagens e desvantagens de uma arquitetura microservices
PDF
Workshop soa, microservices e devops
PPTX
Microservices
PDF
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
PPTX
Integração utilizando REST API e Microservices
PPTX
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
PDF
Introdução à Microservices
PDF
Vantagens e desvantagens de uma arquitetura microservices
Workshop soa, microservices e devops
Microservices
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
Integração utilizando REST API e Microservices
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Introdução à Microservices

Mais procurados (20)

PPTX
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
PPTX
Integrating Microservices
PPTX
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
PPTX
Amadurecendo Equipes com Microservices
PDF
Microservices
PDF
A plataforma Azure da Microsoft
PPTX
Microservices - ALM Roadshow 2015
PPTX
Windows Azure Pack - Visão Geral
PPTX
Introdução ao Windows Azure - Sessão 1 (mais teórica)
PDF
Workshop Microservices - Arquitetura Microservices
PDF
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
PPTX
SQL over SMB3
PPTX
Windows Azure na Prática
PPTX
Azure Stack | Visão Geral
PPTX
A nova geração da arquitetura web para a era da nuvem
PPTX
Microservices - Quebrando gigantes em pequenos
PDF
TDC Floripa 2017 - Criando Microservices Reativos com Java
PDF
GUJavaSC - Mini-curso Java EE
PPTX
Windows Server 2016, System Center 2016 e OMS
PPTX
Copa microsoft - Windows Server 2008 R2 - Paulo e Igor
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Integrating Microservices
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Amadurecendo Equipes com Microservices
Microservices
A plataforma Azure da Microsoft
Microservices - ALM Roadshow 2015
Windows Azure Pack - Visão Geral
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Workshop Microservices - Arquitetura Microservices
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
SQL over SMB3
Windows Azure na Prática
Azure Stack | Visão Geral
A nova geração da arquitetura web para a era da nuvem
Microservices - Quebrando gigantes em pequenos
TDC Floripa 2017 - Criando Microservices Reativos com Java
GUJavaSC - Mini-curso Java EE
Windows Server 2016, System Center 2016 e OMS
Copa microsoft - Windows Server 2008 R2 - Paulo e Igor
Anúncio

Destaque (20)

PPTX
Microservice vs. Monolithic Architecture
PPTX
TDC2016SP - Construindo Microserviços usando Spring Cloud
PDF
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
PDF
Migrando um legado para micro serviços
PPTX
Microserviços - Universidade Metodista - EETI 2016
PDF
Cloud computing & Spring Framework
PPTX
Qualific vaa 2009
PPTX
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
PPTX
O Spring está morto! Viva o Spring!
PDF
O poder das APIs
PPSX
Netshoes - API Gateway
PDF
Case Sensedia B2W
PDF
Case Sensedia Catho
PDF
Case Sensedia Cielo
PDF
To Microservices and Beyond
PDF
Soa Fundamentos
PDF
SOA e APIs: O que muda e o que segue!
PDF
Construindo APIs Mobile
PPTX
Repositorio SOA
PDF
Governança de Serviços Automatizada na Prática
Microservice vs. Monolithic Architecture
TDC2016SP - Construindo Microserviços usando Spring Cloud
Plataforma de Serviços de Infra-estrutura para Gerência de Mobilidade - SBRC/...
Migrando um legado para micro serviços
Microserviços - Universidade Metodista - EETI 2016
Cloud computing & Spring Framework
Qualific vaa 2009
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
O Spring está morto! Viva o Spring!
O poder das APIs
Netshoes - API Gateway
Case Sensedia B2W
Case Sensedia Catho
Case Sensedia Cielo
To Microservices and Beyond
Soa Fundamentos
SOA e APIs: O que muda e o que segue!
Construindo APIs Mobile
Repositorio SOA
Governança de Serviços Automatizada na Prática
Anúncio

Semelhante a Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015) (20)

PPTX
Microservices - Canal .NET Dev Weekend
PDF
Introdução a Microservices com Node.JS
PPTX
Uaijug ADF - spring boot - microservice - Introdução
PPTX
Microservices com Spring Boot e Spring Cloud Netflix
PPTX
Architecture performance using micro services
PDF
JUGVale 14 - 14/09/2019
PPTX
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
PDF
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
PPTX
Microservices
PDF
Microservices arquitetura parte 2
PDF
Arquitetura de Microservicos
PDF
Fundamentos em Containers
PDF
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
PDF
Overview arquitetura
PDF
Um método para o desenvolvimento de software baseado em microsserviços
PDF
Conheça o Cloud Foundry no HCP
PPTX
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
PPTX
Microservices & Service Mesh Pattern presentation
PDF
Microservices arquitetura - parte1
PDF
Microservices com ASP.NET 5
Microservices - Canal .NET Dev Weekend
Introdução a Microservices com Node.JS
Uaijug ADF - spring boot - microservice - Introdução
Microservices com Spring Boot e Spring Cloud Netflix
Architecture performance using micro services
JUGVale 14 - 14/09/2019
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Microservices
Microservices arquitetura parte 2
Arquitetura de Microservicos
Fundamentos em Containers
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
Overview arquitetura
Um método para o desenvolvimento de software baseado em microsserviços
Conheça o Cloud Foundry no HCP
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Microservices & Service Mesh Pattern presentation
Microservices arquitetura - parte1
Microservices com ASP.NET 5

Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)

  • 3. Agenda • O que é ? como surgiu? Porque? • Decompondo uma aplicação em microservices • Comunicação e integração • Estrutura básica • Desafios (micro?) • Case de arquitetura microservices
  • 4. Vamos imaginar que estamos desenvolvendo uma loja virtual ...
  • 5. Browser / Mobile App App Server/Container (Tomcat/Jetty) Framework (Spring/JavaEE) LB X Scaling DB Front End Framework Product Svc Order Svc Pricing Svc Stock Svc ORM (Hibernate) Aplicação Monolítica
  • 6. Simplicidade em: • Desenvolver • Testar • Deploy • Escalar É natural pois é como aprendemos ! Aplicação Monolítica
  • 7. Porém... • Crescimento do negócio • Aumento da complexidade do negócio
  • 8. E para os desenvolvedores?
  • 9. E para os desenvolvedores?
  • 10. Enquanto isso em nossa loja virtual ... Aumento de vendas  Serviço de Pedidos  Gargalo
  • 11. Vamos escalar nossa aplicação !
  • 12. App Server/Container (Tomcat/Jetty) Framework (Spring/JavaEE) Front End Framework Product Svc Order Svc Pricing Svc Stock Svc ORM (Hibernate) App Server/Container (Tomcat/Jetty) Framework (Spring/JavaEE) Front End Framework Product Svc Order Svc Pricing Svc Stock Svc ORM (Hibernate) App Server/Container (Tomcat/Jetty) Framework (Spring/JavaEE) Front End Framework Product Svc Order Svc Pricing Svc Stock Svc ORM (Hibernate) App Server/Container (Tomcat/Jetty) Framework (Spring/JavaEE) Front End Framework Product Svc Order Svc Pricing Svc Stock Svc ORM (Hibernate) • Custos desnecessários (Cloud $$) • Subaproveitamento de recurso computacional Preciso escalar toda a aplicação !
  • 14. Alguns pontos negativos • Redeploy de toda a aplicação para pequenas mudanças • Alto tempo de interrupções • Risco de falhas • Dificulta mudanças • Updates menos frequentes
  • 15. A microservice architecture builds software as suites of collaborating services. (Martin Fowler)
  • 16. O que é? Qual vantagem? • Conjunto de pequenos serviços • Foco em funcionalidade • Independência • Tecnologias heterogêneas e poliglotas • Escalabilidade em gargalos • DRY  Reuso de funcionalidades • Deploy independente (favorece CI/CD) • Equipes menores e focadas
  • 17. Como definir um bom microservice? • Funcionalidades relacionados devem ficar juntas • Baixo acoplamento / Alta coesão • Estudar e delimitar o escopo do serviço • Modelar pensando em funcionalidades, não nos dados • Bounded Contexts (modelo interno e modelo exposto) • Módulos (app monólítica) candidatos a microservices O menor possível, porém grande o suficiente para representar o seu domínio
  • 18. Como ficaria nossa loja virtual?
  • 19. Browser / Mobile App LB Y Scaling DB Micro container framework Order Svc DB Stock Svc Front End DB Product Svc DB Pricing Svc
  • 21. Integração e comunicação • Como um serviço se comunica com outro? Chamada à funções  Chamadas à APIs remotas • Síncrono: request/response • Assíncrono: request/callback
  • 22. Orquestração vs coreografia Vamos pensar no processo de criação de um novo cliente Um serviço gerencia quando tomar ações Cada serviço sabe quando tomar ações diante de um evento
  • 23. REST • Mecanismo síncrono • Recurso  É o foco do serviço • Desacoplamento do exposto para o armazenado • HTTP • Semântica e verbos (ex: GET, POST, PUT, DELETE) • Caching proxies • Load balancers • Ferramentas de monitoramento • Métodos de segurança
  • 24. API Gateway API GW Web App Mobile App Customer Product Stock Pricing • Ponto único de entrada • Agregação de dados • API otimizada para diferentes clientes • Evita exposição de dados desnecessários • Tradução de protocolo • Cross domain e Same-origin policy
  • 25. Mensageria • Mecanismo assíncrono (baseado em eventos) • Publish/Subscribe • Incentiva a coreografia e baixo acoplamento • Padrões para mensagens (AMQP, JMS...) • Message Broker (RabbitMQ, ActiveMQ, HornetQ...) • Aumenta complexidade
  • 27. Falhas são inevitáveis • Estar preparado para falhas • Assumir que as chamadas e serviços podem falhar • Rede é instável • Recuperação à falhas • Adotar este pensamento em tudo que for desenvolvido
  • 28. Estrutura básica de um Microservice Recursos Serviço Modelo do Domínio Repositórios ORM / Framework Dados Gateway Recursos Serviço Modelo doDomínio Repositórios ORM/Framework Dados Gateway
  • 29. Deploy • Instância • Serviços isolados • Sem conflito de recursos • Aloca todo recurso disponível • Virtual Machine • Facilidade de escalar  add mais VMs • Controle de CPU e memória • VM lenta de buildar e startar • Container • Rápido para buildar e startar • Não necessita startar todo SO, apenas o processo do serviço
  • 30. E como ficam os times de desenvolvimento?
  • 31. "Qualquer empresa que projeta um sistema, inevitavelmente produz um projeto cuja estrutura é uma cópia da estrutura de comunicação da organização“...
  • 32. • Times multidisciplinares • Paraleliza mais facilmente o desenvolvimento • Cada time é responsável (dono) por cada microservice
  • 35. Vamos a um exemplo de código ... com Spring boot https://github.com/tiagodolphine/microservices
  • 36. Concluindo... • Maior complexidade! • Preciso de microservices para o meu problema? • Estar sempre ciente dos desafios que terei que enfrentar! • Descoberta de serviços • Operações transacionais • Testes • Monitoramento • Teorema CAP (consistency, availability, partition tolerance) • Dia a dia do desenvolvedor mais agitado e divertido 
  • 37. Algumas referências • Microservices (Martin Fowler e James Lewis) • microservices.io (Chris Richardson) • Building "Bootiful" Microservices with Spring Boot (Josh Long) • Testing Strategies in a Microservice Architecture (Toby Clemson) • Building Microservices Designing Fine Grained Systems (Sam Newman) fev/2015
  • 39. Algumas idéias de tecnologias • Micro container: Spring Boot, Play, DropWizard • Comunicação: • REST : Spring MVC, JAX-RS • Mensageria: Spring AMQP com RabbitMQ • Deploy: Container com Docker • Monitoramento: Logstash, Kibana, NewRelic, Consul • Service Discovery: Consul