Tendo em mente o gerenciamento e escalabilidade de serviços na nuvem e em servidores, as ferramentas Docker e Kubernetes formam uma dupla inseparável e indispensável. Com a possibilidade da execução de instancias e serviços em contêineres, Docker dispõe um sistema relativamente simples de compartimentação de recursos e o Kubernetes, de gerenciamento e escalonamento dos serviços de conteinerização.

 

Docker:

O sistema Docker, ao contrário de técnicas de segregação convencionais que utilizam um hypervisor, funciona baseado em containers. O conceito de containers não é tão recente, vindo do projeto LXC (Linux container) que era uma tecnologia que possibilitava a criação de um ambiente próximo de uma instalação Linux sem a necessidade de um kernel separado, permitindo encapsular um sistema inteiro dentro de uma estrutura de diretório, impedindo que o sistema hospede acesse qualquer coisa além do que é definido em sua arquitetura. Utilizando um conceito semelhante, Docker cria containers logo acima do sistema operacional sem a necessidade de um sistema operacional inteiro rodando dentro do container, como em maquinas virtuais.

Um container Docker é uma instancia de uma imagem, que pode ser baixada diretamente do chamado Docker Hub ou criada pelo usuário para atender suas necessidades. Uma imagem contém todos os binários e dependências necessárias para o funcionamento da aplicação do container e pode ser inicializada em segundos, uma vez que não há necessidade de boot de um sistema operacional inteiro. Além da instanciação quase instantânea, o fechamento de um container é extremamente rápido. Com essa tecnologia, a instanciação de aplicativos e programas pode ser feita apensa no momento em que é necessário, com o intuito de economizar tempo de processamento na nuvem ou simplesmente para um maior nível de desempenho e responsividade.

Contudo, o software Docker não tem capacidades avançadas de gerenciamento além da criação de volumes de dados, networking e configurações básicas de instancia, e para um gerenciamento avançado entra em ação o Kubernetes, software open source da google para o gerenciamento de instanciação e segregação dos containers.

Kubernetes:

O Kubernetes não tem nenhuma relação direta com o Docker, sendo simplesmente um orquestrador de conteiners e pode ser utilizado com outras aplicações de conteinerização da mesma forma que o Docker pode ser utilizado com outras ferramentas de orquestração. Mas no dado momento, esse conjunto é o padrão de mercado, por serem os maiores e mais famosos.

Ao contrário do Docker, o Kubernetes contém uma interface gráfica para a manutenção, configuração e monitoramento dos chamados Pods (um pod é a menor unidade gerivel pelo Kubernetes, no caso, um contêiner) e configurações avançadas de gerencia e manutenção, sendo uma ferramenta poderosa. A capacidade de monitorar o comportamento de pods e tomar decisões de fechamento de pods travados e instanciação dos mesmos além de tecnologias de distribuição de carga entre diferentes servidores se mostra fator importante na escalabilidade dinâmica de uma aplicação ou serviço.

Talvez em aplicações de pequeno porte ou que a possibilidade de ampliação não é visionada as ferramentas citadas aqui não sejam de grande importância, mas em qualquer sistema ou serviço no qual crescimento é uma possibilidade, a utilização de sistemas de conteinerização e de gerenciamento de instanciação se dá cada vez mais necessária, principalmente quando o tempo de serviço nos servidores tem custo por quantidade de processamento, como se da o caso em hospedagem na nuvem, a conteinerização deve ser considerada ainda nas etapas de planejamento do serviço e aplicação.

 

Autor: Rogerio Lazzari Jr.