DevSecOps

5 ago, 2015

Como o Docker pode resolver problemas do mundo real para desenvolvedores web

Publicidade

Trabalhando com desenvolvimento web? Bem, então você provavelmente já ouviu falar sobre Docker e seus desdobramentos recentes. Recipientes Docker podem ser um verdadeiro reforço de produtividade para as suas próximas aplicações web. Para um desenvolvedor web, não é tão fácil de entender a essência do Docker.

É por isso que eu gostaria de dar uma olhada nos recipientes Docker e mostrar alguns problemas do mundo real que o Docker está resolvendo para desenvolvedores web.

docker-1

O que é o Docker?

Docker é basicamente uma ferramenta de código aberto para a execução de containers isolados no Linux fazendo o deploy de aplicativos dentro de containers isolados mais rapidamente. O Docker cria recipientes autossuficientes e portáteis a partir de qualquer aplicativo.

O mesmo recipiente que o desenvolvedor cria e testa em seu PC pode ser executado em produção, através de máquinas virtuais, na nuvem ou quaisquer outros lugares.

docker-2

Você pode executar um único serviço por container, por exemplo, um recipiente para seu MySQL, um recipiente para o Apache e um recipiente para a sua instalação do WordPress.

Caso contrário, você pode colocar uma pilha de todo o aplicativo em um recipiente conjugado. Não há certo ou errado sobre isso.

Recipientes Docker vs. máquinas virtuais

A capacidade de separar um aplicativo do sistema operacional subjacente Linux é muito atraente. Comparar recipientes Docker com máquinas virtuais é uma coisa válida, embora recipientes Docker não substituam máquinas virtuais. As máquinas virtuais têm basicamente um sistema operacional completo com o seu próprio gerenciamento de memória, drivers de dispositivo etc. Em contraste, os recipientes Docker compartilham o sistema operacional do anfitrião e são, portanto, muito mais fáceis de gerenciar.

docker-3

Container e Container-as-a-Service

Os containeres estão no mercado por um bom tempo. E embora nunca realmente tenham se tornado um “padrão da indústria”, o Docker tornou tudo isso possível. Com uma ampla gama de suporte e fácil de aprender, o Docker está aqui para ficar.

O Docker é basicamente construído em cima de LXC (Linux Containers), mas definitivamente não é um substituto para o LXC, uma vez que o Docker oferece alguns recursos de alto nível no topo do LXC, tais como controle de versões e implantação portátil através de máquinas. Eu gostaria de recomendar este artigo do site StackOverflow como referência.

O crescimento do negócio de Container-as-a-Service é imenso. No início de 2015, o Docker publicou um infográfico mostrando o crescimento dos downloads de containers e o número de aplicações sendo utilizadas em recipientes Docker, além de algumas outras métricas.

(Todo o infográfico pode ser encontrado neste link para consulta.

Casos de uso do mundo real para desenvolvedores web

O Docker foi basicamente concebido de forma que possa ser usado em muitos casos de uso diferentes. Além dos casos de uso mencionados no site docker.com, eu gostaria de dar uma olhada nos casos de uso seguintes, nos quais a tecnologia do Docker fornece um ótimo e consistente ambiente.

Grande comunidade em torno do Docker

A melhor coisa sobre o Docker é que ele está pronto para usar. Com a sua crescente comunidade de desenvolvedores, existem milhares de containeres prontos para executar aplicativos populares, como MySQL ou WordPress.

Se você deseja executar o WordPress, por exemplo, pode baixá-lo a partir do Docker Hub e executá-lo com esta única linha de código:

docker run –name some-wordpress –link some-mysql:mysql -d wordpress

Uma grande vitória para o desenvolvimento local

Como um desenvolvedor web, você pode se desenvolver em seu ambiente local. Minimizar as diferenças entre seu ambiente local e produção nos ajuda a evitar mudanças de última hora em caso de diferenças na configuração.

Trabalhar com containers Docker no ambiente local é um verdadeiro reforço na produtividade e definitivamente poupa algum aborrecimento de último minuto.

Implementação rápida

Nós vimos algumas aplicações fantásticas nas últimas décadas, criadas a partir de hardware real e de servidores virtuais para o Docker. A criação de novos recursos de hardware provavelmente levaria vários dias. Com a virtualização, ela passou para apenas alguns minutos.

Com o Docker, você pode ter tudo instalado e funcionando dentro de alguns segundos. Simplesmente criando um container e não inicializando todo um sistema operacional, nós definitivamente vamos economizar algum tempo.

docker-4

Isolamento do aplicativo para um sandbox seguro

Com o Docker, você basicamente executa um aplicativo ou processo por container. Containers tiram vantagem da capacidade de criar ambientes isolados. Cada recipiente é atribuído ao seu próprio ambiente em tempo de execução, e cada container único recebe sua própria pilha e o processo único no espaço da rede.

Se você deseja instalar diferentes versões do Python ou qualquer outra biblioteca, linguagem ou programa, os containers Docker são a sua solução. Você pode simplesmente instalar uma biblioteca em um container, compará-la com uma versão diferente localizada em outro container, brincar com ela e jogá-la fora depois sem qualquer risco.

Benefícios de segurança dos containers

Executar vários containers pode fornecer alguns benefícios de segurança. Ao executar aplicativos em vários containers, cada um deles só tem acesso às portas e arquivos explicitamente expostos pelo outro container.

Mais adiante, containers devem oferecer um maior nível de controle sobre os dados e software que são instalados. A vantagem é que executar o software em um container não afetará qualquer outro recurso em uma máquina.

As atualizações são um importante problema de segurança. A execução de aplicativos em um ambiente Docker faz com que o processo de atualização seja menos doloroso.

Teste simplificado

Configurar ambientes de teste com containers Docker é super fácil. Pensando em todas esses frameworks diferentes e bancos de dados, bem como em diferentes versões do Python, por exemplo, os testes em um ambiente virtualizado tornaram-se um verdadeiro desafio.

Através da criação de diferentes recipientes Docker para testes, você pode acelerar drasticamente sua suíte de testes, separando versões diferentes em diferentes containers.

docker-5

Fácil configuração

Uma das muitas razões para o uso cada vez mais crescente dos containers Docker é definitivamente a configuração simples e fácil de gerenciar. Com máquinas virtuais, é possível executar qualquer aplicação com sua própria configuração em cima de sua infraestrutura já existente. O Docker basicamente fornece a mesma capacidade de processamento, mas sem a sobrecarga de uma máquina virtual. No entanto, os recipientes Docker não podem substituir máquinas virtuais. Isso permite que você dissocie os requisitos de infraestrutura do ambiente de aplicação.

Dockerize seu desenvolvimento web?

“Containerizar” suas aplicações não só irá tornar a sua implementação mais rápida, mas também muito mais fácil. A portabilidade e a flexibilidade adquiridas com containers Docker são imensas. Desenvolvedores web podem evitar a sobrecarga de seu ambiente de desenvolvimento usando Docker.

***

Thomas Peham faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://usersnap.com/blog/docker-for-web-developers/