OpenShift e o Desafio dos Containers

Apresentando o Container

O primeiro ponto que precisamos entender é o tema Container. Podemos dizer que um Container é um isolamento de aplicações dentro de um sistema operacional, onde é possível individualizar diversas aplicações em uma mesma infraestrutura física compartilhando acesso internet, disco, processamento e memória. Ao usarmos Container conseguimos prover limites de isolamento para cada aplicação, ampliando não só a segurança do ambiente, mas também o desempenho das aplicações. Entretanto, você pode questionar: Denis, mas isto é o conceito de virtualização como eu já conheço! A resposta é um grande e sonoro “não”. Vamos aprofundar o tema para deixar mais claro, pois existem diferenças muito importantes para o nosso estudo.

Primeiro precisamos entender os motivos que estão fazendo com que o uso de Containers seja cada vez mais popular. Tenha em mente que quando fazemos uso da virtualização tradicional usamos um software chamado virtualizador (hypervisor), que é responsável pelo compartilhamento do hardware físico (memória, disco, processador, placa de rede, porta USB, etc) entre diversos sistemas operacionais (Guest OS/Máquina Virtual). Cada sistema operacional pode ser distinto (Windows, Linux, FreeBSD, etc), necessitando apenas manter a compatibilidade com a plataforma física selecionada que suporta este ambiente computacional.

Para compreender mais profundamente, considere o uso de uma máquina virtual, onde colocamos diversas aplicações. Imagine o que pode acontecer se uma aplicação for invadida, por exemplo? Neste cenário, todo o ambiente pode ser comprometido ou ainda o que aconteceria se uma aplicação apresentar um problema de desenvolvimento e consumir grande parte da memória deste servidor? Possivelmente teremos todas as outras aplicações prejudicadas.

Pensando ainda na maneira tradicional, como solucionaríamos este problema? Basta criar um ambiente com servidores redundantes contendo o mesmo virtualizador e configurar nele várias máquinas virtuais (VMs) separando as aplicações. Claro que o impacto negativo deste modelo é guiado principalmente pelo custo, principalmente se desenvolvermos um projeto onde o uso de sistemas operacionais exige licenciamento. Para materializar o que foi dito até o momento, observe o gráfico seguinte:

tabela

 

Note como é diferente o desenho de aplicações inseridas em VMs e aplicações projetadas para ambientes com Containers.  Se continuarmos a olhar para o tema “custo”, perceberemos que licenciamos apenas um sistema operacional e configuramos diversas aplicações individualizadas em quantos Containers forem necessários ou suportados pelo hardware usado. Vamos ampliar os horizontes este conceito para o ambiente de Cloud Pública ou Cloud Privada. Ao fazermos isto, perceberemos que é cada vez mais natural o uso de duas tecnologias importantes: Docker (https://www.docker.com/) e Kubernetes (http://kubernetes.io/).  Vamos estudá-los um pouco e identificar quais benefícios podemos encontrar neles.

 

Entendendo Docker, Kubernetes e OpenShift

Ponto 1: Docker é uma plataforma onde um Container é tratado como uma “imagem” contendo todos os elementos para o funcionamento de uma aplicação. Assim a ideia de compartilhar e colaborar muito usada por uma equipe de desenvolvedores é facilmente mantida.

Ponto 2: Docker consegue controlar atualizações, mapear as mudanças ou controlar de maneira automática todo o ciclo de vida de uma aplicação contida em uma imagem. Neste cenário não existe a preocupação em depositar uma aplicação em um ambiente de homologação e sofrer com problemas de funcionamento ao migrar para o ambiente de produção. O segredo é que tudo que é necessário para a aplicação funcionar está dentro do Container.

Ponto 3: E o que podemos falar a respeito do Kubernetes? É importante termos em mente que é inviável controlar manualmente o ciclo de vida de uma quantidade elevada de Containers devido a diversos fatores, dentre eles podemos citar a ordem com que eles são iniciados, por exemplo. É neste tema que entra o Kubernetes. O Google faz uso dele há mais de 15 anos para controlar as cargas de trabalhos (workloads) existentes em seus Data Centers. Desta forma podemos encontrar nele elementos como:

  • Controle da saúde de cada aplicação durante o processo de deploy, facilitando a identificação de problemas, possibilitando a reinicialização do Container que falhar, substituindo ou até reagendando um Container quando uma máquina virtual falhar;
  • Presença de Load Balance (Balanceador de Carga) para controlar o fluxo de acesso a aplicação duplicada;
  • Crescimento ou demolição automática da quantidade de réplicas de uma aplicação. Isto é feito com o controle da quantidade de Containers seguindo as regras previamente estabelecidas ou interagindo diretamente via linha de comando.
  • Crescimento horizontal da aplicação usando Containers;
  • Execução de tarefas usando arquivos em lotes para otimizar e automatizar atividades de maneira sequencial que normalmente seriam feitas por técnicos ou programadores (Batch).

Imagine se uníssemos em uma única plataforma todas as funcionalidades e benefícios do Docker com o Kubernetes. Claro que seria algo fantástico, mas será que realmente é possível? Tenho uma ótima notícia para você, esta pergunta já foi respondida com um grande “sim” pela Red Hat com a criação do OpenShift em 2013. O OpenShift posiciona-se como um PaaS (Plataforma como Serviço/Platform as a Service) permitindo simplificar o desenvolvimento, acrescentando ganho de escala nas aplicações em diversos tipos de ambientes e deixando mais simples o armazenamento de aplicações.

Para o UOL DIVEO introduzir o OpenShift em nossas atividades foi um caminho natural trilhado pela parceria de longa data com a Red Hat. Nossa experiência nos possibilita entender a necessidade de dinamismo em um mundo que segue com força para a transformação digital e nos capacita a desenvolver diversos modelos de projetos envolvendo OpenShift.

Esta parceria proporciona ganhos para os nossos clientes, pois permite um acesso direto ao suporte especializado e diferenciado, juntamente com treinamentos e certificações para nossa equipe, garantindo acesso às novidades e lançamentos da Red Hat com bastante antecedência.

 

Denis Souza

 

Links indicados:

 

Denis Souza

Denis Augusto Araújo de Souza é analista de produtos MSS do UOL DIVEO, e autor da série de livros Tempestade Hacker, publicada pela Amazon.com.br.