SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Decolando seus
Micro-serviços na Spring Cloud
Rodrigo Cândido da Silva
@rcandidosilva
About Me
• Treinamentos
• http://voffice.com.br
• Software Architect
• http://integritastech.com
• JUG Leader do GUJavaSC
• http://gujavasc.org
• Twitter
• @rcandidosilva
• Contatos
• http://rodrigocandido.me
Agenda
• Monolito vs. Microservices
• Principais Desafios
• Spring Cloud + Netflix OSS
• Spring Cloud Config + Bus
• Netflix Eureka
• Netflix Ribbon
• Netflix Hystrix + Turbine
• Netflix Zuul
• Spring Cloud Security
• Conclusões
• Perguntas
Monolito vs. Microservices
Microservices
• Características
• Pequenos
• Deployment interdependentes
• Independente de tecnologia
• Independente de infra-estrutura
"Small independent component with well-
defined boundaries that’s doing one thing, but
doing it well"
Microservices
• Como torná-los auto-curáveis?
• Gerenciamento de configuração
• Registro e descoberta dos serviços
• Roteamento
• Balanceamento de carga
• Tolerância à falhas
• Monitoramento
• API
• Routing / Health check
• Microservices
• Logging
• Data Management
• Eureka
• Hystrix + Turbine
• Ribbon
• Zuul
• + alguns outros…
Spring Cloud
“Toolset designed for building distributed systems”
Spring Cloud + Netflix OSS
"Casamento perfeito para criação de
microservices auto-curáveis"
Gerenciamento de configuração Spring Cloud Config + Bus
Descoberta de serviços Netflix Eureka
Balanceamento de carga Netflix Ribbon
Tolerância à falhas Netflix Hystrix + Turbine
Roteamento Netflix Zuul
Segurança Spring Cloud Security
Spring Cloud + Netflix OSS
Exemplo de Utilização
Spring Cloud Config
“Gerenciamento de configuração para microservices"
• Centraliza a configuração da aplicação
• Permite atualizações dinâmicas
• Versionado
• Suporte à rollback
• Suporta configuração via repositórios
• Git, SVN, filesystem
• Permite atualização via barramento
• Spring Cloud Bus
Spring Cloud Config
Demo
• Gerenciamento de Configuração
• Spring Cloud Config + Spring Cloud Bus
• https://github.com/rcandidosilva/spring-cloud-sample
Netflix Eureka
"Transparência de localização aos microservices"
• Registro de serviços REST based
• Suporte à replicação
• Cache aplicado no stub cliente
• Resiliente
• Rápido… mas não consistente
• Fornece o alicerce para outros serviços
• Mantém registro de clientes com metadados
Netflix Eureka
Demo
• Transparência de Localização
• Spring Cloud + Netflix Eureka
• https://github.com/rcandidosilva/spring-cloud-sample
Netflix Ribbon
• Balanceamento decentralizado no cliente
• Resiliente
• Suporte à tolerância a falhas
• Trabalha com múltiplos protocolos
• HTTP, TCP, UDP
• Modelo assíncrono e reativo
• Suporte à caching e batching
• Múltiplos algoritmos de balanceamento
"Balanceamento de carga para microservices"
Netflix Ribbon
Demo
• Balanceamento de Carga
• Spring Cloud + Netflix Ribbon
• https://github.com/rcandidosilva/spring-cloud-sample
Netflix Hystrix
“Tolerância à falhas para microservices"
• Implementa padrão circuit breakers
• Fornece monitoramento aos serviços
• Hystrix dashboard
• Suporta comandos assíncronos
• Utiliza diferentes thread pools
• Pode implementar timeouts
Netflix Hystrix
• Circuit Breaker Pattern
• Máquina de estados
• Closed, Open, Half-Open
• Falha não é propagada para
chamada do cliente
Hystrix Dashboard
Hystrix Dashboard + Turbine
Demo
• Tolerância a Falhas
• Spring Cloud + Netflix Hystrix
• https://github.com/rcandidosilva/spring-cloud-sample
Netflix Zuul
“Roteamento centralizado para microservices"
• Fornece único ponto de entrada para os serviços
• Roteamento e balanceamento na JVM
• Cria uma rota para cada serviço no Eureka
• Define filtros para pontos de entrada
• Similar outros roteamentos
• httpd, nginx, CF go router
Netflix Zuul
Demo
• Roteamento centralizado
• Spring Cloud + Netflix Zuul
• https://github.com/rcandidosilva/spring-cloud-sample
Spring Cloud Security
“Segurança aplicada para microservices"
• Integração Spring Security + OAuth2
• SSO com OAuth2 e OpenID Connect
• Proteção dos serviços com tokens (JWT)
• Transmissão tokens entre SSO e apps
• OAuth2 + OpenID Connect + JWT ;)
Spring Cloud Security
Discovery	
Client
Relying Party
Resource
Server
Get an access token
& an ID Token (JWT)
Use an access token
Authorization
Server
Iden.ty	Provider	or	
IDP	or		
OpenID	Provider	or	
OP	
	
	
Authorization
Endpoint
Token
Endpoint
Important Stuff
Userinfo
Endpoint
Registration
Endpoint
JWKS
Endpoint
JWKS
Endpoint
Validate
(JWT)
ID Token
/.well-known	
/webfinger	
/openid-configura.on
Check Session IFrame
End Session Endpoint
Conclusões…
• Microservices são sistemas distribuídos
• Sistemas distribuídos são complexos
• Netflix OSS define ótimas ferramentas para
implementação com microservices
• Spring Cloud
• Ótima abstração para Netflix OSS
• Fácil utilização (via anotações)
• Integração com ecossistema Spring
• Enjoy it ;)
Perguntas
?
Referências
• http://projects.spring.io/spring-boot/
• http://projects.spring.io/spring-cloud/
• https://netflix.github.io/
• https://github.com/Netflix/zuul
• https://github.com/Netflix/eureka
• https://github.com/Netflix/ribbon
• https://github.com/Netflix/Hystrix
• http://www.pwc.com/us/en/technology-forecast/2014/cloud-computing/features/
microservices.html
• http://martinfowler.com/articles/microservices.html
• http://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-with-
spring-cloud-and-netflix-oss-part-1/
• http://www.javaworld.com/article/2927920/cloud-computing/build-self-healing-
distributed-systems-with-spring-cloud.html
Muito obrigado!
@rcandidosilva
rodrigocandido.me

Mais conteúdo relacionado

Mais procurados

JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTRodrigo Cândido da Silva
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootRodrigo Cândido da Silva
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaRodrigo Cândido da Silva
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesRodrigo Cândido da Silva
 
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...Tiago Marchetti Dolphine
 
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poaReduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poaFabio Hara
 
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)Tiago Marchetti Dolphine
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
Windows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralWindows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralFabio Hara
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesEdgar Silva
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Renato Groff
 
Windows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSWindows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSFabio Hara
 
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de ImplementaçãoProtegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de ImplementaçãoRodrigo Cândido da Silva
 

Mais procurados (20)

JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
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...
 
Microservices
MicroservicesMicroservices
Microservices
 
Integrando infraestruturas híbridas
Integrando infraestruturas híbridas Integrando infraestruturas híbridas
Integrando infraestruturas híbridas
 
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poaReduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
 
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)
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
Windows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralWindows Azure Pack - Visão Geral
Windows Azure Pack - Visão Geral
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e Suportes
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015
 
Windows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSWindows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMS
 
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de ImplementaçãoProtegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
 
Preparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicosPreparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicos
 

Destaque

10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antespriscilaelpo
 
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...Rodrigo Cândido da Silva
 
Suportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EESuportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EERodrigo Cândido da Silva
 
Batch Processing - Processamento em Lotes no Mundo Corporativo
Batch Processing - Processamento em Lotes no Mundo CorporativoBatch Processing - Processamento em Lotes no Mundo Corporativo
Batch Processing - Processamento em Lotes no Mundo CorporativoRodrigo Cândido da Silva
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaRodrigo Cândido da Silva
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EERodrigo Cândido da Silva
 
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresFernando Franquini
 
Sucesso e derrota na Arquitetura Agile
Sucesso e derrota na Arquitetura AgileSucesso e derrota na Arquitetura Agile
Sucesso e derrota na Arquitetura AgileSérgio Giraldo
 
TDC Floripa - Trilha iOS - Debate sobre o futuro da plataforma
TDC Floripa - Trilha iOS - Debate sobre o futuro da plataformaTDC Floripa - Trilha iOS - Debate sobre o futuro da plataforma
TDC Floripa - Trilha iOS - Debate sobre o futuro da plataformaDouglas Fischer
 
Kotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesKotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesAlex Magalhaes
 
Arquitetura para entrega continua
Arquitetura para entrega continuaArquitetura para entrega continua
Arquitetura para entrega continuaLeonardo Kobus
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2Rodrigo Cândido da Silva
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 

Destaque (20)

GUJavaSC - Unit Testing com Java EE
GUJavaSC - Unit Testing com Java EEGUJavaSC - Unit Testing com Java EE
GUJavaSC - Unit Testing com Java EE
 
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
 
GUJavaSC - Java EE 7 In Action
GUJavaSC - Java EE 7 In ActionGUJavaSC - Java EE 7 In Action
GUJavaSC - Java EE 7 In Action
 
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
 
Data driven quality - tdc2016
Data driven quality - tdc2016Data driven quality - tdc2016
Data driven quality - tdc2016
 
Suportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EESuportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EE
 
Batch Processing - Processamento em Lotes no Mundo Corporativo
Batch Processing - Processamento em Lotes no Mundo CorporativoBatch Processing - Processamento em Lotes no Mundo Corporativo
Batch Processing - Processamento em Lotes no Mundo Corporativo
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com Java
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
 
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
 
Sucesso e derrota na Arquitetura Agile
Sucesso e derrota na Arquitetura AgileSucesso e derrota na Arquitetura Agile
Sucesso e derrota na Arquitetura Agile
 
TDC Floripa - Trilha iOS - Debate sobre o futuro da plataforma
TDC Floripa - Trilha iOS - Debate sobre o futuro da plataformaTDC Floripa - Trilha iOS - Debate sobre o futuro da plataforma
TDC Floripa - Trilha iOS - Debate sobre o futuro da plataforma
 
Kotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesKotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
 
Arquitetura para entrega continua
Arquitetura para entrega continuaArquitetura para entrega continua
Arquitetura para entrega continua
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 

Semelhante a TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud

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 NetflixNatanael Fonseca
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Renato Groff
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API GatewayMarcos Barbero
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Renato Groff
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...Renato Groff
 
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çosThiago Pereira
 
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...Bruno Luiz Pereira da Silva
 
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...Bruno Luiz Pereira da Silva
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)Wellington Silva
 
Do mainframe para java, microservices e big data
Do mainframe para java, microservices e big dataDo mainframe para java, microservices e big data
Do mainframe para java, microservices e big dataRafael Monteiro e Pereira
 
DataLakers 2018 Qmeeting - São Paulo
DataLakers 2018 Qmeeting - São PauloDataLakers 2018 Qmeeting - São Paulo
DataLakers 2018 Qmeeting - São PauloEduardo Hahn
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 

Semelhante a TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud (20)

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
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API Gateway
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud Computing
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 
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
 
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
 
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)Do monolito aos microserviços com Docker (PHPSP+IMA)
Do monolito aos microserviços com Docker (PHPSP+IMA)
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Microservices
MicroservicesMicroservices
Microservices
 
Do mainframe para java, microservices e big data
Do mainframe para java, microservices e big dataDo mainframe para java, microservices e big data
Do mainframe para java, microservices e big data
 
Datalakers 2018 Qmeeting
Datalakers 2018 QmeetingDatalakers 2018 Qmeeting
Datalakers 2018 Qmeeting
 
DataLakers 2018 Qmeeting - São Paulo
DataLakers 2018 Qmeeting - São PauloDataLakers 2018 Qmeeting - São Paulo
DataLakers 2018 Qmeeting - São Paulo
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 

Mais de Rodrigo Cândido da Silva

Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesRodrigo Cândido da Silva
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EERodrigo Cândido da Silva
 
JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2Rodrigo Cândido da Silva
 
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EEJavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EERodrigo Cândido da Silva
 

Mais de Rodrigo Cândido da Silva (6)

Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Cloud Native Java EE
Cloud Native Java EECloud Native Java EE
Cloud Native Java EE
 
Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and Strategies
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
 
JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2JavaOne 2014 - Securing RESTful Resources with OAuth2
JavaOne 2014 - Securing RESTful Resources with OAuth2
 
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EEJavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
 

TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud

  • 1. Decolando seus Micro-serviços na Spring Cloud Rodrigo Cândido da Silva @rcandidosilva
  • 2. About Me • Treinamentos • http://voffice.com.br • Software Architect • http://integritastech.com • JUG Leader do GUJavaSC • http://gujavasc.org • Twitter • @rcandidosilva • Contatos • http://rodrigocandido.me
  • 3. Agenda • Monolito vs. Microservices • Principais Desafios • Spring Cloud + Netflix OSS • Spring Cloud Config + Bus • Netflix Eureka • Netflix Ribbon • Netflix Hystrix + Turbine • Netflix Zuul • Spring Cloud Security • Conclusões • Perguntas
  • 5. Microservices • Características • Pequenos • Deployment interdependentes • Independente de tecnologia • Independente de infra-estrutura "Small independent component with well- defined boundaries that’s doing one thing, but doing it well"
  • 6. Microservices • Como torná-los auto-curáveis? • Gerenciamento de configuração • Registro e descoberta dos serviços • Roteamento • Balanceamento de carga • Tolerância à falhas • Monitoramento
  • 7.
  • 8. • API • Routing / Health check • Microservices • Logging • Data Management • Eureka • Hystrix + Turbine • Ribbon • Zuul • + alguns outros…
  • 9.
  • 10. Spring Cloud “Toolset designed for building distributed systems”
  • 11. Spring Cloud + Netflix OSS "Casamento perfeito para criação de microservices auto-curáveis" Gerenciamento de configuração Spring Cloud Config + Bus Descoberta de serviços Netflix Eureka Balanceamento de carga Netflix Ribbon Tolerância à falhas Netflix Hystrix + Turbine Roteamento Netflix Zuul Segurança Spring Cloud Security
  • 12. Spring Cloud + Netflix OSS Exemplo de Utilização
  • 13. Spring Cloud Config “Gerenciamento de configuração para microservices" • Centraliza a configuração da aplicação • Permite atualizações dinâmicas • Versionado • Suporte à rollback • Suporta configuração via repositórios • Git, SVN, filesystem • Permite atualização via barramento • Spring Cloud Bus
  • 15. Demo • Gerenciamento de Configuração • Spring Cloud Config + Spring Cloud Bus • https://github.com/rcandidosilva/spring-cloud-sample
  • 16. Netflix Eureka "Transparência de localização aos microservices" • Registro de serviços REST based • Suporte à replicação • Cache aplicado no stub cliente • Resiliente • Rápido… mas não consistente • Fornece o alicerce para outros serviços • Mantém registro de clientes com metadados
  • 18. Demo • Transparência de Localização • Spring Cloud + Netflix Eureka • https://github.com/rcandidosilva/spring-cloud-sample
  • 19. Netflix Ribbon • Balanceamento decentralizado no cliente • Resiliente • Suporte à tolerância a falhas • Trabalha com múltiplos protocolos • HTTP, TCP, UDP • Modelo assíncrono e reativo • Suporte à caching e batching • Múltiplos algoritmos de balanceamento "Balanceamento de carga para microservices"
  • 21. Demo • Balanceamento de Carga • Spring Cloud + Netflix Ribbon • https://github.com/rcandidosilva/spring-cloud-sample
  • 22. Netflix Hystrix “Tolerância à falhas para microservices" • Implementa padrão circuit breakers • Fornece monitoramento aos serviços • Hystrix dashboard • Suporta comandos assíncronos • Utiliza diferentes thread pools • Pode implementar timeouts
  • 23. Netflix Hystrix • Circuit Breaker Pattern • Máquina de estados • Closed, Open, Half-Open • Falha não é propagada para chamada do cliente
  • 26. Demo • Tolerância a Falhas • Spring Cloud + Netflix Hystrix • https://github.com/rcandidosilva/spring-cloud-sample
  • 27. Netflix Zuul “Roteamento centralizado para microservices" • Fornece único ponto de entrada para os serviços • Roteamento e balanceamento na JVM • Cria uma rota para cada serviço no Eureka • Define filtros para pontos de entrada • Similar outros roteamentos • httpd, nginx, CF go router
  • 29. Demo • Roteamento centralizado • Spring Cloud + Netflix Zuul • https://github.com/rcandidosilva/spring-cloud-sample
  • 30. Spring Cloud Security “Segurança aplicada para microservices" • Integração Spring Security + OAuth2 • SSO com OAuth2 e OpenID Connect • Proteção dos serviços com tokens (JWT) • Transmissão tokens entre SSO e apps • OAuth2 + OpenID Connect + JWT ;)
  • 31. Spring Cloud Security Discovery Client Relying Party Resource Server Get an access token & an ID Token (JWT) Use an access token Authorization Server Iden.ty Provider or IDP or OpenID Provider or OP Authorization Endpoint Token Endpoint Important Stuff Userinfo Endpoint Registration Endpoint JWKS Endpoint JWKS Endpoint Validate (JWT) ID Token /.well-known /webfinger /openid-configura.on Check Session IFrame End Session Endpoint
  • 32. Conclusões… • Microservices são sistemas distribuídos • Sistemas distribuídos são complexos • Netflix OSS define ótimas ferramentas para implementação com microservices • Spring Cloud • Ótima abstração para Netflix OSS • Fácil utilização (via anotações) • Integração com ecossistema Spring • Enjoy it ;)
  • 34. Referências • http://projects.spring.io/spring-boot/ • http://projects.spring.io/spring-cloud/ • https://netflix.github.io/ • https://github.com/Netflix/zuul • https://github.com/Netflix/eureka • https://github.com/Netflix/ribbon • https://github.com/Netflix/Hystrix • http://www.pwc.com/us/en/technology-forecast/2014/cloud-computing/features/ microservices.html • http://martinfowler.com/articles/microservices.html • http://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-with- spring-cloud-and-netflix-oss-part-1/ • http://www.javaworld.com/article/2927920/cloud-computing/build-self-healing- distributed-systems-with-spring-cloud.html