Docker, Kubernetes e Mesos. Quem é quem?

Nos deparamos com muitas perguntas quando o assunto é DevOps, certo? E quando o assunto é colocar em prática, os conceitos abordados pelo tema DevOps, entra em discussão qual é o papel de cada ferramenta e qual é a melhor de todas. A verdade é que existem diversas ferramentas no mercado e a cada um novo release sendo lançado. Grandes empresas apostando numa determinada tecnologia, outras empresas criando a própria combo de ferramenta.

A parte boa que é que não existe a melhor ferramenta absoluta. Nesse post, nós vamos abordar os principais aspectos e qual a diferença entre: Docker, Kubernetes e Apache Mesos.  

Docker

Docker Inc., a empresa começou como uma startup de PaaS (plataforma-como-serviço) e transformou em uma empresa chamada dotCloud. A equipe da dotCloud partiu do bem conhecido problema de desenvolvimento de aplicações que é: a questão do gerenciamento de muitas aplicações e de gerenciar essas dependências, o que sempre exigiu um esforço significativo de manutenção e evolução. A solução encontrada por eles foi se basear em alguns dos recursos do Linux cgroups. O Objetivo foi construir um formato de empacotamento que facilitasse o uso de aplicativos e fizesse com que eles pudessem ser executados, consistentemente, qualquer infra-estrutura.

Esse empacotamento fornece os seguintes recursos:

  1. Embrulha a aplicação e suas bibliotecas em um único pacote (“Docker Image”), para que aplicativos sejam implantados em muitos ambientes;
  2. Usa uma semântica “Git” bem conhecida no meio de desenvolvedores, tais como “docker pull”, “docker commit”. Isso ajuda a adotar a nova tecnologia e incorporá-la em seus fluxos de trabalho do dia-a-dia;
  3. Defini a “Docker Image” com uma camada imutável, de forma a possibilitar a abstração da infra-estrutura imutável. Alterações são armazenadas como camadas individuais somente de leitura, tornando fácil a reutilização de imagens e controle de alterações. A organização em camadas também economiza o tráfego de rede e espaço de disco, transportando apenas as atualizações;
  4. Executa o container Docker instanciando uma imagem imutável, porém com uma camada gravável, e dessa forma, armazena temporariamente as alterações de tempo de execução, tornando fácil para implantar e escalar várias instâncias das aplicações.

Essa inovadora visão da Docker para encapsular software e suas dependências em um único pacote é uma quebra de paradigma para a indústria de software, comparando como foi o MP3 na indústria da música. O “Docker File” tornou-se padrão na indústria de fornecedores de tecnologia (incluindo Docker, Google, Pivotal, Mesosphere e muitos outros) tanto que hoje essas mesmas empresas visam garantir a interoperabilidade e interfaces padronizadas em tecnologias de contêiner para assegurar que, uma vez construído usando todas as ferramentas, esse container possa ser executado em qualquer infra-estrutura.

O Docker cresceu em popularidade, e os desenvolvedores confiaram executar os containers além dos notebooks e já se sentem confortáveis em implantar as soluções em produção. Um ponto importante é que um ferramental adicional era necessário para coordenar estes containers com várias máquinas. Isso ficou conhecido como orquestração de container. Surgiram (e continuam a surgir) muitas tecnologias de orquestração de container de terceiros como:

  • Mesos;
  • Kubernetes;
  • Docker Swarm, que a implementação oficial da Docker
  • Nomad;

Docker que tem em seu núcleo o simples e open-source “docker file”, desenvolveu para a comunidade diversas ferramentas para complementar e apoiar o desenvolvimento e implantação e manutenção, são elas:

  • Docker Hub para armazenamento público de “Docker Images”;
  • Docker Registry para armazenar imagens em ambiente on-premises;
  • Docker Cloud um serviço gerenciado para criar e executar contêiner;
  • Docker Datacenter como uma oferta comercial que incorpora muitas tecnologias Docker.

Kubernetes

Logo Kubernetes

O Google reconheceu o potencial da tecnologia Docker logo no início e procurou ofertar a orquestração de “container como-a-serviço” (em inglês CaaS) na plataforma Google Cloud. O Google já tinha uma tremenda experiência com containers (afinal no passado participaram da criação do cgroups em Linux), e fizeram com que as tecnologias de containers existentes e as ferramentas de computação distribuídas como Borg fossem acopladas diretamente à sua infra-estrutura. Google construiu assim, o Kubernetes e do zero. Ele serve para orquestrar containers de Docker.

Kubernetes foi lançado em 2015, com os seguintes objetivos e considerações:

  1. Capacitar os desenvolvedores de aplicativos com uma ferramenta completa para a orquestração de container Docker. E isso sem ter que interagir com a infra-estrutura;
  2. Fornecer uma experiência de implantação de app consistente e APIs com suporte para tecnologias cloud;
  3. Construir uma API modular que permita que os fornecedores integrem sistemas em torno do núcleo Kubernetes.

Em 2016, o Google doou Kubernetes para CNCF (Cloud Native Computing Foundation cncf.io), e continua como contribuinte principal para o projeto (seguido de Redhat, CoreOS e outros).

O Kubernetes foi muito atraente para os desenvolvedores de aplicativos, porque reduziu sua dependência com as equipes de infra-estrutura e operações. Os fornecedores também gostaram porque trouxe uma maneira fácil de abraçar o movimento pró-contêiner e fornecer uma solução comercial para os desafios operacionais da implantação. O Kubernetes, ainda hoje, não é algo de uso simples ou trivial.

Para o futuro existem múltiplas iniciativas com a intenção de expandir o escopo do projeto para que este se integre com mais tarefas como por exemplo: Google analytics e serviços de monitoração, mas estas iniciativas ainda estão em fases muito iniciais.

Apache Mesos

Logo Apache Mesos

Mesos começou como um projeto da Universidade de Berkeley para criar uma nova tecnologia para: clusterizar, gerenciar e aplicar todas as lições aprendidas com as tecnologias cloud e com as infra-estruturas de computação distribuídas (como o Borg do Google e Tupperware do Facebook).

Enquanto Borg e Tupperware tinham uma arquitetura monolítica e foram tecnologias proprietárias de código-fonte, fechadas e amarradas a infra-estrutura física; o Mesos introduziu uma arquitetura modular, uma abordagem de desenvolvimento de código aberto e foi pensada para ser completamente independente da infra-estrutura. Mesos foi adotado pelo Twitter, Uber e muitas empresas de tecnologia para suportar a orientação a microserviços, grande volume de dados, análise em tempo real e dimensionamento elástico.

Como um Gerenciador de cluster, Mesos foi arquitetado para resolver os seguintes desafios:

  1. Simplificar a alocação de recursos, proporcionando uma aplicação coerente e experiência operacional através de nuvens privadas ou públicas;
  2. Manter diversas tarefas de projeto na mesma infra-estrutura como: analytics, micro-serviços monitoração, dados distribuídos e até aplicações mais (tentando melhorar a utilização e reduzir os custos);
  3. Automatizar o dia-a-dia da operação como: implantação, auto-recuperação, dimensionamento e upgrades;
  4. Fornecer uma infra-estrutura tolerante a falha, de alta disponibilidade e extensibilidade aos aplicativos sem necessidade de recodificar;

Mesos pode inclusive gerenciar individualmente um conjunto diversificado de tarefas incluindo aplicativos tradicionais em Java.

Ponto Importante: Mesos não faz orquestração de container. Sim, é isso mesmo ele não faz orquestração de contêiner. Exatamente, ele precisa do Marathon. Marathon serve para prover plataforma como serviço (PaaS) para orquestração de container permitindo assim escalar e evoluir aplicações de forma mais rápida. Ele é totalmente REST e escrito na linguagem Scala.

Os Orquestradores

É comum a maioria comparar Docker e Kubernetes e Mesos, mas na verdade, a comparação deveria ser entre: Docker Swarm, Kubernetes e Marathon rodando no Mesos.

Mesos então não está dedicado a orquestrar contêiner, para ele não importa o que corre em “ciima”da aplicação, portanto é natural que o suporte e a evolução dessa plataforma para container fique sempre em segundo plano ou que demore mais que os outros para evoluir.

Maraton on Mesos

A Docker inventou a tecnologia atual de container e em seguida construiu uma plataforma (segura e simples), além do necessário suporte com SLA ao mercado corporativo, promovendo economia, agilidade e performance. Kubernetes e Mesos sozinhos não oferecem CaaS. P

odemos incluir o Openshift que é um na verdade uma solução de PaaS, fechado e de pouca flexibilidade pois, não permite uso de apps windows, linux, micro-serviços e monólitos em qualquer infra ou framework

Por fim com o Docker EE temos a plenitude do CaaS, orquestração e gerenciamento da tecnologia de contêiner.

Ciclo Evolutivo de container

Acreditamos que sempre partirá da Docker para os demais, conforme na imagem abaixo:

Cada vez mais lemos e estamos vendo os impactos que a Docker e outras empresas estão gerando dentro da industria de Tecnologia. Se você gostou do artigo, é só compartilhar ou deixar algum comentário que nós responderemos. Se você está criando orientação a microserviços, precisando escalar seu serviços e aplicações ou quer migrar artefatos para nuvem, converse conosco! Nós podemos te ajudar.

Tags: , , , , ,

Trackback de seu site.

Vertigo

Somos uma consultoria de negócios focados em TI, agilidade e inovação são aspectos que levamos a sério. O nosso objetivo é Ajudar o nosso cliente a crescer utilizando a Tecnologia, é nisso que acreditamos!

Canais

Assine a nossa newsletter:

   


Av. Rio Branco, 151, sala 1002 – Centro
Rio de Janeiro, RJ - Brasil
CEP 20040-911
+55 (21) 2232-0123