Blog da EVEO

Cloud Containers: acompanhe seu sucesso sem surpresas!

Escrito por Vicente Neto | Jun 3, 2019 12:50:41 PM

Você sabe o que é cloud containers? Pense em uma aplicação qualquer e todas as suas dependências encapsuladas em um único pacote virtualizado, compartilhando o kernel do servidor em que está instalado. Tudo isso sem precisar se preocupar com infraestrutura e sistema operacional.

Por tratar-se de um conceito relativamente novo, existem algumas dúvidas sobre as formas de utilizá-lo, configuração e de que maneira ele pode ser expandido.

A seguir, detalhamos essas questões e apresentamos quais as principais vantagens dessa tecnologia. Acompanhe a leitura!

Cloud containers e suas vantagens

Cloud containers são ambientes isolados e portáteis que contém todas as configurações e dependências necessárias para a execução de aplicações de forma rápida e confiável. Em um container há tudo o que é preciso para executar uma aplicação, como o código, as ferramentas do sistema, bibliotecas que serão utilizadas e todas as demais configurações necessárias para o seu funcionamento.

É importante diferenciar containers de VMs (Virtual Machine). Essa confusão entre os dois modelos ocorre porque o container é uma forma de virtualização, porém, nesse caso, somente a aplicação é virtualizada.

Já na VM, é preciso fazer a virtualização do sistema operacional, ou seja, trata-se de um servidor virtualizado. Dessa forma, a VM contém o seu próprio kernel, bibliotecas etc., enquanto que o container utiliza o kernel da máquina hospedeira.

Conheça as vantagens dessa tecnologia

O grande benefício dessa tecnologia é a abstração da parte de infraestrutura e do sistema operacional. O container tem o propósito de atender apenas a uma determinada aplicação ou um modelo de dados.

Por exemplo, um container de PHP rodará uma aplicação PHP, um container de Python, rodará uma aplicação Python, e assim para as demais configurações, como MySQL, SQLServer, Java, entre outros.

Praticidade

Uma das vantagens de utilizar containers é que não há um sistema operacional a ser administrado. Isso porque ele utiliza o conceito de microsserviços, que são um conjunto de pequenos serviços que compõe uma aplicação. Dessa forma, há uma independência entre eles, o que permite que sejam facilmente substituídos.

Custo-benefício

O custo em sua utilização também é uma grande vantagem. Para utilizar containers não é preciso alocar uma equipe para configurar o ambiente de infraestrutura, nem para criar um ambiente de desenvolvimento.

Nesse cenário, seria preciso profissionais com conhecimentos técnicos bem diferenciados para configurar todo o ambiente, o que proporcionaria um custo elevado para a empresa.

Controle

Portanto, a abstração do container é um grande benefício. Pois, a gestão de seu conteúdo é basicamente, feita por DBAs, que cuidam do volume de dados e pelo pessoal de desenvolvimento de softwares. São eles quem atuam diretamente nos containers por meio de ferramentas como o Git —um sistema de controle de versões utilizado para o desenvolvimento de softwares.

Sendo assim, é mais fácil saber o que está em fase de implementação, em fase de operação, qual a versão, qual o momento, e, eventualmente, realizar escalas, atualizações etc.

Configure uma plataforma de containers

O próximo passo é entender o conceito de Docker. Trata-se de uma plataforma open source utilizada para fazer o gerenciamento dos containers. Portanto, essa plataforma contém diversos pacotes e imagens de todos os recursos que podem ser utilizados para a execução de uma aplicação.

O conceito de orquestração de containers também é importante para entender o funcionamento de uma plataforma de containers. Saiba um pouco mais a seguir:

Orquestração de containers

Basicamente, a orquestração é a capacidade de gerenciar e coordenar containers em diversas máquinas, que são os clusters. Por sua vez, eles também precisam de um gerenciamento, a fim de organizar todos as instâncias que podem ser criadas em clouds privadas ou públicas. Nesse cenário, pode-se utilizar tecnologias como OpenShift, Docker e Kubernetes.

Assim, por meio de uma dessas tecnologias, como a Cloud Container OpenShift, a configuração e gerenciamento dos containers é simples e rápida. Todo o serviço é criado por meio de um painel de controle, basta selecionar o tipo de ambiente que se deseja criar, adicionar os containers necessários para o funcionamento da aplicação e definir a localização dos códigos fontes.

Toda essa facilidade de configuração contribui para que a empresa possa focar em outras tarefas, que não sejam configurações de infraestrutura, aplicações de patches de segurança etc. Por exemplo, em uma empresa de SaaS, em que seu principal negócio são as aplicações, mas que precisam de uma boa infraestrutura, a solução de containers traz muitos ganhos e benefícios.

Programe o crescimento sobre demanda

Ao criar um container, são definidas configurações como capacidade de memória, processamento, entre outras configurações escaláveis. Dessa maneira, quando ele atinge um determinado ponto é preciso expandi-lo. Esse processo pode ser configurado para ser feito automaticamente e chama-se auto-scaling.

Assim, ao criar um container com todas as suas configurações, também é estabelecido um gatilho que dispara a próxima instância. Assim, suponha que você crie uma instância com quantidade X de memória e processamento, e estabeleça que ao atingir 75% do processamento será disparado um novo container.

Portanto, a tecnologia faz todo o monitoramento, a fim de perceber o momento certo de disparar a nova instância com os mesmos recursos, a mesma configuração, o mesmo conteúdo. Além disso, existe um Load Balance nativo da solução de containers que começa a distribuir as requisições igualmente entre essas duas instâncias.

Todo esse processo é feito automaticamente. No entanto, você determina até onde ele pode ser expandido. Por exemplo, pode-se definir que sua aplicação consumirá, no máximo, 5 containers e, no mínimo, dois. Nesse caso, já terá um Load Balance atuando sob às duas instâncias iniciais.

Assim, quando eles atingirem o ponto determinado pelo gatilho, será disparado outro container, até que a quantidade máxima que foi estipulada, por exemplo, 5, 10 ou qualquer outro valor a depende do investimento que é feito no projeto, seja alcançada.

A carga de trabalho é distribuída automaticamente entre as instâncias. Dessa forma, se ela não estiver em uso será destruída retroativamente. Portanto, suponha que aplicação não necessite mais de 5 containers, então ele será excluído e a carga redistribuída entre os restantes. Assim, eles serão destruídos até que atinja a configuração mínima estipulada por você.

Portanto, ao determinar sua estrutura de containers, é configurada a quantidade mínima e máxima que vão operar. Além disso, define-se, também, qual será o gatilho para que uma nova instância seja disparada em um momento de pico. Esse é um grande benefício da tecnologia, pois esse tipo de gestão é automático: você cria a regra e ele obedece.

Suponha que a sua aplicação atinja os 5 containers, que foi a quantidade máxima estipulada no exemplo anterior. Nesse cenário, haverá indisponibilidade. Isso porque chegou no limite estipulado e a expansão não vai além do que está dimensionado na configuração.

É importante dizer que o dimensionamento dos recursos deve ser bem planejado para evitar paradas indesejadas. Por exemplo, ao colocar uma instância de 256 megabytes de memória — o que é uma quantidade muito pequena — mesmo que se coloque 5 instâncias para rodar, os problemas vão aparecer, pois a quantidade de memória foi mal dimensionada.

Por isso, o dimensionamento deve levar em consideração o consumo orgânico da aplicação. Imagine que a aplicação rode bem e atenda o consumo orgânico com 1 giga de memória. Portanto, o ambiente está em produção e rodando com 1 giga, esse valor só aumentará se aplicação consumir 75% desse recurso. Só assim ela crescerá horizontalmente.

No entanto, se você trabalha constantemente próximo ao seu limite é porque o seu dimensionamento foi feito de forma equivocada. Ao contrário do que se pensava, um container de 1 giga não era o suficiente para a atender essa operação. O ideal, nesse caso, é redimensionar e reconfigurar os padrões do escalonamento automático.

Como você pôde perceber, o uso de cloud containers é uma forma muito mais leve, rápida e dinâmica de utilizar recursos para uma aplicação. Além disso, são fáceis de configurar e escalonar, o que permite a disponibilização de um ambiente completo para sua aplicação.

Gostou do nosso conteúdo? Quer saber um pouco mais sobre containers? Então, baixe o nosso e-book sobre o Red Hat OpenShift e saiba mais sobre essa tecnologia!