Globalcode – Open4education
A experiência de decompor monolitos com API management, Kubernetes e Istio Service Mesh
Robisson Oliveira
Globalcode – Open4education
Quem sou eu…
Robisson OliveiraCTO - Incoders Tecnologia
Contato
www.medium.com/@robissonwww.linkedin.com/in/robisson
www.incoders.com.br
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.
Globalcode – Open4education
Agenda
O problema que tínhamos para resolver
A nossa abordagem para solucionar esse
problema
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
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
Globalcode – Open4education
E dois direcionamentos estratégicos…
Uma estratégia de marketplace Transformar alguns produtos em white label
seudominio.com
Sua marca
Nossa tecnologia
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.
Globalcode – Open4education
O que fizemos na prática…
Globalcode – Open4education
Garantimos que o aplicação poderia escalar horizontalmente…
Centralizamos o gerenciamento de estadoCentralizamos os logsPassamos a utilizar semantic version
Globalcode – Open4education
Do Docker Swarm para o Kubernetes…
Globalcode – Open4education
Do Docker Swarm para o 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
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.
Globalcode – Open4education
Reforçando o Kubernetes com Istio Service Mesh…
Fluxo de requisiçõesFluxo de requisições
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:
Globalcode – Open4education
Reforçando o Kubernetes com Istio Service Mesh…
Antes de Istio + Kubernetes Com Istio + Kubernetes
Globalcode – Open4education
Observabilidade no Istio… KIALI
Globalcode – Open4education
Observabilidade no Istio… JAEGER
Globalcode – Open4education
Observabilidade no Istio… ZIPKIN
Globalcode – Open4education
Observabilidade no Istio… Grafana + Prometheus
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.
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
Globalcode – Open4education
Registrando uma API no API Manager
Globalcode – Open4education
Disponibilizando publicamente
Globalcode – Open4education
Disponibilizando publicamente
Globalcode – Open4education
Visualizando métricas das APIs