Containers • Microsserviços • Descoberta de serviços • Projetos para a descoberta de serviços • Serfnode - uma solução para descoberta de serviços • Conclusão 2
mais populares ◦ Mais leves do que outros modelos de virtualização predecessores ◦ A popularidade cresce junto com a utilização de microsserviços • Um dos problemas ao se usar containers e microsserviços é a descoberta de serviços • O Serfnode é uma solução para resolver o problema de descoberta de serviços na utilização de containers, mais especificamente Docker 4
Virtualização de chamadas de sistema Inicialização na escala de minutos Inicialização na escala de segundos Cada máquina virtual possui SO completo Containers compartilham SO do host 7
◦ BSD Jails (2000) ◦ Linux LXC (2008) • São atrativos, entre outros motivos, por disponibilizar isolamento das aplicações em um ambiente compartilhado • Mitigam vetores de ataques tradicionais através do isolamento de rede, sistema de arquivos e consumo de recursos 8
containers • Provê: ◦ Integração das tecnologias de containers ◦ Runtime único, centralizado e leve ◦ API para gerenciamento e execução de containers ◦ API para gerenciamento de imagens de containers • Aplicação e dependências empacotadas unicamente • Possibilita a elaboração de arquiteturas de sistemas complexos de forma mais simples e eficiente 9
substituíveis, invocados através de chamadas em memória (compartilhada) • Microsserviços: processo separado que utiliza mensagens para se comunicar com outras partes do sistema. Geralmente microsserviços se baseiam em RPC ou protocolos baseados na web como TCP e HTTP para se comunicar 12
serviço ser parada e inicializada sob demanda • Serviços podem não estar disponíveis a qualquer momento. Pelo menos não no mesmo local • Enquanto containers simplificam a implantação e distribuição de serviços, eles fazem muito pouco para solucionar a comunicação entre serviços 16
serviços: pode ser centralizado ou distribuído • Monitoramento de serviços: uma instância de um serviço só entra no registro se passar pelos testes de monitoramento • Distinção de serviços: soluções para descoberta de serviços necessitam de alguma forma de escolha quando múltiplas instâncias de um mesmo serviço está disponível ◦ Minimização de distância ◦ Minimização de provedores usados ◦ Mais nova/velha instância disponível 17
configurações distribuídas ◦ Monitoramento robusto ◦ Checagem de saúde dos serviços (health checking) • Modelo cliente servidor • Se baseia em um conjunto de nós servidores ◦ Servidores possuem a informação sobre onde estão os serviços • Possui consistência forte • Não suporta (nativamente) serviços rodando em Docker 19
no HAProxy ◦ Roteia requests de um serviço consumidor no mesmo host para um provedor dentro do mesmo cluster • Atualizações no HAProxy é feito por watchers que monitoram mudanças ◦ AWS EC2 ◦ Docker ◦ Zookeeper 20
de máquinas • Soluções de orquestração geralmente não oferecem soluções robustas para descoberta de serviços • Docker Compose ◦ Solução bem limitada de descoberta de serviços ◦ Funciona apenas em um único host ◦ Não se atualiza ao parar e reiniciar containers 22
• Objetivo principal é possibilitar implantação em produção de sistemas pequenos e médios • Arquitetura completamente descentralizada • Possibilidade de tornar qualquer container Docker um serf aware container conectando-o em um cluster • Solução leve de monitoramento embutida 24
orquestração descentralizada. Completamente descentralizada, tolerante a falhas e de alta disponibilidade • Membership ◦ Serf mantém uma lista de membros de um cluster e disponibiliza eventos quando essa lista de membros sofre alguma alteração • Detecção de falhas e recuperação • Propagação de eventos personalizados ◦ Esses eventos podem ser usados para desencadear instalações, propagar configurações, etc. 26
controle de processos em sistemas operacionais UNIX-like • supervisord ◦ Componente “servidor” responsável por rodar os programas filhos e mantê-los rodando, recuperá-los, etc. • supervisorctl ◦ Ferramenta de linha de comando para manipulação do supervisord 27
role • Membros podem possuir múltiplas roles • A mesma role pode estar associada a mais de um membro • Serfnode associa role e endereço no arquivo /etc/hosts ◦ O arquivo é atualizado nas ocorrências de eventos de membership 32
independência no desenvolvimento, implantação e escalabilidade de soluções • A tecnologia de containers, Docker mais especificamente, impõe desafios ainda não completamente solucionados: a descoberta de serviços é um deles • Serfnode é uma solução leve, fácil de usar e que consegue tornar qualquer imagem Docker disponível para funcionar em um cluster integrado 36