BlogTécnico

Saiba o que são contêineres em cloud computing

Os contêineres são unidades executáveis ​​de software nas quais o código do aplicativo é empacotado, juntamente com suas bibliotecas e dependências, de maneiras comuns para que possa ser executado em qualquer lugar, seja no desktop, na TI tradicional ou na nuvem.

Para fazer isso, os contêineres aproveitam uma forma de virtualização do sistema operacional (SO) na qual os recursos do SO (no caso do kernel Linux, ou seja, os namespaces e as primitivas cgroups) são aproveitados para isolar processos e controlar a quantidade de CPU, memória e disco aos quais esses processos têm acesso.

Os contêineres são pequenos, rápidos e portáteis porque, diferentemente de uma máquina virtual, os contêineres não precisam incluir um sistema operacional convidado em cada instância e podem, em vez disso, simplesmente aproveitar os recursos e recursos do sistema operacional host.

Os contêineres apareceram pela primeira vez décadas atrás com versões como FreeBSD Jails e AIX Workload Partitions, mas a maioria dos desenvolvedores modernos se lembra de 2013 como o início da era moderna dos contêineres com a introdução do Docker.

Contêineres x máquinas virtuais (VMs)

Uma maneira de entender melhor um contêiner é entender como ele difere de uma máquina virtual (VM) tradicional. Na virtualização tradicional, seja no local ou na nuvem, um hipervisor é aproveitado para virtualizar o hardware físico. Cada VM contém um sistema operacional convidado, uma cópia virtual do hardware que o sistema operacional requer para ser executado, juntamente com um aplicativo e suas bibliotecas e dependências associadas.

Em vez de virtualizar o hardware subjacente, os contêineres virtualizam o sistema operacional (normalmente Linux) para que cada contêiner individual contenha apenas o aplicativo e suas bibliotecas e dependências. A ausência do sistema operacional convidado é o motivo pelo qual os contêineres são tão leves e, portanto, rápidos e portáteis.

Benefícios dos contêineres

A principal vantagem dos contêineres, especialmente em comparação com uma VM, é fornecer um nível de abstração que os torna leves e portáteis.

Leve: os contêineres compartilham o kernel do SO da máquina, eliminando a necessidade de uma instância de SO completa por aplicativo e tornando os arquivos de contêiner pequenos e fáceis de usar. Seu tamanho menor, especialmente em comparação com as máquinas virtuais, significa que eles podem acelerar rapidamente e oferecer suporte melhor a aplicativos nativos da nuvem que são dimensionados horizontalmente.

Portátil e independente de plataforma: os contêineres carregam todas as suas dependências com eles, o que significa que o software pode ser escrito uma vez e executado sem precisar ser reconfigurado em laptops, nuvem e ambientes de computação local.

Suporta desenvolvimento e arquitetura modernos: devido a uma combinação de sua portabilidade/consistência de implantação entre plataformas e seu pequeno tamanho, os contêineres são ideais para desenvolvimento moderno e padrões de aplicativos, como DevOps, sem servidor e microsserviços — que são construídos são implantações de código regulares em pequenos incrementos.

Melhora a utilização: como as VMs anteriores, os contêineres permitem que desenvolvedores e operadores melhorem a utilização de CPU e memória de máquinas físicas. Onde os contêineres vão ainda mais longe é porque eles também permitem arquiteturas de microsserviços, os componentes do aplicativo podem ser implantados e dimensionados de forma mais granular, uma alternativa atraente para ter que dimensionar um aplicativo monolítico inteiro porque um único componente está lutando com a carga.

Casos de uso para contêineres

Os contêineres estão se tornando cada vez mais proeminentes, especialmente em ambientes de nuvem. Muitas organizações estão até considerando os contêineres como substitutos das VMs como plataforma de computação de uso geral para seus aplicativos e cargas de trabalho. Mas dentro desse escopo muito amplo, existem casos de uso importantes em que os contêineres são especialmente relevantes.

Microsserviços: os contêineres são pequenos e leves, o que os torna uma boa combinação para arquiteturas de microsserviços em que os aplicativos são construídos de muitos serviços menores, fracamente acoplados e implantáveis ​​de forma independente.

DevOps: A combinação de microsserviços como arquitetura e contêineres como plataforma é uma base comum para muitas equipes que adotam o DevOps como forma de construir, enviar e executar software.

Híbrido, multinuvem: como os contêineres podem ser executados de forma consistente em qualquer lugar, em laptops, ambientes locais e em nuvem, eles são uma arquitetura subjacente ideal para cenários de nuvem híbrida e multinuvem em que as organizações se encontram operando em uma combinação de várias nuvens públicas em combinação com seu próprio centro de dados.

Modernização e migração de aplicativos: uma das abordagens mais comuns para a modernização de aplicativos começa por contê-los para que possam ser migrados para a nuvem.

Conteinerização

O software precisa ser projetado e empacotado de maneira diferente para aproveitar os contêineres – um processo comumente chamado de conteinerização.

Ao colocar um aplicativo em contêiner, o processo inclui empacotar um aplicativo com suas variáveis de ambiente relevantes, arquivos de configuração, bibliotecas e dependências de software. O resultado é uma imagem de contêiner que pode ser executada em uma plataforma de contêiner.

Orquestração de contêineres com Kubernetes

À medida que as empresas começaram a adotar os contêineres – geralmente como parte de arquiteturas modernas e nativas da nuvem – a simplicidade do contêiner individual começou a colidir com a complexidade de gerenciar centenas (até milhares) de contêineres em um sistema distribuído.

Para enfrentar esse desafio, a orquestração de contêineres surgiu como uma forma de gerenciar grandes volumes de contêineres ao longo de seu ciclo de vida, incluindo:

*Provisionamento;
*Redundância;
*Monitoramento de integridade;
*Alocação de recursos;
*Dimensionamento e balanceamento de carga;
*Movendo-se entre hosts físicos.

Embora muitas plataformas de orquestração de contêineres (como Apache Mesos, Nomad e Docker Swarm) tenham sido criadas para ajudar a enfrentar esses desafios, o Kubernetes, um projeto de código aberto lançado pelo Google em 2014, rapidamente se tornou a plataforma de orquestração de contêineres mais popular e é a um que a maioria da indústria padronizou.

O Kubernetes permite que desenvolvedores e operadores declarem um estado desejado de seu ambiente geral de contêiner por meio de arquivos YAML e, em seguida, o Kubernetes faz todo o trabalho duro para estabelecer e manter esse estado, com atividades que incluem a implantação de um número especificado de instâncias de um determinado aplicativo ou carga de trabalho, reinicialização desse aplicativo se ele falhar, balanceamento de carga, dimensionamento automático, implantações de tempo de inatividade zero e muito mais.

Fique por dentro das tendências e inovações educacionais aqui no blog da ITExperts!

Originalmente publicado em: https://www.ibm.com/cloud/learn/containers

Conheça ITExperts e nossas soluções em cloud para Educação.

Solução em infraestrutura educacional.

Mantenha-se atualizado

Leia também

BlogTecnologia e Educação

O LMS baseado em nuvem veio para ficar

Quero saber mais
Blog

Saiba mais sobre o Amazon S3 Glacier

Quero saber mais
BlogTecnologia e Educação

Learning Analytics: o que é essa ferramenta e qual o seu diferencial

Quero saber mais
Abra o chat
Olá, gostaria de um atendimento?
Olá! No que podemos te ajudar?