SlideShare uma empresa Scribd logo
1 de 30
Aprendizados
Orquestrando Docker com Mesos+Marathon,
sem DC/OS
André Rocha (andre@konkerlabs.com)
Wellington Mariusso (wmariusso@konkerlabs.com)
Agenda
● Sobre a Konker
● Nossos Desafios Técnicos
● Por que Mesos/Marathon?
● O que deu certo?
● O que não deu tão certo assim…
● O que vem pela frente!
Konker
● Startup brasileira de 18 meses, focada em tecnologia para IoT
● Desenvolvendo uma plataforma IoT OpenSource
(https://github.com/KonkerLabs/konker-platform)
● Proposta: modelo baseado em Platform as a Service
○ Altamente disponível
○ Suportando grandes volumes
○ Fácil de usar!
Desafios Técnicos de um IoT PaaS
● Altíssima disponibilidade
● Workload misto (ingestão de dados, batches operacionais, analítico)
● Possibilidade de execução em nuvem ou On Premises
● Operação enxuta (somos uma startup!)
● Escalável
● Capaz de suportar grandes volumes de clients e dados
● Multi-tenant
● Multi-idioma
Como todo
produto novo...
● Começamos com um MVP - alvo
para Out/2016.
● Foco em validar o modelo
● Arquitetura mais simples possível: o
grande monolito
Dificuldades com MVP
● A arquitetura inicial não atendia nossos requisitos:
● Estrutura monolítica
○ Deploys grandes
○ Builds complexos
● Datastore começando a apresentar dificuldades
● Inelástico
● Disponibilidade não-ótima (Failover)
Repensando Arquitetura
● Migrar para uma estrutura de microsserviços
● Containerizar para simplificar
● Mudança para Datastores mais robustos
● Redundância de Serviços e Load Balancing
● rolling updates de containers
● canary releases
● load balancing
● service discovery
● configuration management
● health monitoring / self healing
● built-in central logging
A wishlist para o novo ambiente
● Distribuição segura de secrets
● Separação de visibilidade (público,
privado, gerenciado)
● update do cluster (não dos
containers) sem downtime
● suporte multi-az / multi-datacenter /
datacenter aware
● multi-user / segurança
Fundamental! Nice to Have...
Resultado:
Principais razões:
● Maturidade (na época)
● Capacidade de usar o mesmo ambiente para workload misto
(Transacional + Data Intensive)
Mas vamos com Baby Steps! :) - Sem DC/OS
O que deu certo?
Orquestrar docker é realmente simples
● mesos agent e docker instalado
● mesos-agent -- containerizers=docker,mesos
* É possível usar Kubernetes para pools mais complexas
O que deu certo?
Operar os serviços é realmente muito simples
PUT https://{marathon
host}:{marathon
port}/v2/apps/{group}/{app}
{
“instances”: {desired value}
}
O que deu certo?
O modelo de implantação é hibrido e se adapta bem a Cloud
https://www.draw.io/#G0B_byvJyk9fHXUGVnbzV6U2RtRm8
O que deu certo?
Troubleshooting via dashboard rica e intuitiva
O que deu certo?
Mesos Agent barato
O que deu certo?
Isolamento/Compartilhamento de recursos
O que deu certo?
Service Discovery/Registration
O que deu certo?
Api’s ricas e completas permitem integração de ferramental ‘out of the box’
O que deu errado
Falta de gestão de secrets nativa (estamos testando o Vault)
O que deu errado
Troubleshooting de deploy complexo
O que deu errado
Estado do marathon não persistente
O que deu errado
Marathon LB sensível a erros na configuração da camada de serviço
O que deu errado
SSL / TLS ( sem wildcard )
O que deu errado
Tuning de healthy entre Marathon e Marathon-LB
O que deu errado
Ferramental / suporte oficial do DC/OS fez falta
O que mudamos até agora
- Pelo menos 3 nós para cada serviço
- Masters recebem apenas serviços do próprio ecossistema do mesos
- Amazon ELB na borda
- Saltstack orquestra implantação de nós, serviços e configurações básicas do cluster
- ELK + Grafana + ElasticAlert (Yelp) para log e monitoria e Chatops
- Route53 + Mesos-DNS
- Ci integrado ao Marathon
- Conciliação de distribuição de recursos nos nós de mesos via mesos groups
O que mudamos?
Monitoria, Consolidação de Logs, Chatops para alertas
O que mudamos?
Agrupamento de recursos
Pŕoximos passos
● Zabbix para monitoria e manutenção de eventos de falha
● Vault + Vault-Gatekeeper-Mesos (já em teste) para gestão de secrets
● Plugin de gestão de volumes integrado ao EBS
● Atualização da versão do mesos e do marathon (com suporte a pods)
● kafka + Graylog?
● Autoscaling?
MIGRAR PARA DC/OS ?

Mais conteúdo relacionado

Mais procurados

Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Renato Groff
 
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...Adriel Viana
 
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018Renato Groff
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaAdriel Viana
 
Introdução Java virtual machine
Introdução Java virtual machineIntrodução Java virtual machine
Introdução Java virtual machineBruno Coan
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webernaniaz
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo realAmazon Web Services LATAM
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQNelson Senna do Amaral
 
Treinamento de AWS - 2° Parte
Treinamento de AWS - 2° ParteTreinamento de AWS - 2° Parte
Treinamento de AWS - 2° ParteSite Blindado Labs
 
Alta Performance com Java
Alta Performance com JavaAlta Performance com Java
Alta Performance com JavaAlisson Pedrina
 
TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...
TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...
TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...tdc-globalcode
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Ismael Stahelin
 

Mais procurados (18)

Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
 
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
APRESENTAÇÃO DE TCC - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA A A...
 
TDC - Da presença online ao Cloud Computing
TDC - Da presença online ao Cloud ComputingTDC - Da presença online ao Cloud Computing
TDC - Da presença online ao Cloud Computing
 
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web Java
 
Introdução Java virtual machine
Introdução Java virtual machineIntrodução Java virtual machine
Introdução Java virtual machine
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação web
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Webpack and the state of the bundlers!
Webpack and the state of the bundlers!Webpack and the state of the bundlers!
Webpack and the state of the bundlers!
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo real
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
 
Treinamento de AWS - 2° Parte
Treinamento de AWS - 2° ParteTreinamento de AWS - 2° Parte
Treinamento de AWS - 2° Parte
 
Vex 2009-2011
Vex 2009-2011Vex 2009-2011
Vex 2009-2011
 
12 Factor Apps
12 Factor Apps12 Factor Apps
12 Factor Apps
 
Alta Performance com Java
Alta Performance com JavaAlta Performance com Java
Alta Performance com Java
 
TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...
TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...
TDC2018SP | Trilha UX - Live Coding na Arquitetura Mais Produtiva Que Encontr...
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
 

Semelhante a Orquestrando Docker com Mesos+Marathon sem DC/OS

JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server EmbratelAlex Hübner
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Renato Groff
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Renato Groff
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Renato Groff
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreRafael Gomes
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Lync Server 2010 - Arquitetura
Lync Server 2010 - ArquiteturaLync Server 2010 - Arquitetura
Lync Server 2010 - Arquiteturabrunoestrozi
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Renato Groff
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 

Semelhante a Orquestrando Docker com Mesos+Marathon sem DC/OS (20)

Apresentação do Curso
Apresentação do CursoApresentação do Curso
Apresentação do Curso
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server Embratel
 
Estratégias de migração para cloud
Estratégias de migração para cloudEstratégias de migração para cloud
Estratégias de migração para cloud
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
 
Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Lync Server 2010 - Arquitetura
Lync Server 2010 - ArquiteturaLync Server 2010 - Arquitetura
Lync Server 2010 - Arquitetura
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 

Orquestrando Docker com Mesos+Marathon sem DC/OS

  • 1. Aprendizados Orquestrando Docker com Mesos+Marathon, sem DC/OS André Rocha (andre@konkerlabs.com) Wellington Mariusso (wmariusso@konkerlabs.com)
  • 2. Agenda ● Sobre a Konker ● Nossos Desafios Técnicos ● Por que Mesos/Marathon? ● O que deu certo? ● O que não deu tão certo assim… ● O que vem pela frente!
  • 3. Konker ● Startup brasileira de 18 meses, focada em tecnologia para IoT ● Desenvolvendo uma plataforma IoT OpenSource (https://github.com/KonkerLabs/konker-platform) ● Proposta: modelo baseado em Platform as a Service ○ Altamente disponível ○ Suportando grandes volumes ○ Fácil de usar!
  • 4. Desafios Técnicos de um IoT PaaS ● Altíssima disponibilidade ● Workload misto (ingestão de dados, batches operacionais, analítico) ● Possibilidade de execução em nuvem ou On Premises ● Operação enxuta (somos uma startup!) ● Escalável ● Capaz de suportar grandes volumes de clients e dados ● Multi-tenant ● Multi-idioma
  • 5. Como todo produto novo... ● Começamos com um MVP - alvo para Out/2016. ● Foco em validar o modelo ● Arquitetura mais simples possível: o grande monolito
  • 6. Dificuldades com MVP ● A arquitetura inicial não atendia nossos requisitos: ● Estrutura monolítica ○ Deploys grandes ○ Builds complexos ● Datastore começando a apresentar dificuldades ● Inelástico ● Disponibilidade não-ótima (Failover)
  • 7. Repensando Arquitetura ● Migrar para uma estrutura de microsserviços ● Containerizar para simplificar ● Mudança para Datastores mais robustos ● Redundância de Serviços e Load Balancing
  • 8. ● rolling updates de containers ● canary releases ● load balancing ● service discovery ● configuration management ● health monitoring / self healing ● built-in central logging A wishlist para o novo ambiente ● Distribuição segura de secrets ● Separação de visibilidade (público, privado, gerenciado) ● update do cluster (não dos containers) sem downtime ● suporte multi-az / multi-datacenter / datacenter aware ● multi-user / segurança Fundamental! Nice to Have...
  • 9. Resultado: Principais razões: ● Maturidade (na época) ● Capacidade de usar o mesmo ambiente para workload misto (Transacional + Data Intensive) Mas vamos com Baby Steps! :) - Sem DC/OS
  • 10.
  • 11. O que deu certo? Orquestrar docker é realmente simples ● mesos agent e docker instalado ● mesos-agent -- containerizers=docker,mesos * É possível usar Kubernetes para pools mais complexas
  • 12. O que deu certo? Operar os serviços é realmente muito simples PUT https://{marathon host}:{marathon port}/v2/apps/{group}/{app} { “instances”: {desired value} }
  • 13. O que deu certo? O modelo de implantação é hibrido e se adapta bem a Cloud https://www.draw.io/#G0B_byvJyk9fHXUGVnbzV6U2RtRm8
  • 14. O que deu certo? Troubleshooting via dashboard rica e intuitiva
  • 15. O que deu certo? Mesos Agent barato
  • 16. O que deu certo? Isolamento/Compartilhamento de recursos
  • 17. O que deu certo? Service Discovery/Registration
  • 18. O que deu certo? Api’s ricas e completas permitem integração de ferramental ‘out of the box’
  • 19. O que deu errado Falta de gestão de secrets nativa (estamos testando o Vault)
  • 20. O que deu errado Troubleshooting de deploy complexo
  • 21. O que deu errado Estado do marathon não persistente
  • 22. O que deu errado Marathon LB sensível a erros na configuração da camada de serviço
  • 23. O que deu errado SSL / TLS ( sem wildcard )
  • 24. O que deu errado Tuning de healthy entre Marathon e Marathon-LB
  • 25. O que deu errado Ferramental / suporte oficial do DC/OS fez falta
  • 26. O que mudamos até agora - Pelo menos 3 nós para cada serviço - Masters recebem apenas serviços do próprio ecossistema do mesos - Amazon ELB na borda - Saltstack orquestra implantação de nós, serviços e configurações básicas do cluster - ELK + Grafana + ElasticAlert (Yelp) para log e monitoria e Chatops - Route53 + Mesos-DNS - Ci integrado ao Marathon - Conciliação de distribuição de recursos nos nós de mesos via mesos groups
  • 27. O que mudamos? Monitoria, Consolidação de Logs, Chatops para alertas
  • 29. Pŕoximos passos ● Zabbix para monitoria e manutenção de eventos de falha ● Vault + Vault-Gatekeeper-Mesos (já em teste) para gestão de secrets ● Plugin de gestão de volumes integrado ao EBS ● Atualização da versão do mesos e do marathon (com suporte a pods) ● kafka + Graylog? ● Autoscaling?