a experiência de decompor monolitos com api management, kubernetes … · 2019-11-27 ·...

28
Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes e Istio Service Mesh Robisson Oliveira

Upload: others

Post on 30-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

A experiência de decompor monolitos com API management, Kubernetes e Istio Service Mesh

Robisson Oliveira

Page 2: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Quem sou eu…

Robisson OliveiraCTO - Incoders Tecnologia

Contato

www.medium.com/@robissonwww.linkedin.com/in/robisson

www.incoders.com.br

[email protected]

Page 3: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Objetivo

Compartilhar como decidimos decompor uma aplicação monolítica de 10 anos em micro-

serviços para dar mais agilidade ao negócio.

Page 4: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Agenda

O problema que tínhamos para resolver

A nossa abordagem para solucionar esse

problema

Page 5: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Até março 2019…

Uma aplicação de 10 anos monolítica

Utilizando Domain Driven Design a 2 anos

Escrevendo testes unitários/IntegraçãoContainers em dev/teste/produção

Utilizando CI/CD com múltiplos deploys ao dia

Page 6: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Começamos a ter alguns problemas…

Mais conflitos de código em consequência de um time em crescimento

Com mais e mais testes, os builds passam a levar mais tempo

Atualizar a plataforma se torna impossível, porque o código mais antigo não é compatível

Testar novas tecnologias ou implementações

Page 7: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

E dois direcionamentos estratégicos…

Uma estratégia de marketplace Transformar alguns produtos em white label

seudominio.com

Sua marca

Nossa tecnologia

Page 8: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

E definimos algumas premissas…

Estabelecer uma arquitetura que permitisse migrar para a nuvem até 2023.

Separar o código que realmente estava trancando a arquitetura de evoluir.

Escolher uma plataforma de Apis para facilitar a publicação, distribuição e documentação a terceiros.

Page 9: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

O que fizemos na prática…

Page 10: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Garantimos que o aplicação poderia escalar horizontalmente…

Centralizamos o gerenciamento de estadoCentralizamos os logsPassamos a utilizar semantic version

Page 11: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Do Docker Swarm para o Kubernetes…

Page 12: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Do Docker Swarm para o Kubernetes…

Page 13: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Do Docker Swarm para o Kubernetes…

IngressBalanceador de carga com roteamento baseado em nomes

ServicesExpões os PODs para dentro e fora do cluster

SecretsFornecem parâmetros de configuração das aplicações como variáveis de ambiente

Fluxo de requisições

Page 14: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Reforçando o Kubernetes com Istio Service Mesh…

Reduz a complexidade de gerenciar micro- serviços.

Controle de tráfegoSegurançaPolíticasObservabilidade

O termo service mesh é usado para descrever uma rede de micro-serviços que compõem uma aplicação e as interações entre eles.

Page 15: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Reforçando o Kubernetes com Istio Service Mesh…

Fluxo de requisiçõesFluxo de requisições

Page 16: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Reforçando o Kubernetes com Istio Service Mesh…

Trabalha como um service proxy, utilizando um padrão chamado Sidecar container

Intercepta todo o tráfego de entrada e saída do POD

Como o Istio opera:

Page 17: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Reforçando o Kubernetes com Istio Service Mesh…

Antes de Istio + Kubernetes Com Istio + Kubernetes

Page 18: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Observabilidade no Istio… KIALI

Page 19: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Observabilidade no Istio… JAEGER

Page 20: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Observabilidade no Istio… ZIPKIN

Page 21: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Observabilidade no Istio… Grafana + Prometheus

Page 22: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Problemas resolvidos até aqui…

Estabelecer uma arquitetura que permitisse migrar para a nuvem até 2023.

Separar o código que realmente estava trancando a arquitetura de evoluir.

Escolher uma plataforma de Apis para facilitar a publicação, distribuição e documentação a terceiros.

Page 23: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Organizando os serviços em Apis públicas para o marketplace…

API publisher

Developer portal

Key Manager

API Analytics

Trafic management

Identity Server

Page 24: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Registrando uma API no API Manager

Page 25: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Disponibilizando publicamente

Page 26: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Disponibilizando publicamente

Page 27: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes

Globalcode – Open4education

Visualizando métricas das APIs

Page 28: A experiência de decompor monolitos com API management, Kubernetes … · 2019-11-27 · Globalcode – Open4education A experiência de decompor monolitos com API management, Kubernetes