Um livro publicado em 1981, denominado Nailing Jelly to a Tree, descreve o software como “nebuloso e difícil de se agarrar com firmeza”. Isso era verdade em 1981, e não menos verdadeiro há quase quatro décadas. O software sendo de difícil implantação, de gerenciar e de executar.
Os containers Docker fornecem uma maneira de controlar o software. O usuário pode usar o Docker para encerrar um aplicativo de forma que seus problemas de implantação e tempo de execução – como expô-lo em uma rede, gerenciar seu uso de armazenamento e memória e controlar permissões de acesso – sejam manipulados fora do próprio aplicativo e de forma consistente em todos os aplicativos “contidos em container”. É possível executar o container Docker em qualquer host compatível com sistema operacional (Linux ou Windows) que tenha o tempo de execução do Docker instalado.
A ferramenta oferece muitos outros benefícios além desse prático encapsulamento, isolamento, portabilidade e controle. Os containers são pequenos (megabytes) e começam instantaneamente. Eles têm seus próprios mecanismos internos para versionamento e reutilização de componentes. Eles podem ser facilmente compartilhados por meio do Docker Hub público ou do repositório privado.
Antes dos containers
Por muitos anos, o software corporativo tem sido implantado em “bare metal” (instalado em um sistema operacional que possui controle total sobre o hardware subjacente) ou em uma máquina virtual (instalada em um sistema operacional que compartilha o hardware subjacente com outros sistemas operacionais “guest”). Naturalmente, instalar em hardware simples tornou o software dolorosamente difícil de movimentar e difícil de atualizar – duas restrições que dificultaram que a TI reagisse com agilidade às mudanças nas necessidades de negócios.
Então a virtualização chegou. As plataformas de virtualização permitiram que várias máquinas virtuais compartilhassem um único sistema físico, cada máquina virtual emulando o comportamento de um sistema inteiro, completo com seu próprio sistema operacional, armazenamento e E/S, de forma isolada. A TI agora poderia responder de forma mais eficaz às mudanças nos requisitos de negócios, porque as VMs poderiam ser clonadas, copiadas, migradas e ativadas ou desativadas para atender à demanda ou economizar recursos.
As máquinas virtuais também ajudaram a reduzir custos, porque mais VMs poderiam ser consolidadas em menos máquinas físicas. Sistemas legados que executam aplicativos antigos podem ser transformados em VMs e descomissionados fisicamente para economizar ainda mais dinheiro.
Mas as máquinas virtuais ainda têm sua parcela de problemas. As máquinas virtuais são grandes (gigabytes), cada uma contendo um sistema operacional completo. Apenas alguns aplicativos virtualizados podem ser consolidados em um único sistema. Provisionar uma VM ainda leva um bom tempo. Finalmente, a portabilidade das VMs é limitada. Depois de um certo ponto, as VMs não conseguem oferecer o tipo de velocidade, agilidade e economia que as empresas em constante movimentação estão exigindo.
Benefícios do container
Os containers funcionam um pouco como as VMs, mas de uma maneira muito mais específica e granular. Eles isolam um único aplicativo e suas dependências – todas as bibliotecas externas de software que o aplicativo precisa executar – tanto do sistema operacional subjacente quanto de outros containers. Todos os aplicativos em container compartilham um único sistema operacional comum (Linux ou Windows), mas eles são compartilhados entre um e outro e do sistema como um todo.
Os benefícios dos containers Docker aparecem em muitos lugares. Aqui estão algumas das principais vantagens:
Um dos containers de padrões de software torna mais fácil os microsserviços, onde as aplicações são constituídas de muitos componentes fracamente acoplados. Ao decompor aplicativos tradicionais “monolíticos” em serviços separados, os microsserviços permitem que as diferentes partes de um aplicativo de linha de negócios sejam dimensionadas, modificadas e atendidas separadamente – por equipes separadas e em linhas de tempo separadas, se isso for adequado às necessidades do setor.
Os containers não precisam implementar microsserviços, mas são perfeitamente adequados à abordagem de microsserviços e aos processos de desenvolvimento ágil em geral.
Os problemas que não são resolvidos
A primeira coisa a ter em mente sobre containers é o mesmo conselho que se aplica a qualquer tecnologia de software: isso não é uma bala de prata. Eles não podem resolver todos os problemas. Em particular:
Os provedores de serviços de comunicações (CSPs) estão otimistas com relação à inteligência artificial. Mais…
A recente controvérsia envolvendo Scarlett Johansson e a OpenAI levantou uma questão importante sobre o…
Apesar de uma redução no número total de ataques cibernéticos no Brasil entre 2022 e…
A Atos anunciou essa semana a conclusão de um projeto de modernização do sistema de…
A Empresa Brasileira de Pesquisa Agropecuária (Embrapa) planeja testar uma tecnologia de imagem por satélite…
A Nutanix, fornecedora de soluções hiperconvergentes, tem como seu modelo de negócios a venda via…