LFCA Aprenda os conceitos básicos de usar recipientes - Parte 22

LFCA Aprenda os conceitos básicos de usar recipientes - Parte 22

Com o tempo, à medida que a demanda por testes rápidos e a implantação de aplicativos cresceu juntamente com ciclos de negócios mais rápidos, as organizações foram obrigadas a inovar para acompanhar o ambiente de negócios em ritmo acelerado.

A busca para modernizar aplicativos e construir novos para criar fluxos de trabalho ágeis levou ao conceito de usar contêineres. A tecnologia de contêinerização é quase tão antiga quanto a virtualização. No entanto, os recipientes não acenderam muita emoção até Docker explodiu em cena em 2013 e evocou um interesse frenético entre desenvolvedores e outros profissionais de TI.

Atualmente, todas as entidades de tecnologia gigantes, como Google, Amazonas, Microsoft, e chapéu vermelho para mencionar alguns saltaram na onda.

Por que contêineres?

Um dos desafios que os desenvolvedores enfrentaram é a diferença nos ambientes de computação em todas as etapas do desenvolvimento de software. Problemas surgem quando o ambiente de software é diferente de um estágio para o próximo.

Por exemplo, um aplicativo pode ser executado perfeitamente em um ambiente de teste usando a execução Python 3.6. No entanto, o aplicativo se comporta estranhamente, retorna alguns erros ou trava completamente quando portados para um ambiente de produção em execução Python 3.9.

Os contêineres chegaram ao local para enfrentar esse desafio e garantir que os aplicativos funcionem de maneira confiável quando transferidos de um ambiente de computação para o próximo em todas as etapas do desenvolvimento de software - do PC dos desenvolvedores até o ambiente de produção. E não são apenas o ambiente de software que pode trazer essas inconsistências, mas também as diferenças nas políticas de topologia e segurança de rede.

O que são contêineres?

A recipiente é uma unidade de software isolada que inclui todo o código binário, bibliotecas, executáveis, dependências e arquivos de configuração em um único pacote de forma que o aplicativo seja executado sem problemas quando portado de um ambiente de computação para outro. Não vem com uma imagem do sistema operacional que a torna leve e facilmente portátil.

Uma imagem de contêiner é um pacote independente, leve e executável que agrupa tudo o que é necessário para executar o aplicativo. Em tempo de execução, uma imagem de contêiner se transforma em um contêiner. No caso de Docker, Por exemplo, uma imagem do docker se torna um recipiente do docker quando executado em Motor Docker. Docker é um ambiente de tempo de execução usado para a construção de aplicativos de contêineres.

Os contêineres são executados em total isolamento do sistema operacional subjacente, e os aplicativos de contêiner sempre serão executados de forma consistente, independentemente do ambiente de computação ou da infraestrutura. É por esse motivo que um desenvolvedor pode desenvolver um aplicativo a partir do conforto deste laptop e implantá -lo prontamente em um servidor.

A consistência e a confiabilidade dos contêineres em execução dão aos desenvolvedores tranqüilidade ao saber que suas aplicações serão executadas conforme o esperado, independentemente de onde sejam implantadas.

Como os contêineres são diferentes das máquinas virtuais?

Uma coisa comum que os contêineres e as máquinas virtuais compartilham é que elas operam em um ambiente virtualizado. A contêinerização, em certo sentido, é uma forma de tecnologia virtualizada. No entanto, os contêineres diferem das máquinas virtuais de várias maneiras.

Máquinas virtuais

Uma máquina virtual também chamada de instância virtual ou Vm Em resumo, é uma emulação de um servidor físico ou PC. A virtualização é uma tecnologia que torna possível criar máquinas virtuais. O conceito de virtualização remonta ao início da década de 1970 e estabeleceu a base para a primeira geração de tecnologia em nuvem.

Na virtualização, uma camada de abstração é criada no topo de um servidor nua ou hardware do computador. Isso torna possível que os recursos de hardware de um único servidor sejam compartilhados em várias máquinas virtuais.

O software usado para fazer a camada de abstração é referido como um hipervisor. O hypervisor abstrai a máquina virtual e o sistema operacional convidado do hardware bare metal ou computador. Assim, uma máquina virtual fica no topo do hipervisor, que disponibiliza os recursos de hardware graças à camada de abstração.

As máquinas virtuais executam um sistema operacional completo (OS convidado), independente do sistema operacional subjacente (OS do host) no qual o hipervisor está instalado. O sistema operacional convidado fornece uma plataforma para construir, testar e implantar aplicativos ao lado de suas bibliotecas e binários.

[Você também pode gostar: como instalar o KVM no CentOS/Rhel 8]

Existem dois tipos de hipervisores:

Hypervisor tipo 1 (hipervisor bare metal)

Esse Hipervisor é instalado diretamente em um servidor físico ou no hardware subjacente. Não existe um sistema operacional que fique entre o hardware e o hardware do computador, daí o nome da tag Bare-metal Hipervisor. Ele fornece excelente suporte, pois os recursos não são compartilhados com o sistema operacional host.

Hipervisor tipo 1

Devido à sua eficiência, os hipervisores tipo 1 são usados ​​principalmente em ambientes corporativos. Os fornecedores de hipervisor tipo 1 incluem VMware Esxi e KVM.

Hypervisor tipo 2:

Isso também é considerado um hipervisor hospedado. Ele está instalado no topo do sistema operacional host e compartilha os recursos de hardware subjacentes com o sistema operacional host.

Hipervisor tipo 2

Os hipervisores tipo 2 são ideais para pequenos ambientes de computação e são usados ​​principalmente para testar sistemas operacionais e pesquisas. Os fornecedores de hipervisor tipo 2 incluem Oracle VirtualBox e VMware Workstation Pro.

A desvantagem com máquinas virtuais

As máquinas virtuais tendem a ser enormes em tamanho (pode ocupar vários GBs), lenta para começar e parar e devorar muitos recursos do sistema, levando a suspensões e desempenho lento devido a recursos limitados. Como tal, uma máquina virtual é considerada volumosa e está associada a altos custos indiretos.

Containers

Ao contrário de uma máquina virtual, um contêiner não requer um hipervisor. Um contêiner fica no topo de um servidor físico e seu sistema operacional e compartilha o mesmo kernel que o sistema operacional, entre outras coisas, como bibliotecas e binários. Vários contêineres podem ser executados no mesmo sistema, cada um executando seu próprio conjunto de aplicativos e processos do resto. As plataformas populares de contêineres incluem Docker e podman.

Containers

Ao contrário das máquinas virtuais, os contêineres são executados em total isolamento do sistema operacional subjacente. Os contêineres são excepcionalmente leves - apenas alguns megabytes - ocupam menos espaço e são adequados para recursos. Eles são fáceis de começar e parar e podem lidar com mais aplicações do que uma máquina virtual.

Benefícios do uso de contêineres

Os contêineres fornecem uma maneira conveniente de projetar, testar e implantar aplicativos do seu PC direito para um ambiente de produção, seja na premissa ou na nuvem. Aqui estão alguns dos benefícios do uso de aplicações de contêineres.

1. Maior modularidade

Antes dos contêineres, tínhamos o modelo monolítico à moda antiga, onde um aplicativo inteiro composto por componentes de front-end e back-end seria agrupado em um único pacote. Os contêineres possibilitam dividir um aplicativo em vários componentes individuais que podem se comunicar.

Dessa forma, as equipes de desenvolvimento podem colaborar em várias partes de um aplicativo, desde que não sejam feitas grandes modificações em relação à maneira como os aplicativos interagem entre si.

É nisso que o conceito de microsserviços é baseado em.

2. Produtividade aumentada

Mais modularidade significa mais produtividade, pois os desenvolvedores são capazes de trabalhar em componentes individuais dos erros de aplicativo e depuração muito mais rápido do que antes.

3. Custos indiretos reduzidos

Em comparação com máquinas virtuais e outros ambientes de computação convencionais, os contêineres usam menos recursos do sistema, pois não incluem um sistema operacional. Isso evita despesas desnecessárias na aquisição de servidores caros para criar e testar aplicativos.

4. Aumento da portabilidade

Devido à sua pequena pegada, os aplicativos de contêiner são facilmente implantados em vários ambientes de computação / sistemas operacionais.

5. Maior eficiência e flexibilidade

Os contêineres permitem implantação rápida e escala de aplicativos. Eles também fornecem a flexibilidade necessária para implantar aplicativos em vários ambientes de software.

Como os contêineres beneficiam as equipes do DevOps?

Contêineres desempenham um papel fundamental em DevOps E seria impossível imaginar como seria a situação sem aplicações em contêiner. Então, o que os contêineres trazem para a mesa?

Primeiro, os contêineres sustentam a arquitetura dos microsserviços, permitindo que os blocos de construção de todo um aplicativo sejam desenvolvidos, implantados e escalados de forma independente. Como mencionado, isso contribui para uma maior colaboração e rápida implantação de aplicativos.

A contêinerização também desempenha um papel importante na facilitação dos pipelines CI/CD, fornecendo um ambiente controlado e consistente para a criação de aplicações. Todas as bibliotecas e dependências são embaladas junto com o código em uma única unidade para implantação mais rápida e fácil. O aplicativo testado será o software exato que será implantado na produção.

Além disso, os contêineres aprimoram o lançamento de patches e atualizações quando um aplicativo é dividido em vários microsserviços., cada um em um recipiente separado. Recipientes individuais podem ser examinados, corrigidos e reiniciados sem interromper o restante do aplicativo.

Conclusão

Qualquer organização que procura alcançar a maturidade em DevOps deve considerar alavancar o poder dos contêineres para implantações ágeis e sem costura. O desafio está em saber como configurar, proteger e implantá -los perfeitamente em vários ambientes.

Torne -se um Associado de TI certificado pela Fundação Linux (LFCA)