Os contentores foram desenvolvidos para serem ferramentas sem estado, efêmeras e leves, com apenas megabytes de tamanho, para acelerar o lançamento do aplicativo. No entanto, esse design é problemático quando os dados precisam persistir depois que o contentor desaparece. E esse problema aumenta à medida que a escala das implantações de gerenciamento de contêineres com ferramentas como Docker, mesosfera e Kubernetes cresce.
Agora, os usuários executam centenas (às vezes milhares) de nós nos clusters, dificultando ainda mais o gerenciamento de dados, atendendo aos ciclos de vida imprevisíveis dos contêineres.
Para garantir que os dados persistam muito além do ciclo de vida do contêiner, a prática recomendada é separar o gerenciamento de dados dos contêineres. Há três abordagens para a persistência de dados em um ambiente de contêiner:
Plug-ins destorage . Um plug-in de armazenamento é a opção mais confiável e gerenciável para armazenamento persistente. Um plug-in de volume padrão permite criar, excluir e montar volumes persistentes, além de dar suporte a comandos de aplicações de gerenciamento de contêineres. O Kubernetes oferece esse plug-in. Muitas empresas de storage também criaram recursos incrementais em suas APIs de contêiner para simplificar ainda mais o processo de gerenciamento de contêineres. Esses plug-ins oferecem recursos como gerenciamento e consumo de volumes de qualquer host de gerenciamento, consumo de storage existente ou diferenciação de ofertas de storage com várias instâncias.
Recipientes de volume dedados . Esses contêineres permitem que você gerencie dados dentro e entre vários contêineres. Um contêiner de volume de dados não executa uma aplicação; serve como um ponto de entrada a partir do qual outros contêineres podem acessar o volume de dados. Os volumes de dados podem ser compartilhados entre contentores e podem persistir mesmo depois que o próprio contentor é excluído. Embora a configuração desse método seja relativamente simples, o gerenciamento contínuo se torna complexo. À medida que os contentores são excluídos, os dados deixados para trás podem se tornar órfãos e, muitas vezes, não são limpos pelo gerenciador de contentores. Como os contentores de volume de dados podem ser acessados diretamente pelo host, os dados órfãos podem ser coletados conforme necessário. No entanto, o processo pode levar o acesso aos dados Privileges a ficar corrompido, deixando dados potencialmente confidenciais vulneráveis.
Montagens de diretório. Esses suportes amarram o host ao recipiente. A estrutura de dados é mantida do host para o contêiner, permitindo persistência e reutilização. As montagens de diretório podem então ser acessadas para ler e escrever, o que também deixa lacunas de segurança. Como a montagem do diretório pode ter acesso ao diretório de um sistema host, o contentor também detém a capacidade de excluir ou alterar conteúdo. Essa vulnerabilidade significa que não só alguém com intenção maliciosa poderia excluir um volume de dados inteiro, como também poderia manipular dados através desses pontos de acesso.
Embora o uso de contentores esteja explodindo, outra ferramenta comumente usada pelos desenvolvedores de aplicativos é a máquina virtual (VM). As VMs oferecem vários benefícios, por exemplo, são persistentes por padrão. Os gerentes de VM incluem software, firmware e hardware para sua própria instância única do sistema operacional, tornando a VM gigabytes de tamanho. Como resultado, as VMs não são implantadas rapidamente e não são fáceis de mover por pipelines de desenvolvimento.
No entanto, as VMs permanecem relevantes porque permitem consolidar aplicações em um único sistema, permitindo economia de custos com um espaço físico reduzido, provisionamento de servidor mais rápido e recuperação de desastres aprimorada. O desenvolvimento também se beneficia dessa consolidação porque uma maior utilização em servidores maiores e mais rápidos libera os servidores não utilizados posteriormente para serem reutilizados para QA, desenvolvimento ou equipamento de laboratório.
VMs e contêineres diferem de várias maneiras. A principal diferença é que os contêineres fornecem uma maneira de virtualizar um sistema operacional para que várias cargas de trabalho possam ser executadas em uma única instância do sistema operacional, enquanto que, com VMs, o hardware está sendo virtualizado para executar várias instâncias do sistema operacional. A velocidade, agilidade e portabilidade dos contêineres fazem deles mais uma ferramenta para ajudar a otimizar o desenvolvimento de software.
Os plug-ins de storage de contêiner certamente fornecem um caminho mais confiável e consistente para a persistência de dados do que as VMs. Embora, no início da introdução, o feedback inicial sugira storage, os plug-ins são o método simples de storage persistente.
Ao escolher seu método para alcançar o armazenamento persistente, considere as vantagens e desvantagens de cada uma dessas opções. Ao entender completamente as opções, as organizações podem se preparar para lidar com as limitações e habilitar as práticas recomendadas de persistência e performance dos dados.