Nos últimos anos, o termo “container” se tornou popular especialmente entre os desenvolvedores. Isso porque, no ambiente da computação na nuvem, criar áreas específicas, que contenham todas as instruções necessárias para que os aplicativos rodem sem interferências pode ser não apenas desejável, mas necessário. Resumidamente, o conceito dos containers é a criação de um delimitador abstrato, que contém todos os objetos necessários para uma determinada operação. Esses objetos podem ser incluídos ou excluídos, sem que esse movimento tenha repercussões para o sistema como um todo.
Como dá para perceber, o conceito de containers é mais que útil quando se pensa em aplicações desenvolvidas para rodar na nuvem, especialmente quando se pensa em ambientes virtualizados. É uma forma simples de criar um “quintal” particular para a aplicação, de modo que os recursos necessários para que ela rode estejam todos presentes e agrupados. O resultado mais visível da disseminação do conceito de container é a velocidade com que os desenvolvedores passaram a conseguir entregar suas aplicações. Também ficou muito mais fácil replicar e escalar os softwares, já que se tornou muito mais simples criar imagens completas.
Storage e Container
O uso dos containers, no entanto, não ficou restrito aos aplicativos. A evolução do conceito levou-os também para os sistemas de storage. A partir dos containers usados em sistemas hiperconvergentes, passou a ser possível oferecer soluções de storage como um microsserviço. Ou seja, quando se pensa em SDS (software definede storage), o uso do conceito de containers trouxe para a equação a mesma velocidade e a mesma escalabilidade que antes estavam presentes apenas no mundo dos aplicativos.
A plataforma Docker
A plataforma Docker vem se mostrando uma das boas alternativas para o gerenciamento dos containers de programação. Uma das grandes vantagens é justamente sua flexibilidade e sua mecânica baseada em camadas de programação.
Inicialmente, a plataforma Docker cria uma imagem do container. Quando há alguma modificação nessa imagem original, uma camada é sobreposta aos arquivos originais – preservando sua integridade. Imagine que essa mesma modificação seja revertida: a lógica é a mesma, uma nova camada de software é colocada sobre a duas originais, preservando o processo.
Mas, talvez o ponto mais interessante da plataforma Docker seja justamente sua capacidade de criar objetos permanentes, mesmo usando containers. Acontece que quando se trabalha com containers, caso um deles seja apagado, todas as informações (ou objetos) referentes são eliminados no processo. Esse recurso é especialmente interessante no caso de DevOps, mas nem tanto quando se pensa em storage. Felizmente, há a possibilidade de se criar volumes persistentes com a plataforma Docker. Isso pode ser feito tanto no nível do próprio container (que pode ser transfomado num objeto persistente), quanto no nível dos elementos que compõem um determinado container.
O uso do conceito de container (que torna possível oferecer storage como um microsserviço), aliado ao gerenciamento oferecido pela plataforma Docker, estão entre as maneiras mais eficientes e modernas de construir ambientes dinâmicos e escaláveis, especialmente em arquiteturas abertas.