TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
1.
2. Dalton Barreto
github.com/daltonmatos
twitter.com/daltonmatos
● CLIPPER - 1997~1998;
● Linux - 1999~2000;
● Ciência da Computação - UFRJ - 2002-2010
● Java 2007 - 2012
● Python 2012-2018 - Sieve Tecnologia
○ Desenvolvedor por 1 ano e meio
○ Depois responsável pela infra-estrutura
● Na B2W desde 2015, quando a Sieve foi adquirida.
6. Mesos + Marathon
Antes:
● Alguns Desenvolvedores tinham acesso a servidores de produção;
● Desenvolvedores sabiam onde (qual servidor) cada aplicação rodava;
● Desenvolvedores dependiam de um time de infra-estrutura para fazer o deploy/olhar logs.
Depois:
● Uso mais eficiente dos recursos de infra;
● Desenvolvedores têm autonomia para fazer deploy quando quiserem;
● Não precisam mais de acesso às máquinas
● Não sabem em qual servidor uma tarefa está rodando
● Não precisam mais se preocupar com infra-estrutura
● Podem se concentrar em desenvolver suas aplicações.
13. Asgard API - Métricas
● Métricas são extraídas sempre via endpoints HTTP;
● API python plugável para adicionar novas métricas;
● Plugins são instalados da forma padrão: “pip install <package>”;
● Novas métricas são adicionadas abaixo de “/_cat/metrics/<package>/*”;
● Possibilidades infinitas.
18. Asgard UI: Ciclo de desenvolvimento
● Mantemos um fork nosso do projeto Marathon UI;
● Escrevemos plugins que fazem todas as novas funcionalidades desejadas;
● Se não for possível implementar algo via plugins, abrimos um PR no projeto original para que seja
possível (e isso já aconteceu, 2x);
● Durante o período de revisão do PR, mantemos os mesmos commits em nosso fork;
● Quando o PR é mergeado, pegamos os commits oficiais;
● Loop;
19. Projeto Asgard: Futuro
● Ser uma interface única onde o desenvolvedor pode fazer toda a gerência de suas aplicações;
● Suporte a múltiplos orquestradores (k8s, Apache Aurora, Hashicorp Nomad, etc);
● Implementar autorização: Poder criar permissões finas para usuários/grupos;
● Automatizar o provisionamento de mais capacidade computacional (aws, GCP, etc);
● Implementar “Marketplace”, que são templates de configurações para facilitar o deploy de aplicações
mais complexas. ex: Webapp com banco de dados e cache.