Ignorar Navegação

O que é um contentor?

Empacotamento uniformizado e portátil para as suas aplicações

Explicação de contentores

Tal como as indústrias de transporte utilizam contentores físicos para isolar as diferentes mercadorias, por exemplo, para transporte em navios e comboios, as tecnologias de desenvolvimento de software recorrem cada vez mais a uma abordagem de contentorização.

Um pacote standard de software, conhecido como contentor, agrupa o código de uma aplicação juntamente com os ficheiros de configuração, as bibliotecas e as dependências associadas necessárias à execução da aplicação. Isto permite aos programadores e profissionais de TI implementar aplicações facilmente em todos os ambientes.

Por que motivo se deve preocupar com os contentores

O problema de uma aplicação não ser executada corretamente quando é movida de um ambiente para outro é tão antigo como o próprio desenvolvimento de software. Estes problemas surgem normalmente devido a diferenças nos requisitos de biblioteca subjacentes da configuração e outras dependências.

Os contentores abordam este problema ao fornecer uma infraestrutura leve e imutável para o empacotamento e implementação de aplicações. Uma aplicação ou serviço, as respetivas dependências e a sua configuração são empacotadas como uma imagem de contentor. A aplicação contentorizada pode ser testada como unidade e implementada como uma instância de imagem de contentor para o sistema operativo anfitrião.

Desta forma, os contentores permitem aos programadores e profissionais de TI implementar aplicações em ambientes com pouca ou nenhuma modificação.

Saiba mais sobre a génese e a beleza dos contentores.

Ver um pequeno vídeo

Contentor vs. máquina virtual

Quando as pessoas pensam em virtualização, as máquinas virtuais (VMs) vêm muitas vezes à mente. Na verdade, a virtualização pode assumir muitas formas e os contentores são uma delas. Qual é a diferença entre VMs e contentores, então?

A um nível elevado, as VMs virtualizam o hardware subjacente para que várias instâncias do sistema operativo (SO) possam ser executadas no hardware. Cada VM executa um SO e tem acesso a recursos virtualizados que representam o hardware subjacente.

As VMs têm inúmeros benefícios. Estes incluem a capacidade de executar diferentes sistemas operativos no mesmo servidor, uma utilização mais eficiente e económica dos recursos físicos e um aprovisionamento mais rápido do servidor. Por outro lado, cada VM contém uma imagem de SO, bibliotecas, aplicações e muito mais, e pode tornar-se bastante grande.

Um contentor virtualiza o SO subjacente e faz com que a aplicação contentorizada perceba que tem o SO, incluindo CPU, memória, armazenamento de ficheiros e ligações de rede, só para si. Como as diferenças no SO subjacente e na infraestrutura são abstratas, desde que a imagem base seja consistente, o contentor pode ser implementado e executado em qualquer local. Para os programadores, isto é incrivelmente apelativo.

Uma vez que os contentores partilham o SO anfitrião, não precisam de arrancar um SO nem carregar bibliotecas. Isto permite que os contentores sejam muito mais eficientes e leves. As aplicações contentorizadas podem ser iniciadas em segundos, e muitas mais instâncias da aplicação podem caber no computador em comparação com um cenário de VM. A abordagem de SO partilhado tem o benefício adicional de reduzir as despesas no que diz respeito à manutenção, como aplicação de patches e atualizações.

Embora os contentores sejam portáteis, estão limitados ao sistema operativo para o qual estão definidos. Por exemplo, um contentor para Linux não pode ser executado no Windows e vice-versa.

Porquê contentores

Agilidade

Ao criarem e empacotarem as aplicações em contentores e ao fornecê-las para TI para serem executadas numa plataforma uniformizada, os programadores conseguem reduzir o esforço global da implementação de aplicações e simplificar o ciclo de desenvolvimento e teste. Isto também aumenta a colaboração e a eficiência entre as equipas de desenvolvimento e operações para enviarem aplicações mais rapidamente.

Portabilidade

Os contentores fornecem um formato uniformizado para empacotamento e manutenção de todos os componentes necessários para executar a aplicação desejada. Isto resolve o problema típico de “Funciona no meu computador” e permite a portabilidade entre plataformas de SO e entre clouds. Sempre que um contentor é implementado em qualquer local, é executado num ambiente consistente que permanece inalterado de uma implementação para outra. Dispõe agora de um formato consistente, desde o computador de desenvolvimento à produção.

Rápida escalabilidade

Uma vez que os contentores não têm o overhead típico das VMs, incluindo instâncias de SO separadas, podem ser suportados muitos mais contentores na mesma infraestrutura. A natureza leve dos contentores significa que podem ser iniciados e parados rapidamente, o que permite desbloquear cenários de aumento e redução verticais.

Casos de utilização

Aplicações nativas da cloud

As aplicações nativas da cloud dependem de contentores para um modelo operacional comum nos ambientes, incluindo público, privado e híbrido. O baixo overhead e a alta densidade dos contentores permitem que muitos deles sejam alojados na mesma máquina virtual e torna-os ideais para fornecimento de aplicações nativas da cloud.

Lift-and-shift

Uma organização pode obter benefícios significativos ao migrar para a cloud, mas pode não querer reescrever uma aplicação existente. Com contentores, pode potencialmente migrar as suas aplicações para a cloud sem alterar qualquer código.

Batch

O processamento em lotes refere-se a atividades que podem ser realizadas sem intervenção humana ou consoante a disponibilidade dos recursos. Os exemplos incluem gerar relatórios, redimensionar imagens e converter ficheiros de um formato para outro. Os contentores proporcionam uma forma fácil de gerir tarefas de lote sem ter de gerir um ambiente e dependências. Podem ser utilizadas opções de computação dinâmica, como o Azure Container Instances (ACI), para ingerir eficientemente dados de origem, processá-los e colocá-los num arquivo durável, como o armazenamento de Blobs do Azure. A utilização de uma abordagem deste tipo em vez de máquinas virtuais aprovisionadas de forma estática pode alcançar poupanças significativas através da faturação ao segundo.

Machine learning

O machine learning aplica algoritmos aos dados e faz previsões com base nos padrões encontrados nos dados. Os contentores podem tornar as aplicações de machine learning autónomas e facilmente dimensionáveis em qualquer ambiente.

Além dos contentores

Para maximizar os benefícios dos contentores, considere soluções completas, incluindo ferramentas e serviços otimizados para contentores que ajudem a alcançar agilidade, segurança e dimensionamento.

Orquestração

A execução de contentores em escala requer orquestração e gestão de aplicações distribuídas e contentorizadas através de uma plataforma de orquestração, como o Kubernetes.

Segurança

Os contentores requerem uma abordagem em camadas, desde a imagem de contentor ao isolamento do cluster. A configuração destas proteções é mais adequada para os seus pipelines CI/CD.

Contentores sem servidor

Pode aumentar ainda mais a agilidade com contentores a pedido. Utilize tecnologias de contentores sem servidor para executar facilmente contentores sem ter de gerir servidores e fazer uma rajada a partir dos seus clusters do Kubernetes quando o tráfego surgir em picos.

DevOps

Os contentores permitem aos programadores partilhar facilmente software e dependências em ambientes de TI e produção. Quando combinado com práticas de DevOps, pode enviar código de forma eficaz mais rapidamente e reduzir os ciclos de desenvolvimento de software.

Estamos prontos quando quiser: experimente contentores e o Kubernetes gratuitamente com o Azure

Como podemos ajudá-lo?