Container: Uma nova tendência tecnológica
Implementar uma arquitetura de micros serviços para uma grande aplicação ou projeto pode representar uma demanda intensiva de recursos, mas é um esforço que é recompensado pelos ganhos de agilidade obtidos.
Grandes companhias estão explorando as possibilidades que as soluções em container oferecem. Mas, afinal, do que se trata? Containers são ambientes portáveis e isolados, que permitem aos desenvolvedores empacotar aplicações com todos os links e bibliotecas necessárias para sua execução. O uso desta tecnologia melhora a eficiência das equipes de software, porque facilita o trabalho conjunto de seus integrantes, ao mesmo tempo em que facilita a implementação das aplicações em ambientes não heterogêneos.
Em grandes companhias, aplicações como conjuntos de software de ERP ou de CRM, frequentemente começam como simples projetos, mas, com o passar do tempo, se tornam rapidamente “desajeitadas” e ineficientes, com um código-fonte monolítico que emperra o progresso dos times de desenvolvimento. Para superar esta ineficiência, uma nova abordagem desagrega a aplicação em componentes menores, conhecidos como microsserviços. Adotar uma arquitetura de microsserviços dá, às equipes de desenvolvimento, eficiência operacional em função do pequeno código-fonte de cada componente de aplicação.
Na medida em que o software passa por vários estágios de desenvolvimento, pode avançar do PC do desenvolvedor para um ambiente de laboratório ou de teste; ou se mover de um ambiente físico para um virtual e, finalmente, para um de produção. Em cada um desses ambientes, a aplicação deve ter um desempenho consistente. A tecnologia de container resolve o problema dos desenvolvedores de software para encapsular um componente de aplicação em um pacote único e leve. Baseada em Linux, a tecnologia promete rodar com consistência entre um ambiente de computador para outro, seja ele virtual ou físico.
Os containers também são uma ferramenta ideal para DevOps*, tanto para desenvolvedores como para administradores de sistemas, porque liberam os primeiros para manter o foco na sua atividade principal, enquanto os times de operações se beneficiam da flexibilidade, de menores áreas ocupadas no data center e de custos mais baixos.
A tecnologia de container trabalha melhor quando cada elemento é designado para um processo simples. Por isso, começar a implementar uma arquitetura de microsserviços para uma grande aplicação ou projeto de software pode representar uma demanda intensiva de recursos, mas é um esforço que é recompensado pelos ganhos de agilidade obtidos, em função da velocidade de implementação dos containers, que varia de milissegundos a poucos segundos. O carregamento da aplicação no container usa o kernel do servidor que hospeda o sistema operacional, o que exclui a necessidade de recuperar o sistema operacional (OS) como parte do processo inicial.
Gerenciadores de Containers
O grupo de máquinas físicas ou virtuais no qual os containers podem ser executados é chamado de cluster, que necessita de alguma forma de monitoramento. Como parte da evolução de tecnologias de container, as empresas podem empregar ferramentas de gerenciamento como o OpenShift e o Kubernetes, desenvolvido pela Google, que trabalham em conjunto com o Docker (projeto OpenSource que fornece uma plataforma para desenvolvedores e administradores de sistemas, permitindo que se criem containers). Além de operar como o equipamento de execução para containers, o Docker também provê o gerenciamento de seus sistemas de arquivos.
Ferramentas de gerenciamento de cluster como o Kubernetes, em geral, criam uma abstração no nível de um componente de aplicação. Essa abstração, chamada de pod, inclui um grupo de um ou mais containers, seu armazenamento compartilhado, e opções para operá-los. Agendar pods em uma máquina no cluster representa o Docker executando um container.
As empresas poderão adotar cada vez mais arquiteturas de microsserviços e aplicações em ambientes virtualizados e de cloud, adotando soluções inovadoras como containers.