Série – Container – Introdução

Posted on agosto 2, 2017

2


Introdução

image

Container é um tópico atualmente bem disseminado em nossa área de atuação, portanto essa série de artigos terá como objetivo explicar como essa nova tecnologia de virtualização tem chamado tanto a atenção das empresas de tecnologia, iremos abordar também os principais motivos e diferenças entre containers e máquinas virtuais assim como analisar a posição das maiores empresas de computação na nuvem em relação a esse tópico.

Container [Standardized Unit of Software]

Assim como containers de transporte que são padronizados, carregados, transportados e geralmente organizados por um tipo de produto, a virtualização baseada em container segue a mesma analogia, containers fazem parte de uma nova era de inovação da industria da tecnologia e está mudando completamente como as empresas testam, avaliam e desenvolvem suas aplicações hoje em dia.

Containers são conhecidos como virtualização em nível de sistema operacional (SO) assim sendo mais leves, fáceis e agéis, considerando e utilizando somente o que a aplicação necessita para ser executada, em uma forma bem minimalista a mesma se compara com máquinas virtuais porém não necessitam de HyperVisors com VMWare ou Hyper-V para funcionarem.

Uma das principais vantagens da utilização do container é poder garantir que a aplicação será executada independentemente do ambiente que a mesma está sendo executada isso é possível pela abstração do SO e a infraestrutura.

Normalmente, containers demoram segundos para serem provisionados e carregados até porque diferentemente das máquinas virtuais o mesmo necessita somente das seguintes peças para rodar

· Applicação

· Dependências

· Biblioteca

· Binário

Containers Vs. Máquinas Virtuais [VM]

image

Containers e Máquinas Virtuais (VM) compartilham algumas características porém possuem diferenças significantes, iremos analisar alguns fatores em relação a essas duas tecnologias.

A Máquina Virtual possui o sistema operacional por completo assim como aplicações, lembrando que a mesma utiliza um Hyper-Visor para efetuar a virtualização da VM, sendo assim a mesma é o que denominamos resource-intensive e geralmente necessita de uma quantidade considerável de memória RAM, CPU para ser iniciada.

Os Containers são virtualizadas na camada do SO, sendo assim precisam de muito pouco recurso para ser iniciado, além de que normalmente a média de tamanho dos containers são em MB ao invés de GB consumidos pelas máquinas virtuais.

Porém é importante destacar que cada tipo de virtualização possui seu nicho de atuação, Máquinas Virtuais são ótimas para segurança pois podem não compartilhar nada com o Host System sendo assim se for comprometida pode não afetar nenhum outro processo, também VMs oferecem maior flexibilidade em relação aos sistemas operacionais, no mesmo Host Server você pode possuir máquinas Windows e Linux, enquanto com Containers você não pode ter dois tipos de sistemas operacionais rodando no mesmo momento no mesmo servidor.

Docker

image

O Docker é de longe a plataforma de virtualização de containers mais conhecida e famosa do globo e a Microsoft além de parceira adicionou no Windows Server 2016 a integração de deployments de Containers direto do Windows – https://www.docker.com/microsoft e esse ecossistema vem crescendo a cada dia que se passa.

Aqui – https://www.docker.com/what-docker você irá encontrar um resumo do que o Docker pode trazer para sua empresa, dividida em 3 principais vertentes – Desenvolvedores, Sys Admins e Empresa a grande mensagem aqui:

· Automação de Tarefas Repetitivas

· Ótima Experiência de Desenvolvimento das Aplicações

· Entrega de Containers 13x do que Máquinas Virtuais

· Fácil para Escalar

· Melhoria da Eficiência da Área de Infraestrutura

· Uma Plataforma para Todas Aplicações

· Otimização do Parque de Infraestrutura da Empresa

· Facilidade da Utilização de um Processo de DevOps

· Sustentação e Facilidade de Integração com Provedores de Cloud Computing

Benefícios e Vantagens do Container

image

· ROI – Retorno de Investimento e Economia

Sabemos que a maioria das decisões de qualquer empresa é medida pelo retorno do investimento ou economia de custos, com isso a utilização de Containers está totalmente alinhada com essa necessidade, a redução de recursos de Infraestrutura é enorme além disso as equipes podem ser menores devido a fácil utilização.

· Padronização e Produtividade

Containers garantem a consistência do desenvolvimento e ciclos de forma ágil e transparente, desenvolver, criar, testar e mover para produção se torna ainda mais fácil além da redução considerável na hora do deployment da sua aplicação.

· Eficiência

Após a criação de um container, o mesmo pode ser utilizado todas as vezes durante o processo de deployment da sua aplicação, além de poder separar processos que possuem dependência.

· Compatibilidade e Manutenção

Elimina completamente o problema de “funciona na minha máquina”. Significa que a imagem criada será usada por toda a equipe e o deployment irá ter sucesso, mesmo tempo de troubleshooting e aumentando o tempo de codificação.

· Simplicidade e Fácil Configuração

Possibilidade de utilização da sua própria configuração sendo que em nenhum momento será necessário equipes de Infraestrutura para te dar suporte, configurações do ambiente ficam em sua responsabilidade e da sua equipe, trazendo transparência e agilidade.

· Deployment Rápido

Redução de deployments para segundos, processo de criação de um Container é extremamente rápido, a idéia é que você crie e destrua Containers sempre que quiser.