Contêineres: o que são e por que você precisa deles? - TecMundo
Por: Robert (Bob) Spory e Rafi Afzal.
Atualizado em: 5 de novembro de 2019. | Publicado em: 31 de janeiro de 2019 .
"Ahhh, vamos lá, pessoal, é tão simples. Talvez vocês precisem de um curso de atualização... Tudo é rolamento de esferas hoje em dia." (Fonte: Irwin "Fletch" Fletcher no filme de 1985 Assassinato por Encomenda).
Infelizmente, nem tudo é sobre rolamentos de esferas hoje em dia. É sobre contêineres. Se você já ouviu falar deles, mas não sabe exatamente o que são, veio ao lugar certo. Esta postagem aborda as seguintes perguntas:
Por que devo me importar com contêineres?
Os contêineres são o mesmo que microsserviços?
O que é um exemplo de aplicação de microsserviços?
O que são orquestração de contêineres e Kubernetes?
Qual é a diferença entre contêineres e imagens de MV?
Como começar com contêineres?
Como os IBM Cloud Paks podem ajudar?
O que é o Red Hat OpenShift na IBM Cloud?
Nas organizações, há um espectro de adoção de contêineres. Muitas pessoas estão apenas aprendendo sobre eles. Algumas empresas estão mais adiantadas em sua jornada. Se você está considerando a conteinerização, é hora de se divertir e de ver resultados reais nos negócios:
Tempo mais rápido para lançamento: novas aplicações e serviços são o que mantêm a sua vantagem competitiva. Organizações podem triplicar sua velocidade (300%) no fornecimento de novos serviços com desenvolvimento e agilidade operacional.
Velocidade de instalação: mova-se 60% mais rápido do desenvolvimento à instalação. A conteinerização rompe barreiras para que as equipes de DevOps acelerem os tempos e a frequência de instalação.
Redução da infraestrutura de TI: reduza seus custos em 40%, aumentando a densidade de carga de trabalho da aplicação, obtendo uma melhor utilização da densidade de computação do servidor e diminuindo investimentos em licenciamento de softwares.
Eficiência operacional de TI: obtenha 40% de eficiência operacional otimizando e automatizando o gerenciamento de infraestrutura e de diversas aplicações em um único modelo operacional.
Conquiste liberdade de escolha: empacote, envie e execute aplicações em qualquer nuvem, pública ou privada. (Fonte: Por que o Docker? | Docker.com)
A melhor analogia para entender os contêineres é um contêiner de remessas. Por isso, na maioria dos artigos e blogs sobre contêineres, você vê uma foto de um item do tipo, inclusive neste aqui. Tenho certeza de que já viu o transporte desses grandes contêineres de aço (também já vi pessoas "diferentes" usá-los para construir casas e piscinas). O setor de remessas aceitou como padrão um contêiner de tamanho consistente. Agora, o mesmo contêiner pode passar de um navio para um trem e para um caminhão sem descarregamento de carga. O conteúdo do recipiente não importa.
Assim como um contêiner de remessa, um contêiner de software é um pacote padronizado. Tudo o que é necessário para a execução do software está dentro do contêiner. O código do software, o tempo de execução, as ferramentas do sistema, as bibliotecas do sistema e as configurações estão todos incluídos neste mesmo pacote.
Os contêineres são o mesmo que os microsserviços?
Depois de começar a se aprofundar sobre contêineres, é impossível evitar a leitura sobre microsserviços (e, não, microsserviços não são aqueles carros minúsculos em que você pisa no escuro. Esses são os Micro Machines. Será que estou entregando minha idade?) Microsserviço é um estilo arquitetônico. Uma arquitetura de microsserviços estrutura uma aplicação utilizando-a como uma coleção de serviços livremente acoplados, que oferecem recursos comerciais específicos. Os contêineres ajudam a fazer com que isso aconteça.
Qual é o exemplo de uma aplicação que usa microsserviços?
Há cerca de 10 anos, a Netflix foi uma das primeiras empresas a começarem a usar extensivamente os contêineres. Ela reescreveu as aplicações que executavam todo o serviço de vídeo utilizando uma arquitetura de microsserviços. A empresa estima que emprega cerca de 700 microsserviços para controlar cada uma das muitas funções que compõem a plataforma. Vejamos alguns (não todos os 700):
1. Seleção de vídeo: um microsserviço em um contêiner fornece ao telefone, tablet, computador ou TV o arquivo de vídeo a ser reproduzido e com uma qualidade baseada na velocidade da sua internet.
2. Histórico de exibição: um microsserviço lembra o que você assiste.
3. Recomendações de programa: um microsserviço analisa seu histórico de exibição e utiliza dados coletados e analisados para recomendar filmes.
4. Menu principal: um microsserviço fornece os nomes e imagens daqueles filmes exibidos no menu principal.
5. Faturamento: outro microsserviço deduz a taxa mensal do seu cartão de crédito.
A Netflix transmite cerca de 250 milhões de horas de vídeo por dia, contando com cerca de 118 milhões de assinantes em 190 países. Nessa escala, o fornecimento de entretenimento em questão de segundos coloca sua aplicação à prova. Portanto, sim, os contêineres funcionam para as pequenas e as maiores empresas.
(Fonte: Como a Netflix funciona: as coisas (extremamente simplificadas) complicadas que acontecem toda vez que você clica em Play | Mayukh Nair)
Agora que entendemos o que é um contêiner, é hora de apresentar o Docker. (Não estou me referindo às confortáveis calças Casual Friday, Dockers.) Docker é o nome da tecnologia de conteinerização de código aberto que permite a criação e o uso de contêineres. Não deve ser uma surpresa, mas a IBM é muito ativa na comunidade de código aberto do Docker.
O Docker não é novidade; na verdade, existe desde 2008. Há outras opções de contêineres, mas muitos acreditam que o Docker "venceu" a guerra de contêineres. (Alguns de vocês devem se lembrar da batalha-padrão entre Blu-Ray e DVD-HD há alguns anos. O Blu-Ray foi triunfante. O Docker é como o Blu-Ray, usando essa analogia.) O Docker permite empacotar, enviar e executar aplicações em qualquer nuvem, pública ou privada. A capacidade de executar aplicações em qualquer lugar ajuda a evitar o aprisionamento ao fornecedor e possibilita mudança a um novo ambiente a qualquer momento.
O que são orquestração de contêiner e Kubernetes?
Há outro conceito importante que precisa de introdução: a orquestração. Se você tiver um contêiner, é fácil de gerenciá-lo. No entanto, à medida que você cria mais contêineres, o gerenciamento é crucial. Não havendo esse cuidado, você provavelmente se verá em meio ao caos (caos não é bom.) O Kubernetes salva você dessa tragédia. Curiosidade: Kubernetes é uma palavra grega que significa timoneiro ou piloto. O Kubernetes é um sistema de código aberto que pilota ou orquestra suas aplicações em contêineres sofisticados. Pense nele como o guindaste que move e controla seus contêineres. Assim como acontece com o Docker, a IBM é muito ativa na comunidade de código aberto do Kubernetes.
Como anteriormente mencionado, o Kubernetes orquestra seus contêineres. O que isso de fato significa? Ele aumenta ou diminui sua aplicação. O Kubernetes lança alterações e atualizações para a sua solução. Se algo der errado, o sistema reverte a alteração e reinicia os contêineres que falham, substituindo os contêineres quando os nós morrem e exterminando aqueles que não respondem à sua verificação de saúde. Esse gerenciamento resulta na economia de recursos sem sacrifício de disponibilidade e fornece balanceamento automático de carga.
Como o nome sugere, uma máquina virtual é um software que emula um sistema de computador. Uma MV permite que as equipes executem o que parecem ser várias máquinas em um único computador. Se você precisar executar o software em um tipo diferente de hardware ou sistema operacional, uma MV fornecerá essa opção sem utilizar hardware adicional.
A principal diferença entre um contêiner e uma MV é que, com uma MV, a equipe cria ambientes virtuais – que contêm sistemas operacionais – onde diferentes tipos de software podem ser executados. No entanto, um contêiner isola o software do ambiente e do sistema operacional, permitindo sua execução em praticamente qualquer lugar. (Fonte: Contêineres vs. MVs: qual é a diferença?)
Eu poderia citar um ditado como "uma longa caminhada começa com o primeiro passo", mas não vou. A melhor maneira de começar é começar com um contêiner. Existem muitos benefícios em conteinerizar suas aplicações, mas a questão é: por onde começar? Ou como começar?
1. Migrar e expandir: "Erguer e deslocar" é o processo de conteinerizar uma aplicação local para erguê-la (geralmente de um data center) e depois deslocá-la para outro lugar, que geralmente é uma nuvem pública ou privada. Para salientar, erguer e deslocar não está refatorando ou desmembrando sua aplicação. Está colocando toda ou a maior parte da aplicação em um único contêiner.
2. Modernização de aplicações: Uma abordagem mais agressiva é levar sua aplicação monolítica e refatorá-la em contêineres de microsserviços. Essa abordagem está passando de uma abordagem de desenvolvimento para outra.
3. Novo desenvolvimento: Finalmente, algumas organizações optam por iniciar todo o novo desenvolvimento usando contêineres.
Além dos contêineres e do Kubernetes, as empresas precisam orquestrar sua topologia de produção e fornecer gerenciamento, segurança e governança para suas aplicações. E é aqui que entram os IBM Cloud Paks.
Os IBM Cloud Paks são soluções de software em contêineres prontas para a empresa que oferecem uma maneira aberta, mais rápida e mais segura de mover aplicações corporativas principais para qualquer nuvem. Cada IBM Cloud Pak é executado no Red Hat® OpenShift® na IBM Cloud ™ e no Red Hat Enterprise Linux e inclui middleware IBM conteinerizado e serviços de softwares comuns para desenvolvimento e gerenciamento, além de uma camada de integração comum. Este vídeo explica a arquitetura.
Para saber mais sobre os Cloud Paks disponíveis para aplicações, dados, integração, automação e gerenciamento multicloud, consulte IBM Cloud Paks.
Lembre-se de que o Docker e os IBM Cloud Paks permitem empacotar, enviar e executar aplicações em qualquer nuvem, pública ou privada. Atualmente, a maioria das organizações não se une a um único fornecedor de nuvem. Essa abordagem é uma boa prática. Setenta e um por cento das empresas usam três ou mais nuvens, e oito em cada dez estão se comprometendo com uma estratégia de várias nuvens.
2. Nuvem dedicada: uma nuvem dedicada fornece os benefícios de uma nuvem pública com infraestrutura dedicada. Uma nuvem dedicada atende a muitos requisitos regulamentares do setor industrial. Além disso, você não está compartilhando recursos de computação com outras pessoas.
3. Nuvem privada: uma nuvem privada oferece os benefícios da computação em nuvem, mas detrás do seu firewall. A IBM oferece o Red Hat OpenShift na IBM Cloud, um serviço abrangente que oferece clusters OpenShift totalmente gerenciados na plataforma IBM Cloud, altamente escalável e confiável. Você obtém as chaves, mas ele é executado em um data center IBM seguro.
Contêineres, Docker, Cloud Paks e Kubernetes. Sim para todos? O Red Hat OpenShift na IBM Cloud reúne tudo para você. Ele utiliza a IBM Cloud para que você possa se concentrar no desenvolvimento e gerenciamento de suas aplicações. A IBM lida com a infraestrutura, fornecendo um cluster OpenShift altamente gerenciado e totalmente disponível através do clique de um botão. Confira o vídeo Uma visita guiada ao Red Hat OpenShift na IBM Cloud para obter mais detalhes.
O Red Hat OpenShift na IBM Cloud está diretamente integrado ao mesmo serviço do Kubernetes, que mantém 250 bilhões de previsões sob demanda diariamente na The Weather Company. Isso é muito.
Obtenha detalhes de recursos como painéis com uma experiência nativa do OpenShift, disponibilidade contínua com clusters de diversas zonas e movimentação de cargas de trabalho e dados com mais segurança no Red Hat OpenShift na IBM Cloud.
Contêineres são blocos de construção para o futuro. Vão além de apenas uma tendência passageira; eles vieram para ficar. Desde a entrega de aplicações com mais rapidez e otimização de desenvolvimento até a implantação e a redução de custos de infraestrutura e software, os contêineres fornecem às empresas, pequenas e grandes, resultados reais de negócios. Os links a seguir detalham mais recursos e incluem vídeos, testes práticos, tutoriais e outras informações úteis para ajudar você a começar hoje.