Manual técnico: clareza sobre contêineres

0

Ecossistemas de contêineres de empresas como Google, Docker, CoreOS e Joyent são certamente uma das inovações de TI mais intrigantes no espaço corporativo e da computação em nuvem. No ano passado, organizações dos principais setores, desde finanças até comércio eletrônico, demonstraram interesse em contêineres como um meio econômico, portátil e conveniente de criar um aplicativo. As perspectivas futuras ofereciam às organizações um novo modelo empolgante para comparar e contrastar com a virtualização.

Mas, com todo esse burburinho, muitas organizações e profissionais de TI ainda lutam para compreender a própria tecnologia e como aproveitar seus benefícios exclusivos, principalmente quando Docker, o líder do mercado, começa a expandir os casos de uso de contêineres para o cenário de arquitetura com controle de estado que é comum com aplicativos corporativos. Este manual de tecnologia pretende fornecer clareza sobre contêineres e tudo o que você precisa saber para aproveitar bem essa tecnologia.

Conceitos básicos sobre contêineres: retorne aos princípios fundamentais

Para começar, um dos principais equívocos sobre contêineres é que eles são substitutos essenciais das máquinas virtuais (VMs). Apesar de eles terem sido implementado dessa forma por alguns dos primeiros usuários corporativos, isso não é verdade. Em poucas palavras,um contêiner consiste em todo um ambiente de tempo de execução (um aplicativo, suas dependências, bibliotecas e outros binários e os arquivos de configuração necessários à sua execução) em um único pacote projetado para uso leve e de curto prazo. Quando implementados corretamente, os contêineres possibilitam ambientes de desenvolvimento muito mais ágeis e portáteis. Os contêineres simplesmente abstraem a necessidade de servidores tradicionais e sistemas operacionais.

A virtualização, por outro lado, inclui uma camada de hipervisor (seja o Microsoft Hyper-V, seja o VMware vSphere) que segrega máquinas virtuais e seus sistemas operacionais individuais. A virtualização abstrai recursos da infraestrutura de hardware subjacente, que consiste em servidores e armazenamento, para que as VMs possam usar esses pools de recursos. As VMs podem levar consideravelmente mais tempo que os contêineres para serem preparadas, provisionadas e implantadas e tendem a permanecer em tarefas por muito mais tempo que os contêineres. Como resultado, as VMs tendem a ter ciclos de vida de aplicativos muito mais longos.

Portanto, uma diferença fundamental é que o modelo de contêiner não pretende ser um ambiente de longo prazo como as VMs; em vez disso, eles são projetados para (idealmente) serem emparelhados com microsserviços para fazer uma coisa muito bem e seguir em frente. Com isso em mente, vamos discutir alguns dos seus benefícios.

Em primeiro lugar, como mencionei, os contêineres são ativados com muito mais rapidez e usam menos memória, exigindo uma área de cobertura menor de recursos de datacenter que a virtualização tradicional. Isso é importante, pois possibilita eficiência de processo para a equipe de desenvolvimento, o que, por sua vez, leva a desenvolvimento e ciclos de teste de garantia de qualidade muito mais curtos. Com contêineres, um desenvolvedor pode escrever e testar rapidamente o código de teste em dois ambientes de contêiner paralelos para compreender o desempenho de cada um deles e decidir sobre a melhor bifurcação de código a adotar.  O Docker cria uma imagem automaticamente, lendo o conjunto de instruções específico armazenado no Dockerfile, um arquivo de texto que contém todos os comandos necessários para criar uma determinada imagem. Isso significa que os contêineres devem ser efêmeros, ou seja, que eles podem ser interrompidos, alterados e criados novamente com uma definição e configuração mínima.

Os contêineres podem também oferecer suporte à colaboração maior entre todos os vários membros da equipe que estejam contribuindo para um projeto. O controle de versão e a consistência dos aplicativos podem ser problemáticos com vários membros de equipe que trabalham em seus próprios ambientes virtuais. Pense em todas as combinações diferentes de configurações de ambiente. Os contêineres, por outro lado, geram consistência na implantação de uma imagem; combinar isso com um hub como o GitHub®possibilita o rápido empacotamento e implantação de imagens que são consistentemente conhecidas como boas. A capacidade de ativar com rapidez imagens simétricas de um aplicativo permitirá que vários membros da mesma equipe de desenvolvimento testem e retrabalhem linhas de código em execução em ambientes de imagens separados, mas consistentes, que, por fim, podem ser sincronizados e integrados perfeitamente.

Curiosamente, o Docker começou a evoluir a tecnologia de contêiner para ir além do modelo típico de teste e desenvolvimento e agora não só oferece valor comercial adicional, mas também reduz a barreira do consumo para empresas. O mecanismo do Docker é executado em plataformas de desktop importantes, como os sistemas operacionais Windows®, Linux® e Macintosh®, que permitem que as organizações experimentem com contêineres enquanto realizam demonstrações e testes de alguns casos de uso em laptops. Além disso, a aquisição recente do Infinit®, um fornecedor de armazenamento distribuído, pela Docker, enfatiza a intenção da empresa de expandir e oferecer suporte às necessidades corporativas. A integração da tecnologia da Infinit possibilita que os desenvolvedores implantem a arquitetura Web com controle de estado e aplicativos corporativos herdados. Essa combinação de tecnologias pretende influenciar organizações sobrecarregadas com atraso tecnológico e aplicativos herdados para a adoção de contêineres.

Virtualização ou contêineres: Qual das opções é a certa para você?

Pois bem, como você decide quando aproveitar contêineres? Tudo começa com uma compreensão fundamental da arquitetura do seu aplicativo e de seu ciclo de vida, do desenvolvimento e produção à desativação. O estabelecimento dessa linha de base ajudará você a decidir se esses aplicativos são ideais para o contêiner ou se é melhor deixá-los como VMs.

Um site de comércio eletrônico pode decidir fazer a transição do uso de várias VMs que estejam sendo executadas em várias funções para um modelo baseado em contêiner, no qual o aplicativo "monolítico" em camadas é dividido em vários serviços distribuídos em nuvem pública ou infraestrutura interna. Uma imagem de contêiner seria então responsável pelo cliente do aplicativo, outra imagem de contêiner pelos serviços da Web etc. Esses contêineres podem ser enviados para um número ilimitado de máquinas de host com definições de configuração idênticas, para que você possa dimensionar e promover a consistência em seu site de comércio eletrônico.

No entanto, embora alguns aplicativos do seu ambiente possam ser candidatos ideais para mudança para contêineres, o custo para envolver pessoas, processos e tecnologia permanece um grande obstáculo para a maioria das organizações que oferecem suporte para virtualização atualmente. Investimentos pesados em soluções de virtualização vSphere, Hyper-V ou KVM, sem mencionar o conhecimento técnico especializado acumulado e o processo para oferecer suporte a eles, é um dos motivos fundamentais pelos quais as empresas de hoje estão se esforçando para adotar a tecnologia de contêiner.

Apesar disso, as organizações devem procurar oportunidades para ganhar experiência com a tecnologia de contêiner. Conforme demonstrado pela expansão do Docker para mais recursos corporativos, os contêineres podem certamente começar a desempenhar um papel maior no datacenter moderno, no qual a escala da Web e a mobilidade dominam. As práticas recomendadas ajudarão as empresas a se prepararem melhor para trabalhar com contêineres e gerenciá-los:

Como chegar lá: práticas recomendadas para trabalhar com contêineres

  • Adote estrategicamente: como mencionado, há algumas barreiras para adoção para muitas organizações (custo, atraso tecnológico, a necessidade de acumular conhecimento técnico operacional etc.), por isso uma iniciativa para integrar contêineres exige consideração criteriosa. Para facilitar o caminho para a conteinerização, sua organização deve procurar as oportunidades mais prováveis de serem convertidas, que são os ambientes de teste e desenvolvimento. Você deve tentar aproveitar a compatibilidade do Docker com os sistemas operacionais Windows, Linux e Macintosh para ganhar experiência com alguns dos casos de uso mais simples como a normalização de ambientes de desenvolvimento. Isso ajudará você a compreender melhor como os contêineres podem desempenhar um papel maior no fornecimento de cargas de trabalho ou aplicativos mais complexos por sua organização.
  • Monitore como disciplina: para determinar a melhor forma de integrar a tecnologia de contêiner ao seu ambiente existente, os profissionais de TI devem aproveitar uma ferramenta de monitoramento abrangente que forneça o ponto único da verdade em todo o ambiente de TI e na pilha de aplicativos. O desempenho e a linha de base comportamental resultante fornecem os dados que os especialistas no assunto podem analisar para determinar a carga de trabalho candidata para contêineres ou VMs. No final das contas, as empresas esperam garantias de desempenho e economia. A melhor maneira de atender a essa expectativa é por meio de ferramentas de monitoramento que proporcionam um entendimento das alterações nos aplicativos ao longo do tempo e acompanham os requisitos reais dos aplicativos e da carga de trabalho.
  • Automatize e orquestre o fluxo de trabalho do seu aplicativo: os contêineres pretendem levar dimensionamento e agilidade ao normalizar a consistência das configurações e do fornecimento de aplicativos. Dessa maneira, a automação e a orquestração se tornam fundamentais para a eficácia de contêineres. O motivo pelo qual uma organização aproveita os contêineres é a automatização do aprovisionamento de recursos ou aplicativos para executar e oferecer um serviço ou executar e testar um serviço antes de levá-lo à produção, fazendo tudo isso na escala da Web. Quando você alcançar esse tipo de escala, precisará orquestrar a carga de trabalho para aproveitar a eficiência da colaboração entre todos os membros de equipe de desenvolvimento.
  • Uma mentalidade de segurança: ao compartilharem o mesmo kernel do sistema operacional e a memória de sistema associada, os contêineres podem ser extremamente leves e fáceis de provisionar. No entanto, isso também significa que qualquer usuário ou serviço com acesso à conta raiz do kernel pode ver e acessar todos os contêineres que compartilham o kernel.  Sem que o ritmo das violações de dados mostre nenhum sinal de diminuir, as organizações que escolherem trabalhar com a tecnologia de contêiner precisarão criar uma estrutura de segurança e um conjunto de procedimentos que seja consistentemente avaliado e atualizado para impedir ataques. Entre os exemplos dessas medidas preventivas está a redução da superfície de ataque do contêiner e o aumento do controle de acesso do usuário.

Conclusão

No ano à frente, prevejo que os departamentos de TI finalmente compreenderão melhor a tecnologia de contêiner e como ela pode ser utilizada de forma realista e adequada para operações de TI ao lado da infraestrutura virtual. Ao estabelecer uma linha de base de dados de conhecimento sobre aplicativos individuais por meio do monitoramento adequado de aplicativos e infraestrutura, e ao aumentar sua experiência com a tecnologia de contêiner, você começará a aproveitar os benefícios exclusivos da tecnologia de contêiner no futuro próximo.

Kong Yang,  head geek da SolarWinds.

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.