Se tem um assunto que vem se tornando cada vez mais mainstream nos últimos meses, é Docker e todo o conceito de containers por trás dele. Esse tem sido um dos tópicos mais quentes dos últimos eventos de desenvolvimento de software e computação em nuvem, como AWS Re:invent e Google I/O.

Nesse post vou explorar um pouco do que é isso tudo, e de como você, sua equipe, e sua organização podem se beneficiar.

Docker é um plataforma aberta para desenvolvedores criarem, distribuírem e rodarem aplicações distribuídas em Containers. A ideia de containers que é uma metáfora do container de logística: uma caixa padronizada, em que todos sabem exatamente o que esperar dela em termos de material, tamanho, peso, etc. No Docker, esses containers são como se fossem máquinas virtuais (simplificadas) que podem ser executadas.

A principal diferença de uma máquina virtual para um container Docker é que com a máquina na virtual, você sempre precisa ter na imagem na VM, o sistema operacional todo incluído que tem, muitas vezes, Dezenas de Gigabytes, já nos containers, você precisará apenas ter algumas bibliotecas e software que você precisa executar, que geralmente tem apenas alguns poucos Megabytes, o Sistema Operacional é compartilhado pelos containers, mas isso, ao mesmo tempo que você tem todos os benefícios de isolamento e controle de ambiente que teria na sua VM. Veja na imagem para compreender melhor:

docker-vms

Repositórios

Um outro ponto bastante forte do Docker, é que há um crescimento cada vez maior da comunidade por trás dele, e há uma grande gama de repositórios públicos de containers que vem sendo publicados pela comunidade para que sejam utilizados por todos.  Containers prontos para executar bancos de Dados como MySQL, Mongo DB, Redis, servidores HTTP como NGINX, aplicações como WordPress, e muito mais.

Há repositórios disponíveis com ambientes preparados para executar aplicações em várias tecnologias como C/C++ClojureGoHy languageJavaNodeJSPerlPHPPythonRuby on RailsConfira outros repositórios populares.

Você pode publicar criar seus próprios containers e publicá-los, tanto de forma privada de modo a ficar disponível apenas para você e para sua organização, ou de forma pública de modo a poder ser usado por toda a comunidade.

Versionamento

Um outro grande benefício que o Docker oferece é uma espécie de controle de versão de seus containers. Imagine seu container como um repositório Git, em que você pode fazer alterações e depois efetivá-las com um commit ou fazer um rollback caso não tenha gostado do resultado.

Se você quiser ver na prática como usar o Docker, criar sua imagem, e modificá-la, o site do Docker, oferece um tutorial interativo que permite que você aprenda os comandos básicos em poucos minutos. Tente agora mesmo!

Microservices e Ambiente Controlado de Desenvolvimento e Homologação

Se tem um assunto além de containers, que está se tornando um grande hype na comunidade de desenvolvimento de software, são os microservices, e o Docker pode ser uma ferramenta poderosa para suportar uma aplicação com essa arquitetura. É cada vez mais comum se ver aplicações compostas de diversos pequenos serviços que muitas vezes são desenvolvimentos com diferentes tecnologias que requerem ambientes diferentes.

Não é difícil ver aplicações que contém serviços na plataforma Java, outros em NodeJS, e outros em Ruby On Rails, por exemplo, que compõe uma única aplicação. Manter todos esses ambientes configurados tanto na produção, como nos ambientes de desenvolvimento e homologação pode ser uma grande dor de cabeça, e o Docker pode te ajudar a resolver esse problema com elegância e simplicidade.

Deploys mais Rápidos com Docker

Nessa apresentação realizada no AWS Re:invent 2014, Nathan LeClaire que trabalha na Docker, apresenta como podemos nos beneficiar do Docker para fazer deploys mais leves e rápidos.

 

Docker no Spotify

Nessa apresentação Rohan Singh do Spotify apresenta como a empresa está se beneficiando com o uso de Docker. É um case bastante interessante, porque eles tem mais de 60 serviços backend, mais de 5000 servidores em 4 datacenters, mais de 260 servidores por sysadmin, e mais de 33 clusters de cassandra com mais 50 terabytes de dados. Desafio grande, não é? Saiba mais em labs.spotify.com.

 

Introdução ao Docker

Se agora, você realmente está convencido que Docker pode ser interessante para você e sua organização, sugiro que veja a palestra introdutória abaixa em que o próprio fundador da Docker, explica as principais funcionalidades e benefícios da solução.

Deploy de Docker na AWS com o EC2 Container Service

Veja o anúncio oficial do CTO da Amazon Werner, realizado no Re:invent em Novembro de 2014, sobre o novo serviço de containers com Docker da AWS. No vídeo você poderá ver como poderá utilizar o serviço para fazer deploys de aplicações distribuídas e escalar cada serviço de acordo com sua demanda e necessidade.

Se quiser saber mais como sobre o serviço funciona e como começar a usar agora mesmo, veja a palestra abaixo que vai mais a fundo nos detalhes do EC2 Container Service:

O Futuro do Software Moderno por  Solomon Hykes (Docker Founder)

https://www.youtube.com/watch?v=JW8elKJbkAM

Segundo Hykes, Docker trás a seguinte abordagem para solucionar os desafios atuais que enfrentamos no desenvolvimento de software:

  • Aberto é sempre melhor
  • Resolva um problema por vez
  • Escale por Composição
  • Promova interfaces padronizadas

Os principais desafios, na visão dele, são:

  • Packaging e Distribuição
  • Sandboxed Runtime
  • Networking
  • Clustering & Composition
  • Identidade (Identity)
  • Autorização

Conclusão

Acredito que Docker veio para ficar, e que não é por acaso que os grandes provedores de cloud computing estão investindo em tornar deploys de aplicações em containers Docker cada vez mais fáceis e rápidos.

A comunidade só tem a se beneficiar com todos os repositórios públicos que vem surgindo a cada dia, e desenvolvedores e sysadmins, poderão desfrutar de maior produtividade por terem mais controle e estabilidade em seus ambientes de execução.

Espero que você tenha gostado desse post, por favor, não esqueça de deixar um comentário com suas impressões.

Para não perder os próximos posts, assine a lista de e-mails, ou o feed RSS, e você também pode me acompanhar no Twitter e no Facebook.

 Aprenda Mais