Containers são tendência. E não, não estamos falando de moradias sustentáveis, nem da logística de transporte. Apesar desses assuntos também estarem em evidência, a ideia aqui é tratar de uma outra espécie de container – que não está nem tanto à terra, nem tanto ao mar, mas no ambiente virtual (se é que ainda é possível dissociar esses universos).
Esse é o tema do Umblercast, o podcast da Umbler, no mês de novembro. Mas, por que estamos falando sobre isso? Calma, vamos explicar!
Os motivos são realmente inspiradores e os dados já traduzem. Segundo uma pesquisa realizada pela Portworx em março de 2017, com 491 profissionais de TI de diferentes indústrias, entre os principais motivos para investir em containers estão o aumento da eficiência no desenvolvimento (46%) e o apoio a arquiteturas de microsserviços (32%). Por esses e outros motivos, 56% dos respondentes afirmam que já investem financeiramente na tecnologia.
Mas, claro, como nem tudo são flores, ainda entre as principais barreiras para implementar esse tipo de virtualização está o baixo conhecimento sobre suas possibilidades – para 35% dos entrevistados. Considerando que a popularização do conceito, principalmente a partir de iniciativas como o Docker (surgido em 2013), ainda é recente, resolvemos falar sobre isso. Claro, de uma forma divertida, descontraída e real: uma conversa com especialistas no assunto.
O que são containers? Como essa tecnologia surgiu? Por que está tomando conta do universo DevOps? Quais são os melhores e piores usos? Quais empresas já utilizam? O que é preciso saber para trabalhar com containers? Essas e outras perguntas estão respondidas no Globo Repórter, não pera! Estão respondidas em um papo bem bacana que tivemos com Rafael Gomes, Wellington Silva, Cristiano Diedrich e Marco Antonio Martins Junior: um time de peso.
Mais sobre os participantes
Rafael Gomes (Gomex)
Soteropolitano, hacker urbano e consultor de infraestrutura. Trabalha atualmente como Arquiteto de Soluções na Superintendência de Tecnologia da Informação da Universidade Federal da Bahia (UFBA), focado em aplicações, monitoramento e segurança. Autor do e-book “Docker para desenvolvedores”.
Wellington Silva
Conhecido como Boina, Tom e Wsilva, entre outros apelidos. Participante da Docker community, coorganizador do meetup de Docker em São Paulo, tem background em telecomunicações, VoIP e Linux. Atualmente é desenvolvedor e SysAdmin na EasyTaxi. Autor do livro Aprendendo Docker, do básico à orquestração de contêineres, publicado pela editora Novatec.
Cristiano Diedrich
Entusiasta Open Source, atualmente é Container Specialist e Engenheiro DevOps na Umbler. Seu principal foco é ir atrás de ideias novas e torná-las realidade por meio de soluções simples e eficientes. É autor do site Mundo Docker.
Marco Antonio Martins Junior (Somatório)
DevOps na prefeitura de Esteio, RS. Especialista em containers.
A escolha é sua: você pode pular para essa superjornada agora mesmo ou conferir um resumão dos tópicos abordados no programa.
O que são containers?
Apresentar um conceito nunca é tarefa fácil. Muito maiores do que as verdades absolutas estão as inúmeras interpretações que podem surgir a partir delas. No caso dos containers, não é diferente! Rafael Gomes abre o podcast com uma colocação bastante interessante sobre essa tecnologia: “A intenção do container, a nível de sistema operacional, é fazer com que a aplicação pense que está sozinha no S.O., mesmo que compartilhe do mesmo kernel (núcleo) com todas as outras”. Mas não se engane, isso não a transforma em uma VM, inclusive esse é um erro muito comum, por conta disso vamos pensar no container como um processo. Por exemplo, container rodando é um processo: na hora que você desliga um container, sabe que o processo morre e se você não persistir esses dados se perdem.
Logo,
VM: virtualiza o hardware
Container: virtualiza o sistema operacional, uma abstração do Kernel
Aliás, o próprio conceito de virtualização é encarado como uma camada intermediária, já que uma VM tem, normalmente, uma camada de virtualização para fazer a conversão do diálogo entre o software, o sistema operacional e o hardware virtualizado. Em um esquema de containers não funciona assim: são sistemas isolados, mas se comunicam diretamente com o mesmo núcleo
As iniciativas não são concorrentes, são cooperativas, inclusive, é bastante aconselhável instalar o Docker em uma VM.
Como surgiram os containers?
É interessante perceber que o conceito de conteinerização da computação (agora fala bem rápido três vezes seguidas :P) tenha como precursor o Chroot, desenvolvido para o Unix em 1979 e adicionado para BSD em 1982. Foi a partir dele que se tornou possível estipular um determinado espaço em disco e dessa forma criar um sistema de arquivos autocontidos.
A linha do tempo até o Docker é essa aqui:
ZoNIX: 2005
LXC: 2008
Docker: 2013
Logo no primeiro mês de lançamento do Docker, o DotCloud liberou um material explicativo sobre como sua plataforma tinha sido construída utilizando containers. O tema ainda era tão pouco explorado que indo atrás do projeto em mecanismos de busca você encontrava página preta, bem feia, escrita DOCKER “chroot com esteróides”. A primeira impressão é que tinham tornado o chroot mais difícil ainda, ainda bem que nesse caso a primeira impressão não foi a que ficou, não é mesmo?
Até hoje algumas pessoas acreditam que o Docker ainda é um LXC, mas já deixou de ser faz tempo.
Por que estamos falando tanto de Docker?
A grande sacada que popularizou o Docker foi perceber que a comunidade já tinha acesso a inúmeras tecnologias, o que eles precisavam mesmo era de um facilitador. Era necessário melhorar a produtividade.
O Docker por tanto torna-se muito interessante quando pensamos no ecossistema que ele oferece e não necessariamente no fato de ser binário. Ele se torna uma espécie de acervo público, onde é possível consultar e compartilhar imagem, serviço, vulnerabilidade, etc. Esses atributos tornam ele mais simples do que o que tínhamos até hoje.
Além da simplicidade, outro atributo importante é a agilidade, como o container passa a ser uma cama escrita e toda a estrutura da imagem é baseada em camadas, você consegue reutilizar essas camadas de forma isolada, aumentando a velocidade do processo. Também por conta desta característica é muito simples conectá-lo a tecnologias já existentes.
Qual o melhor e pior uso de container?
Agradar a todos é difícil, né? Por isso vale a pena você entrar no Docker já ciente de que se você precisa que todos os dados estejam consistentes, você vai penar!
Então se o seu projeto tem alta dependência de persistência de dados entre containers, você já sabe, as coisas não são fáceis. Por exemplo, os banco de dados tem um alto nível de I/O e persistência de dados e por tanto, o Docker não é muito confiável, nesses casos.
Entretanto o modelo container é ótimo para os microsserviços, por exemplo. O próprio Gomex faz uma brincadeira durante o nosso Podcast: “Se tem uma unanimidade em microsserviços é que ele foi feito para ‘falhar’, e não tem problema nenhum nisso, já existe replicação, por tem outro microsserviço do outro lado”. Logo, se você estiver persistindo coisas dentro do Docker que possam “quebrar”, onde um dado é perdido mas recuperado de outra forma, não há problemas.
Empresas que estão usando Docker?
São diversas empresas como Through Works, Stone, Dafiti, Tricae, EasyTaxi, etc. Qualquer empresa que nasce já usa algo de container.
E é claro que a Umbler está nesse hall de empresas que usam container, né?. Já utilizamos Docker há dois anos, para coisas internas como Goodbye.host, por exemplo. Para clientes, hoje oferecemos hospedagem Node.js, 100% rodando em container. E não para por aí não, logo mais teremos o PHP containerizado também.
Complete a frase: Eu sou um desenvolvedor, devo usar container porque?
Somatório: “Porque você pode!”
Gomex: “Porque é fácil, facilita a inovação”
Cristiano: “Por que não? Ele dá liberdade para fazer”
Wellington: “Porque eu tenho controle e padronização de ambiente”
O que preciso saber para trabalhar com containers?
Se você for Ops, se prepare, será necessário aprender a desenvolver. Agora se você for Dev, já se aquece, pois você vai precisar entender um pouco mais de Ops. O container é uma ferramenta bem localizada na intersecção desses dois mundos.
Alguém aí disse DevOps? Isso mesmo, como já dissemos antes e nessa amálgama que essa ferramenta é melhor utilizada. Esteja aberto à mudança e seja dinâmico, pois o Docker veio pra ficar, reforça Cristiano.
Outro ponto importante são as skills sociais, sim você vai precisar conversar com as pessoas. Então já cola nos amiguinhos de humanas e descola umas dicas boas de conversação, relacionamento interpessoal e inteligência emocional. Inevitavelmente você vai precisar dividir seu conhecimento com a comunidade, pois se isso não acontecer a roda não gira. Precisamos compartilhar para que a inovação seja possível.