O que são contêineres em nuvem?

Contêineres em nuvem são pacotes de código de software que contêm o código de uma aplicação, suas bibliotecas e outras dependências de que ele precisa para ser executado na nuvem. Qualquer código de aplicação de software exige arquivos adicionais, chamados de bibliotecas e dependências, antes de ser executado. Tradicionalmente, o software precisava ser empacotado em vários formatos para execução em diferentes ambientes, como Windows, Linux, Mac e dispositivos móveis. No entanto, um contêiner empacota o software e todas as suas dependências em um único arquivo, que pode ser executado em qualquer lugar. A execução do contêiner na nuvem oferece benefícios adicionais de flexibilidade e performance em grande escala.

Quais são os benefícios dos contêineres em nuvem?

As aplicações podem consistir em dezenas, centenas ou até milhares de contêineres. Com contêineres em nuvem, você pode distribuir e gerenciar esses contêineres em vários servidores ou instâncias de nuvem diferentes. Os contêineres em nuvem funcionam como se estivessem no mesmo local. Há muitos benefícios nas arquiteturas de aplicações de computação em nuvem distribuída. 

Leia sobre servidores em nuvem

Implantação simplificada de aplicativos

Os contêineres são exclusivos porque você pode usá-los para implantar software em praticamente qualquer ambiente — sem agrupar especificamente o software para a arquitetura e os sistemas operacionais subjacentes. Antes que a conteinerização se tornasse popular, as aplicações precisavam ser agrupadas com bibliotecas específicas para serem executadas em plataformas específicas. Significava que a implantação de um software em vários sistemas operacionais resultaria em várias versões do software. Os contêineres em nuvem permitem que as aplicações sejam executadas em qualquer arquitetura subjacente, desde que a plataforma de conteinerização seja executada por cima. Agora, você precisa de apenas uma versão do contêiner em nível de produção.

Flexibilidade

Com a conteinerização na nuvem, as máquinas virtuais (VM) subjacentes são todas instâncias da nuvem. As instâncias da nuvem estão disponíveis em várias configurações, com definição de preços para a rápida expansão, desmontagem e computação em nuvem sob demanda. Essa reconfigurabilidade significa que você pode incluir e remover máquinas conforme a necessidade, dependendo das demandas da aplicação. Você pode otimizar o uso de recursos balanceando a carga de aplicações baseadas em contêineres em várias instâncias da nuvem, em vez de servidores individuais.

Leia sobre balanceamento de carga

Resiliência

Os contêineres em nuvem oferecem maior confiabilidade e disponibilidade para as aplicações. Em uma arquitetura distribuída e em contêineres, se uma determinada máquina falhar, outra pode rapidamente ativar os contêineres perdidos, aumentando a resiliência da aplicação. Você pode atualizar uma nova versão de um único contêiner na aplicação com o mínimo de interrupção no restante dessa aplicação. Isso resulta em tempos de atividade mais longos.

Escalabilidade

Em ambientes tradicionais de produção de aplicações, a aplicação é limitada por um único recurso de servidor. Com o design correto da aplicação e a abordagem de conteinerização em nuvem, o processamento de dados e a entrada/saída de uma aplicação não são mais limitados pelas limitações de um único servidor. São distribuídos entre as máquinas, para que você possa escalar ilimitadamente e garantir desempenho e experiência de usuário consistentes.

 

Quais são os casos de uso dos contêineres em nuvem?

Os contêineres em nuvem são úteis para qualquer organização que cria ou executa aplicações em contêineres e deseja usar recursos de computação em nuvem.

Microsserviços

Com a arquitetura de microsserviços, você pode decompor aplicações em componentes independentes menores, que executam uma única função. Isso gera flexibilidade e incentiva a reutilização e a eficiência do código. Os contêineres em nuvem permitem a execução de grandes aplicações de centenas ou até milhares de microsserviços em uma rede distribuída de instâncias de nuvem. Ao compartilhar a workload em várias instâncias, você pode otimizar suas operações para obter o melhor custo e garantir a continuidade dos serviços em caso de inatividade de uma máquina.

DevOps

DevOps é a automação e o gerenciamento da criação, teste e execução de aplicações de software. O processo em si é repetível, versionado e disponível como código, o que economiza tempo no desenvolvimento e reduz o número de erros manuais que podem acontecer. O processo de conteinerização e implantação é semelhante e se encaixa bem com os processos e ferramentas tradicionais de DevOps. Os arquivos de contêiner em nuvem podem ser versionados e oferecem suporte às práticas de integração contínua/implantação contínua (CI/CD) do DevOps.

Leia sobre DevOps

Leia sobre integração contínua

Nuvem híbrida

Talvez você queira executar arquiteturas de aplicações baseadas em contêineres por meio de servidores locais e baseados em nuvem. A implantação de contêineres em nuvem se adapta bem à combinação de nuvem híbrida. Os serviços de contêiner exigem apenas a configuração correta da rede e que o serviço de conteinerização esteja em execução em todas as máquinas para funcionar coletivamente.

Como funcionam os contêineres em nuvem?

Um contêiner em nuvem é simplesmente um contêiner executado na infraestrutura em nuvem e não em uma máquina local ou em um datacenter. Os contêineres na computação em nuvem são arquivos de imagem que contêm tudo o que é necessário para executar o software: código, runtime, bibliotecas, variáveis de ambiente e arquivos de configuração. As imagens são construídas em camadas, começando com uma imagem de base — geralmente uma versão mínima de um sistema operacional — e, em seguida, adicionando camadas adicionais, conforme especificado pelas instruções em um arquivo de configuração do contêiner. Um dos atributos centrais das imagens de contêiner é sua imutabilidade: uma vez criadas, elas não mudam. Você pode armazenar imagens em um registro de contêiner e reutilizá-las de forma consistente em diferentes ambientes de nuvem.

A seguir está uma visão geral dos diferentes aspectos da tecnologia de contêineres.

Runtime (tempo de execução) de um contêiner

Os runtimes dos contêineres são responsáveis pela execução real dos contêineres. Gerenciam a execução, o ciclo de vida e o isolamento de recursos dos contêineres. Os contêineres operam como processos isolados no espaço do usuário do sistema operacional da instância em nuvem. Compartilham o sistema operacional do host, mas permanecem separados um do outro e do host. Esse isolamento permite uma alocação eficiente de recursos, em que o runtime impõe limites para evitar a disputa por recursos entre os contêineres.

Redes

Você pode configurar contêineres em nuvem com suas próprias pilhas de rede isoladas, garantindo que as aplicações executadas em contêineres separados não interfiram entre si. O mapeamento de portas e os canais de rede predefinidos gerenciam a comunicação com o mundo exterior e entre os contêineres. 

Armazenamento

Os contêineres em nuvem normalmente empregam armazenamento efêmero, o que significa que todos os dados gravados na camada gravável do contêiner são perdidos quando o contêiner é interrompido. Para o armazenamento persistente, você pode usar volumes de armazenamento em nuvem. Esses volumes são independentes do ciclo de vida do contêiner e podem ser compartilhados entre os contêineres.

Orquestração

Nos sistemas em grande escala, as ferramentas de orquestração automatizam a implantação, o dimensionamento e o gerenciamento de vários contêineres. As ferramentas distribuem esses contêineres em um cluster de servidores em nuvem, balanceando a carga e gerenciando os processos de failover. Em ambientes complexos, a automação simplifica significativamente o gerenciamento de aplicações em contêineres. Você pode implantar e gerenciar aplicações avançadas e vastas em contêineres em arquiteturas de nuvem híbrida, sem a necessidade de realizar operações em cada instância de nuvem. Em vez de transferir manualmente um arquivo de imagem do contêiner para cada instância, você pode programar as ferramentas de orquestração para extrair os arquivos de imagem do registro do contêiner e implantá-los automaticamente nas instâncias da nuvem.

Qual é a diferença entre contêineres de nuvem e instâncias de nuvem?

Uma instância de nuvem é uma VM cujo recurso físico subjacente é totalmente gerenciado por um provedor de nuvem. As instâncias de nuvem funcionam como servidores físicos e permitem total configurabilidade, para que você possa usá-las como usaria um servidor local. No entanto, não exigem gerenciamento de hardware e do sistema operacional. As instâncias de nuvem podem ser instanciadas e removidas de forma rápida e fácil. Você pode implantar contêineres de nuvem em instâncias de nuvem para executar suas aplicações distribuídas e baseadas em nuvem. O termo contêiner de nuvem se refere a um contêiner executado nas instâncias de nuvem.

Leia sobre instâncias de nuvem

Leia sobre a diferença entre contêineres e máquinas virtuais

Como a AWS pode oferecer suporte aos seus requisitos de contêineres em nuvem?

Atualmente, quase 80% de todos os contêineres de nuvem são executados na Amazon Web Services (AWS). Os serviços de contêineres da AWS oferecem muitas ferramentas de sistema para gerenciar sua infraestrutura subjacente de contêineres, para que você possa se concentrar na inovação e nas necessidades da sua empresa.

  • O AWS Copilot é uma interface de linha de comando (CLI) para lançar e gerenciar rapidamente aplicativos em contêineres na AWS
  • O Amazon Elastic Container Service (Amazon ECS) é um serviço de orquestração de contêineres totalmente gerenciado e uma ferramenta de sistema para implantar, gerenciar e escalar aplicativos em contêineres com eficiência
  • O Amazon Elastic Kubernetes Service (Amazon EKS) é um serviço gerenciado de Kubernetes para executar a orquestração de contêineres Kubernetes na Nuvem AWS e em datacenters on-premises.
  • O Amazon Elastic Container Registry (Amazon ECR) é um registro de contêineres totalmente gerenciado para facilitar o gerenciamento e o acesso a imagens e artefatos de contêineres
  • O AWS Fargate é um mecanismo de computação com tecnologia sem servidor para contêineres, que você pode usar para se concentrar no desenvolvimento de aplicações em vez de gerenciar a infraestrutura

A imagem a seguir mostra opções para soluções de contêiner da AWS por camada: provisionamento, orquestração e capacidade.

Comece a usar contêineres em nuvem na AWS criando uma conta hoje mesmo.

Próximas etapas na AWS

Confira outros recursos relacionados a produtos
Saiba mais sobre a Arquitetura orientada a serviços 
Cadastre-se para obter uma conta gratuita

Obtenha acesso instantâneo ao nível gratuito da AWS. 

Cadastre-se 
Comece a criar no console

Comece a criar com a AWS no Console de Gerenciamento da AWS.

Fazer login