Containerização

O que é conteinerização?

A conteinerização é um método para fornecer código de software de uma forma que combina todos os elementos necessários em um pacote que pode ser movido facilmente entre tipos de infraestrutura. O contêiner inclui as bibliotecas, as dependências e as estruturas necessárias para executar um aplicativo. Esse contêiner mantém o aplicativo independente de seu ambiente e totalmente portátil entre ambientes de infraestrutura. A conteinerização está relacionada à virtualização, mas tem vantagens para determinados tipos de cargas de trabalho.

Benefícios da conteinerização

Um contêiner é abstraído do sistema operacional host, com acesso limitado aos recursos subjacentes. Isso o torna mais leve do que uma máquina virtual completa, mas com grande portabilidade e flexibilidade. O contêiner pode ser executado em diferentes tipos de infraestrutura, como servidores bare metal, em máquinas virtuais ou na nuvem. O código pode ser transferido mais facilmente de um sistema local para a nuvem ou entre sistemas operacionais.

Como não é necessário rodar uma máquina virtual inteira, há menos sobrecarga, sem a necessidade de carregar um sistema operacional separado para cada contêiner, pois o kernel é compartilhado. A alta eficiência da conteinerização a torna ideal para fornecer os microsserviços exigidos por um aplicativo moderno. Como os contêineres são isolados, eles podem ser mantidos seguros uns dos outros porque qualquer comprometimento malicioso ou conflito de código é impedido de ser transferido entre eles. O isolamento é menos completo do que em uma máquina virtual completa, mas as ameaças podem ser minimizadas. A implantação rápida significa que os contêineres podem ser interrompidos e reiniciados rapidamente no caso de um problema.

Exemplos de contêineres

A conteinerização tem muitos usos em todo o ciclo de vida do fornecimento de um serviço de software.

  • Um aplicativo criado em um contêiner localmente será executado de forma idêntica quando transferido para a infraestrutura de produção durante o desenvolvimento.
  • O código legado pode ser executado em um contêiner, removendo sua dependência do hardware legado e permitindo que ele seja movido facilmente entre tipos de infraestrutura, como de servidores locais para a nuvem.
  • Os serviços em que a segurança é essencial, como os que hospedam transações financeiras, podem ser fornecidos por meio de contêineres, permitindo uma escalabilidade mais rápida e segura à medida que a demanda aumenta.
  • Na computação automotiva, os microsserviços fornecidos a um veículo definido por software conectado podem ser fornecidos de forma leve, dinâmica e segura usando a conteinerização, por exemplo, por meio do site BlackBerry QNX na nuvem.

Como funciona a conteinerização

A conteinerização é executada sobre a infraestrutura local ou baseada na nuvem. A última será implantada com um sistema operacional compartilhado, no qual está instalado o mecanismo de contêiner, por exemplo, o Docker ou o Google Kubernetes Engine. Isso orquestra os contêineres hospedados, cada um consistindo em um aplicativo ou aplicativos e nas dependências necessárias. Esse contêiner será executado de forma confiável independentemente do ambiente de computação que atua como host, pois não depende de seus recursos.

Um contêiner pode conter um aplicativo ou aplicativos inteiros, mas também pode permitir uma abordagem modular para fornecer um aplicativo complexo. Isso pode ser dividido em módulos, cada um executado em seu próprio contêiner, o que é conhecido como uma abordagem de microsserviços. Embora os contêineres sejam geralmente isolados, eles podem ter a capacidade de se comunicar entre si por meio de canais bem definidos. Devido à natureza leve dos contêineres, eles podem ser iniciados Just-In-Time, conforme necessário, em vez de serem deixados em execução, onde continuarão a consumir recursos.

Containerização versus virtualização

A conteinerização é frequentemente mencionada no mesmo contexto da virtualização. Eles estão intimamente relacionados, mas adotam abordagens ligeiramente diferentes. A virtualização simula todo o hardware físico, incluindo núcleos de CPU, memória, armazenamento e até mesmo aceleração de GPU, no qual um sistema operacional convidado é executado. A conteinerização não simula o hardware, apenas o sistema operacional. Portanto, vários aplicativos podem compartilhar o mesmo kernel do sistema operacional. Na prática, as funções podem ser semelhantes entre um contêiner e uma máquina virtual completa. Embora a última ofereça maior isolamento de recursos, a abordagem leve da conteinerização oferece vantagens quando a implementação dinâmica rápida é benéfica. de um aplicativo ou aplicativos e as dependências necessárias. Esse contêiner será executado de forma confiável, independentemente do ambiente de computação que atua como host, pois não depende de seus recursos.

Um contêiner pode conter um aplicativo ou aplicativos inteiros, mas também pode permitir uma abordagem modular para fornecer um aplicativo complexo. Isso pode ser dividido em módulos, cada um executado em seu próprio contêiner, o que é conhecido como uma abordagem de microsserviços. Embora os contêineres sejam geralmente isolados, eles podem ter a capacidade de se comunicar entre si por meio de canais bem definidos. Devido à natureza leve dos contêineres, eles podem ser iniciados Just-In-Time, conforme necessário, em vez de serem deixados em execução, onde continuarão a consumir recursos.