SlideShare une entreprise Scribd logo
1  sur  26
Microservices &
Service Mesh
Workshop
Claudio Acquaviva
"All problems in Computer Science can be solved by another
level of indirection, except for the problem of too many layers
of indirection”.
David J. Wheeler, Computer Scientist
Inventor of the "Closed Subroutine", 1927-2004.
As informações são públicas.
3 principais tarefas
• Qualificar conteúdo.
• Estruturar conteúdo.
• Aplicar conteúdo.
• Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design,
Larry Constantine, Ed Yourdon, 1979
• “Low coupling is a sign of a well structured computer system.” (Baixo acoplamento é um sinal
de um sistema de computador bem estruturado).
• “High cohesion tend to be preferable because it is associated with several desirable traits of
software including robustness, reliability, reusability, and understandability.” (Alta coesão
tende a ser preferível porque está associada com vários traços de software desejáveis
incluindo robutez, confiabilidade, reusabilidade e compreensão)
• “...Clearly, cohesion and coupling are interrelated. The greater the cohesion of individual
modules in the system, the lower the coupling between modules will be...”. (Claramente,
coesão e acoplamente estão inter-relacionados. Quanto maior a coesão dos módulos
individuais em um sistema, menor será o acoplamente entre os módulos.
Acoplamento e Coesão – Coupling and Cohesion
Em resumo, a Orientação a Serviços é benéfica. A sua implementação em ESB não é uma boa
solução.
Em 2005, Anne Thomas Manes, VP do Gartner, escreveu o famoso artigo “SOA is Dead; Long Live
Services” (http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html).
MSA por Adrian Cockcroft, VP da AWS - Amazon Web Services: “Service-oriented architecture
composed of loosely coupled elements that have bounded contexts”.
Mesmos princípios, implementações distintas. Monólitos -> Microsserviços.
Service Orientation – SOA e MSA
MicrosserviçosMonólitoDB DB A DB B
ESB
PedidosClientes
LB
Microsserviço A
Clientes
LB
Microsserviço B
Pedidos
LB
Microsserviço C
NFs
LB
NFs
DB C
• Não há como construir um modelo de domínio unificado para todos os sistemas.
• Divisão de um sistema complexo em “Bounded Contexts”.
• Cada “Context” possui o seu modelo unificado e define a relação entre os outros contextos.
• Um contexto é um implementado por um Microsserviços (ou um conjunto de Microsserviços).
DDD – “Domain-Driven Design”
MSA
Microservices Architecture
API Gateway
Sistemas Existentes
Microservices Architecture - Arquitetura de Referência
ERP MDM CRM Mainframe
Firewall
Firewall
DMZ
Microservice 1
...
Cloud APIs
SaaS PaaS
Canais de Msgs
Service Component
Service Component ...
Outer Architecture
Inner Architecture
Microservice 2
Service Component
Service Component
Inner Architecture
Microservice 3
Service Component
Service Component
Inner Architecture
Microservice N
Service Component
Service Component
Inner Architecture
A Guidance Framework for Architecting Portable Cloud and Multicloud Applications, Gartner
Eric Knipp, Traverse Clayton, Richard Watson, Gartner, 16/12/16
Identity Provider
Mobile Apps End Users 3rd Party Apps
Infraestrutura de Serviços
ESB
Firewall
API Gateway
AuthN & AuthZ
Service Virtualization & Composition
Data Transformation
Throttling
API Manager
Versioning
Knowledge Base
Life Cycle Management
Billing
Firewall
API Developers Portal
AuthN & AuthZ
Financials
API ConsumersAPI Developers
Identity Management
AuthN & AuthZ
Provisioning
Analytics
API Publication
API Usage
Credentials
Billing Data TXs Data
Service Invocation
API Management - Arquitetura de Referência
MSA
API Monitoring
API Usage
Operational Analytics
Service Provider 1 (SP)
Domínio B
p. e.: On Premises
Service Provider 2 (SP)
Domínio C
p. e.: Cloud
Identity Provider
Principal
Identity Provider (IdP)
Domínio A
Credenciais
(User/Passwd
X.509
OTP tokens)
Id Token
(JWT)
• IdP e SPs formam um “Circle of Trust”.
• OpenID Connect é o padrão
predominante
AutorizaçãoAutorização
Banco de Dados de
Usuários
LDAP DBMS
O que você tem + O que você sabe + O que você é
Segurança
Fatores
+
+ PIN +
PIN
PIN+ PIN+
O que você tem + O que você é
O que você tem + O que você sabe
O que você é
O que você sabe
O que você tem
Fatores de Autenticação
Token de
Certificado Digital
OTP Token
Personal Identification Number
1 Factor
Authentication
2 Factor
Authentication
3 Factor
Authentication
Modelos de Comunicação – Sincronismo e Assincronismo
• A comunicação entre os microsserviços pode ser Síncrona ou Assíncrona.
• Chamadas Síncronas:
• Chamadas Assíncronas podem ser implementadas em duas situações: Um-A-Um ou Um-A-Muitos.
API Gateway Serviço A Serviço CServiço B
API Gateway Serviço A Serviço B
HTTP
HTTP
HTTP
HTTP
Queue
API Gateway Serviço A Serviço B
HTTP
Event Bus
Serviço C
Items
Microservice
MORE
LOGIC
- Service Discovery
- Load Balancing
- Tracing
- Traffic Control
- Circuit Breaker
- Health Check
- Secure Data Transfer
Customers
Microservice
Instances
MORE
LOGIC
- Service Discovery
- Load Balancing
- Tracing
- Traffic Control
- Circuit Breaker
- Health Check
- Secure Data Transfer
Microservice Communication
MORE
LOGIC
- Logging
- Metrics
- Access Control
MORE
LOGIC
- Logging
- Metrics
- Access Control
Items
Microservice
Standard capabilities
- Service Discovery
- Load Balancing
- Traffic Control
- Tracing
- Circuit Breaker
- Health Check
- Secure Data Transfer
- Logging
- Metrics
- Access Control
Standard capabilities
- Service Discovery
- Load Balancing
- Traffic Control
- Tracing
- Circuit Breaker
- Health Check
- Secure Data Transfer
- Logging
- Metrics
- Access Control
Customer
Microservice
Externalização das capacidades
● Solução com forte acoplamento
● Difícil atualização/distribuição de código
● Não atende o princípio “Microservice Polyglot”
Microservice
Library
- Service Discovery
- Load Balancing
- Traffic Control
- Tracing
- Circuit Breaker
- Health Check
- Secure Data Transfer
- Logging
- Metrics
- Access Control
Solução 1 - Biblioteca
● Solução com baixo acoplamento
● O código do microsserviço não é impactado por atualizações do “proxy”
● Não necessariamente segue as decisões tecnológicas adotadas para a implementação dos
microsserviços (p.e. linguagem de programação)
● Todo os tráfegos “income” e “outcome” são controlados pelo “proxy”
Microservice 1
Proxy
- Service Discovery
- Load Balancing
- Traffic Control
- Tracing
- Circuit Breaker
- Health Check
- Secure Data Transfer
- Logging
- Metrics
- Access Control
Microservice 2
Proxy
- Service Discovery
- Load Balancing
- Traffic Control
- Tracing
- Circuit Breaker
- Health Check
- Secure Data Transfer
- Logging
- Metrics
- Access Control
Solução 2 - Proxy
● Por definição, Microsserviços estão inseridos em um ambiente dinâmico e distribuído.
● Isso quer dizer que o número de instâncias de um dado microsserviços pode variar com o tempo.
● Várias razões:
○ ”Throughput” maior/menor
○ Canary Release
○ A/B testing
● Como lidar com o problema de mudança de políticas?
○ Service Registration/Discovery
○ Load Balancing
○ Traffic Control
● Quem é o responsável pela configuração dos “proxies”?
Microservice 1
Proxy
Microservice 2'Proxy
Microservice 2''Proxy
Microservice 2'''Proxy
Solução 2 – Proxy – Múltiplas Instâncias de Microsserviços
Microservice 1
Data Plane - Sidecar Data Plane - Sidecar
Control Plane
Policies Configuration Metrics Data
Metrics Data
Microservice 2
Service Mesh Pattern
● “Proxies” não fazem "call-outs": seria uma arquitetura de alto consumo de recursos
de rede.
● Ao invés disso, é uma arquitetura “push-based”.
● Control Plane
○ Responsável pela configuração de todos os “proxies” baseado em alterações
de políticas e encarnação/destruição de instâncias de microsserviços.
○ Auto-scaling controller
● Data Plane
○ A parte de "runtime" do Service Mesh
○ Armazena todas as políticas definidas e enviadas pelo Control Plane.
○ Reporta o Control Plane com métricas, que podem ser usadas para tomada de
decisão para “auto-scaling” e atualização de dados de monitoração em tempo
real.
Service Mesh
• Service Mesh é um “pattern” para tratar de necessidades comuns dos Microsserviços e da comunicação
entre eles.
• Há algumas implementações de Service Mesh disponíveis atualmente como Istio (http://www.istio.io),
Kong (https://docs.konghq.com/1.0.x/streams-and-service-mesh/) e Linkerd (http://linkerd.io)
Sidecar (proxy)
Service Mesh Pattern
Microservice 1
Lógica de
Negócio
Load Balancing,
Service Discovery,
Circuit Breaker, Traffic
Control, etc
Sidecar (proxy)
Microservice 2
Lógica de
Negócio
Load Balancing,
Service Discovery,
Circuit Breaker, Traffci
Control, etc
Service Mesh Control Plane
Service Mesh – Circuit Breaker
AbertoFechado
Semiaberto
Sucesso
Falha
(se não atingiu
“threshold”)
Falha
(se atingiu
“threshold”)
Chamada
retorna falha
“Timeout”
Falha na tentativa
de fechamento do
circuito
Sucesso na tentativa
de fechamento do
circuito
1
2
3
4
5
6
7
1. Regime normal de operação do “Circuit Breaker”. O Microsserviço invocado não apresenta problemas.
2. A invocação de um Microsserviço apresentou uma falha (erro na invocação, “timeout”, etc). “Threshold” não foi
atingido. O serviço invocador recebe um código de resposta pertinente à situação.
3. A invocação de um Microsserviço apresentou falha e o limite de aceite de falhas foi ultrapassado. O “Circuit
Breaker” muda o seu estado para “Aberto”.
4. Qualquer tentativa de nova invocação para este Microsserviço receberá um erro pertinente. A invocação não
será feita.
5. A partir de um “timeout” pré-definido, o “Circuit Breaker” muda de estado para “Semiaberto” para tentar a
reconexão com o Microsserviço com problemas.
6. Caso a tentativa de reconexão não tenha sucesso, o “Circuit Break” volta ao estado “Aberto” e espera pelo
próximo “timeout”.
7. Caso a tentativa de reconexão tenha ocorrido com sucesso o “Circuit Breaker” é fechado e volta ao estado
normal de operação. Invocações ao Microsserviço voltam a ser realizadas.
Service Mesh – Load Balancing & Service Discovery
Microservice 1
Sidecar 1
Registry
Service Registration
Instâncias do Microsserviço 2
Microservice 2
Sidecar 2
Microservice 2
Sidecar 2
Microservice 2
Sidecar 2
Service Discovery
Load Balancing
EAST-WEST TRAFFIC
NORTH-SOUTH
TRAFFIC
API Management & Service Mesh – The Big Picture
SidecarMicroservice Sidecar Microservice
SidecarMicroservice Sidecar Microservice
Control Plane
API Gateway
Identity
Provider
Users & Apps
Requests
SidecarMicroservice Sidecar Microservice
SidecarMicroservice Sidecar Microservice
Control Plane
API Gateway
● Autenticação de Usuários
& Apps
● Controle de Acesso de
Baixa Granularidade (p.e.
IP Whitelist, Request
datetime, etc)
Service Mesh
Identity
Provider
Users & Apps
Requests
● Control de Acesso de Alta
Granularidade (políticas
de autorização específicas
para microsserviços)
API Management & Service Mesh - Security Revisited
Microservices Architecture
Docker EngineDocker Engine
API Gateway
Firewall
Firewall
DMZ
Docker Engine
Outer Architecture
Microservice 1
Service Component
Service Component
Inner Architecture
Microservice 1
Service Component
Service Component
Inner Architecture
Microservice 2
Service Component
Service Component
Inner Architecture
Kubernetes Cluster
Docker & Kubernetes
Identity Provider
Mobile Apps End Users 3rd Party Apps
Microservices Architecture
Kubernetes PodKubernetes Pod
API Gateway
Firewall
Firewall
Mobile Apps End Users 3rd Party Apps
DMZ
Kubernetes Pod
Outer Architecture
Microservice 1
Service Component
Service Component
Inner Architecture
Microservice 1
Service Component
Service Component
Inner Architecture
Microservice 2
Service Component
Service Component
Inner Architecture
Message Channels / Message Queues
Sidecar 1 Sidecar 1 Sidecar 2
Service
Discovery
Circuit
Breaker
Health
Checks
Traffic Control
Service
Discovery
Circuit
Breaker
Health
Checks
Traffic Control
Service
Discovery
Circuit
Breaker
Health
Checks
Traffic Control
Service Mesh Control Plane
The Big Big Picture
Kubernetes Cluster
Identity Provider
Microservices &
Service Mesh
Workshop
Claudio Acquaviva

Contenu connexe

Similaire à Microservices & Service Mesh Pattern presentation

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
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
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Emmanuel Neri
 
11b rede inteligente
11b rede inteligente11b rede inteligente
11b rede inteligenteSilvio Cadete
 
Cloud conceitos, segurança e migração
Cloud   conceitos, segurança e migraçãoCloud   conceitos, segurança e migração
Cloud conceitos, segurança e migraçãoAllen Informática
 
Service mesh com Istio [pt-br]
Service mesh com Istio [pt-br]Service mesh com Istio [pt-br]
Service mesh com Istio [pt-br]Jonh Wendell
 
Arquitetura de Microsserviços - Parte 2
Arquitetura de Microsserviços - Parte 2Arquitetura de Microsserviços - Parte 2
Arquitetura de Microsserviços - Parte 2Frederico Garcia Costa
 
Segurança na Nuvem: Conformidades e Riscos
Segurança na Nuvem: Conformidades e RiscosSegurança na Nuvem: Conformidades e Riscos
Segurança na Nuvem: Conformidades e RiscosRodrigo Felipe Betussi
 
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
 
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosAula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosMessias Batista
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
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
 
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
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com IstioJonh Wendell
 
Uma Solução para Programabilidade de Redes baseada em Virtualização
Uma Solução para Programabilidade de Redes baseada em VirtualizaçãoUma Solução para Programabilidade de Redes baseada em Virtualização
Uma Solução para Programabilidade de Redes baseada em VirtualizaçãoWanderson Paim
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 

Similaire à Microservices & Service Mesh Pattern presentation (20)

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
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
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
 
11b rede inteligente
11b rede inteligente11b rede inteligente
11b rede inteligente
 
Cloud conceitos, segurança e migração
Cloud   conceitos, segurança e migraçãoCloud   conceitos, segurança e migração
Cloud conceitos, segurança e migração
 
Service mesh com Istio [pt-br]
Service mesh com Istio [pt-br]Service mesh com Istio [pt-br]
Service mesh com Istio [pt-br]
 
Arquitetura de Microsserviços - Parte 2
Arquitetura de Microsserviços - Parte 2Arquitetura de Microsserviços - Parte 2
Arquitetura de Microsserviços - Parte 2
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
 
Segurança na Nuvem: Conformidades e Riscos
Segurança na Nuvem: Conformidades e RiscosSegurança na Nuvem: Conformidades e Riscos
Segurança na Nuvem: Conformidades e Riscos
 
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
 
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosAula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
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)
 
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
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com Istio
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
 
Uma Solução para Programabilidade de Redes baseada em Virtualização
Uma Solução para Programabilidade de Redes baseada em VirtualizaçãoUma Solução para Programabilidade de Redes baseada em Virtualização
Uma Solução para Programabilidade de Redes baseada em Virtualização
 
Ufs na nuvem gp 2017-2
Ufs na nuvem   gp 2017-2 Ufs na nuvem   gp 2017-2
Ufs na nuvem gp 2017-2
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 

Microservices & Service Mesh Pattern presentation

  • 2. "All problems in Computer Science can be solved by another level of indirection, except for the problem of too many layers of indirection”. David J. Wheeler, Computer Scientist Inventor of the "Closed Subroutine", 1927-2004.
  • 3. As informações são públicas. 3 principais tarefas • Qualificar conteúdo. • Estruturar conteúdo. • Aplicar conteúdo.
  • 4. • Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design, Larry Constantine, Ed Yourdon, 1979 • “Low coupling is a sign of a well structured computer system.” (Baixo acoplamento é um sinal de um sistema de computador bem estruturado). • “High cohesion tend to be preferable because it is associated with several desirable traits of software including robustness, reliability, reusability, and understandability.” (Alta coesão tende a ser preferível porque está associada com vários traços de software desejáveis incluindo robutez, confiabilidade, reusabilidade e compreensão) • “...Clearly, cohesion and coupling are interrelated. The greater the cohesion of individual modules in the system, the lower the coupling between modules will be...”. (Claramente, coesão e acoplamente estão inter-relacionados. Quanto maior a coesão dos módulos individuais em um sistema, menor será o acoplamente entre os módulos. Acoplamento e Coesão – Coupling and Cohesion
  • 5. Em resumo, a Orientação a Serviços é benéfica. A sua implementação em ESB não é uma boa solução. Em 2005, Anne Thomas Manes, VP do Gartner, escreveu o famoso artigo “SOA is Dead; Long Live Services” (http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html). MSA por Adrian Cockcroft, VP da AWS - Amazon Web Services: “Service-oriented architecture composed of loosely coupled elements that have bounded contexts”. Mesmos princípios, implementações distintas. Monólitos -> Microsserviços. Service Orientation – SOA e MSA MicrosserviçosMonólitoDB DB A DB B ESB PedidosClientes LB Microsserviço A Clientes LB Microsserviço B Pedidos LB Microsserviço C NFs LB NFs DB C
  • 6. • Não há como construir um modelo de domínio unificado para todos os sistemas. • Divisão de um sistema complexo em “Bounded Contexts”. • Cada “Context” possui o seu modelo unificado e define a relação entre os outros contextos. • Um contexto é um implementado por um Microsserviços (ou um conjunto de Microsserviços). DDD – “Domain-Driven Design”
  • 7. MSA Microservices Architecture API Gateway Sistemas Existentes Microservices Architecture - Arquitetura de Referência ERP MDM CRM Mainframe Firewall Firewall DMZ Microservice 1 ... Cloud APIs SaaS PaaS Canais de Msgs Service Component Service Component ... Outer Architecture Inner Architecture Microservice 2 Service Component Service Component Inner Architecture Microservice 3 Service Component Service Component Inner Architecture Microservice N Service Component Service Component Inner Architecture A Guidance Framework for Architecting Portable Cloud and Multicloud Applications, Gartner Eric Knipp, Traverse Clayton, Richard Watson, Gartner, 16/12/16 Identity Provider Mobile Apps End Users 3rd Party Apps
  • 8. Infraestrutura de Serviços ESB Firewall API Gateway AuthN & AuthZ Service Virtualization & Composition Data Transformation Throttling API Manager Versioning Knowledge Base Life Cycle Management Billing Firewall API Developers Portal AuthN & AuthZ Financials API ConsumersAPI Developers Identity Management AuthN & AuthZ Provisioning Analytics API Publication API Usage Credentials Billing Data TXs Data Service Invocation API Management - Arquitetura de Referência MSA API Monitoring API Usage Operational Analytics
  • 9. Service Provider 1 (SP) Domínio B p. e.: On Premises Service Provider 2 (SP) Domínio C p. e.: Cloud Identity Provider Principal Identity Provider (IdP) Domínio A Credenciais (User/Passwd X.509 OTP tokens) Id Token (JWT) • IdP e SPs formam um “Circle of Trust”. • OpenID Connect é o padrão predominante AutorizaçãoAutorização Banco de Dados de Usuários LDAP DBMS
  • 10. O que você tem + O que você sabe + O que você é Segurança Fatores + + PIN + PIN PIN+ PIN+ O que você tem + O que você é O que você tem + O que você sabe O que você é O que você sabe O que você tem Fatores de Autenticação Token de Certificado Digital OTP Token Personal Identification Number 1 Factor Authentication 2 Factor Authentication 3 Factor Authentication
  • 11. Modelos de Comunicação – Sincronismo e Assincronismo • A comunicação entre os microsserviços pode ser Síncrona ou Assíncrona. • Chamadas Síncronas: • Chamadas Assíncronas podem ser implementadas em duas situações: Um-A-Um ou Um-A-Muitos. API Gateway Serviço A Serviço CServiço B API Gateway Serviço A Serviço B HTTP HTTP HTTP HTTP Queue API Gateway Serviço A Serviço B HTTP Event Bus Serviço C
  • 12. Items Microservice MORE LOGIC - Service Discovery - Load Balancing - Tracing - Traffic Control - Circuit Breaker - Health Check - Secure Data Transfer Customers Microservice Instances MORE LOGIC - Service Discovery - Load Balancing - Tracing - Traffic Control - Circuit Breaker - Health Check - Secure Data Transfer Microservice Communication MORE LOGIC - Logging - Metrics - Access Control MORE LOGIC - Logging - Metrics - Access Control
  • 13. Items Microservice Standard capabilities - Service Discovery - Load Balancing - Traffic Control - Tracing - Circuit Breaker - Health Check - Secure Data Transfer - Logging - Metrics - Access Control Standard capabilities - Service Discovery - Load Balancing - Traffic Control - Tracing - Circuit Breaker - Health Check - Secure Data Transfer - Logging - Metrics - Access Control Customer Microservice Externalização das capacidades
  • 14. ● Solução com forte acoplamento ● Difícil atualização/distribuição de código ● Não atende o princípio “Microservice Polyglot” Microservice Library - Service Discovery - Load Balancing - Traffic Control - Tracing - Circuit Breaker - Health Check - Secure Data Transfer - Logging - Metrics - Access Control Solução 1 - Biblioteca
  • 15. ● Solução com baixo acoplamento ● O código do microsserviço não é impactado por atualizações do “proxy” ● Não necessariamente segue as decisões tecnológicas adotadas para a implementação dos microsserviços (p.e. linguagem de programação) ● Todo os tráfegos “income” e “outcome” são controlados pelo “proxy” Microservice 1 Proxy - Service Discovery - Load Balancing - Traffic Control - Tracing - Circuit Breaker - Health Check - Secure Data Transfer - Logging - Metrics - Access Control Microservice 2 Proxy - Service Discovery - Load Balancing - Traffic Control - Tracing - Circuit Breaker - Health Check - Secure Data Transfer - Logging - Metrics - Access Control Solução 2 - Proxy
  • 16. ● Por definição, Microsserviços estão inseridos em um ambiente dinâmico e distribuído. ● Isso quer dizer que o número de instâncias de um dado microsserviços pode variar com o tempo. ● Várias razões: ○ ”Throughput” maior/menor ○ Canary Release ○ A/B testing ● Como lidar com o problema de mudança de políticas? ○ Service Registration/Discovery ○ Load Balancing ○ Traffic Control ● Quem é o responsável pela configuração dos “proxies”? Microservice 1 Proxy Microservice 2'Proxy Microservice 2''Proxy Microservice 2'''Proxy Solução 2 – Proxy – Múltiplas Instâncias de Microsserviços
  • 17. Microservice 1 Data Plane - Sidecar Data Plane - Sidecar Control Plane Policies Configuration Metrics Data Metrics Data Microservice 2 Service Mesh Pattern
  • 18. ● “Proxies” não fazem "call-outs": seria uma arquitetura de alto consumo de recursos de rede. ● Ao invés disso, é uma arquitetura “push-based”. ● Control Plane ○ Responsável pela configuração de todos os “proxies” baseado em alterações de políticas e encarnação/destruição de instâncias de microsserviços. ○ Auto-scaling controller ● Data Plane ○ A parte de "runtime" do Service Mesh ○ Armazena todas as políticas definidas e enviadas pelo Control Plane. ○ Reporta o Control Plane com métricas, que podem ser usadas para tomada de decisão para “auto-scaling” e atualização de dados de monitoração em tempo real. Service Mesh
  • 19. • Service Mesh é um “pattern” para tratar de necessidades comuns dos Microsserviços e da comunicação entre eles. • Há algumas implementações de Service Mesh disponíveis atualmente como Istio (http://www.istio.io), Kong (https://docs.konghq.com/1.0.x/streams-and-service-mesh/) e Linkerd (http://linkerd.io) Sidecar (proxy) Service Mesh Pattern Microservice 1 Lógica de Negócio Load Balancing, Service Discovery, Circuit Breaker, Traffic Control, etc Sidecar (proxy) Microservice 2 Lógica de Negócio Load Balancing, Service Discovery, Circuit Breaker, Traffci Control, etc Service Mesh Control Plane
  • 20. Service Mesh – Circuit Breaker AbertoFechado Semiaberto Sucesso Falha (se não atingiu “threshold”) Falha (se atingiu “threshold”) Chamada retorna falha “Timeout” Falha na tentativa de fechamento do circuito Sucesso na tentativa de fechamento do circuito 1 2 3 4 5 6 7 1. Regime normal de operação do “Circuit Breaker”. O Microsserviço invocado não apresenta problemas. 2. A invocação de um Microsserviço apresentou uma falha (erro na invocação, “timeout”, etc). “Threshold” não foi atingido. O serviço invocador recebe um código de resposta pertinente à situação. 3. A invocação de um Microsserviço apresentou falha e o limite de aceite de falhas foi ultrapassado. O “Circuit Breaker” muda o seu estado para “Aberto”. 4. Qualquer tentativa de nova invocação para este Microsserviço receberá um erro pertinente. A invocação não será feita. 5. A partir de um “timeout” pré-definido, o “Circuit Breaker” muda de estado para “Semiaberto” para tentar a reconexão com o Microsserviço com problemas. 6. Caso a tentativa de reconexão não tenha sucesso, o “Circuit Break” volta ao estado “Aberto” e espera pelo próximo “timeout”. 7. Caso a tentativa de reconexão tenha ocorrido com sucesso o “Circuit Breaker” é fechado e volta ao estado normal de operação. Invocações ao Microsserviço voltam a ser realizadas.
  • 21. Service Mesh – Load Balancing & Service Discovery Microservice 1 Sidecar 1 Registry Service Registration Instâncias do Microsserviço 2 Microservice 2 Sidecar 2 Microservice 2 Sidecar 2 Microservice 2 Sidecar 2 Service Discovery Load Balancing
  • 22. EAST-WEST TRAFFIC NORTH-SOUTH TRAFFIC API Management & Service Mesh – The Big Picture SidecarMicroservice Sidecar Microservice SidecarMicroservice Sidecar Microservice Control Plane API Gateway Identity Provider Users & Apps Requests
  • 23. SidecarMicroservice Sidecar Microservice SidecarMicroservice Sidecar Microservice Control Plane API Gateway ● Autenticação de Usuários & Apps ● Controle de Acesso de Baixa Granularidade (p.e. IP Whitelist, Request datetime, etc) Service Mesh Identity Provider Users & Apps Requests ● Control de Acesso de Alta Granularidade (políticas de autorização específicas para microsserviços) API Management & Service Mesh - Security Revisited
  • 24. Microservices Architecture Docker EngineDocker Engine API Gateway Firewall Firewall DMZ Docker Engine Outer Architecture Microservice 1 Service Component Service Component Inner Architecture Microservice 1 Service Component Service Component Inner Architecture Microservice 2 Service Component Service Component Inner Architecture Kubernetes Cluster Docker & Kubernetes Identity Provider Mobile Apps End Users 3rd Party Apps
  • 25. Microservices Architecture Kubernetes PodKubernetes Pod API Gateway Firewall Firewall Mobile Apps End Users 3rd Party Apps DMZ Kubernetes Pod Outer Architecture Microservice 1 Service Component Service Component Inner Architecture Microservice 1 Service Component Service Component Inner Architecture Microservice 2 Service Component Service Component Inner Architecture Message Channels / Message Queues Sidecar 1 Sidecar 1 Sidecar 2 Service Discovery Circuit Breaker Health Checks Traffic Control Service Discovery Circuit Breaker Health Checks Traffic Control Service Discovery Circuit Breaker Health Checks Traffic Control Service Mesh Control Plane The Big Big Picture Kubernetes Cluster Identity Provider