Concrete | As vantagens de usar Docker
As vantagens de usar Docker
Docker é uma plataforma open source de grande aceitação por toda a comunidade, e na minha opinião é uma das principais tecnologias que vai contribuir cada vez mais com os novos projetos. Por consequência, as coisas como são hoje devem se tornar algo inovador e diferente, com menor dependência de fornecedores e seguindo a direção da inovação. Basicamente, Docker pode deixar tudo, mais dinâmico, colaborativo e ágil.
Ágil é a melhor forma de descrever. Não quer dizer somente rápido, mas a capacidade de recuperação e mudança de direção.
Assim como na vida tudo muda de direção o tempo todo e perceber a mudança é o primeiro passo, estar preparado vai garantir o sucesso.
Os métodos ágeis de trabalho que vivo hoje, como SCRUM e DevOps, proporcionam adaptabilidade e modularidade inteligente, o que torna o conjunto eficiente. Os sistemas falham, não tenho dúvidas sobre isso, não importa quanto se investe. A grande questão é quão rápido se restabelece o ambiente. A capacidade de resiliência é o mais importante no negócio do que o investimento realizado. Afinal, é para isso que se investe.
Há inclusive um projeto adotado pela Netflix de nome Chaos Monkey que trata de um bot (robô), que de modo intencional interrompe o funcionamento dos servidores que compõem a arquitetura, a fim de colocá-los à prova, evoluindo a capacidade em lidar com o inesperado. Mas isso é assunto para outro post.
Docker permite que a sua aplicação seja implementada dentro de contêineres, adicionando uma camada de abstração. É um estado de evolução constante, os benefícios na utilização desta tecnologia só tendem a crescer. Seguem alguns tópicos:
Teste Contínuo:
Os produtos não nascem prontos, eles são desenvolvidos até chegar ao grau de maturidade desejado. Também não nascem em produção, eles se tornam produtivos. E muitas vezes são necessários ambientes distintos, como desenvolvimento, homologação e produção. Já conheci lugares com 6 camadas e diversos times até a produção e mesmo assim não foram capazes de garantir 100% , mas a estrutura era necessária para melhorar a qualidade e minimizar impactos. Com o Docker também é possível garantir que durante o processo de desenvolvimento não exista a necessidade de um ambiente produtivo idêntico configurado. O ciclo de vida do artefato de entrega é de fato o mesmo desde o início, com menor discrepância ou intervenção manual.
Uma das principais vantagens do Docker é a portabilidade, não há restrições em cloud, como a Amazon Web Services (AWS) e Google Computing Platform (GCP), funciona muito bem com vários outros provedores de IaaS, como o Microsoft Azure e OpenStack, e pode ser usado em conjunto com diversos gerenciadores de configuração, como Chef, Puppet e Ansible, para citar alguns. Não há qualquer impedimento para funcionar nos tradicionais data centers, sem limitação, e pode ser facilmente migrado à infraestrutura como código.
O paradigma anterior, que eram as virtualizações de servidores, demandavam a criação e manutenção do banco do repositório de imagens, o que conferia um custo maior no armazenamento e no tempo dessa atividade. Já com o Docker é possível simplificar e garantir melhor o ciclo de vida do desenvolvimento, uma vez que funciona de maneira similar ao GIT, permite que seja incluído pequenas modificações e caso o comportamento não seja satisfatório o caminho de retorno já está traçado, é simples retornar.
Docker também garante que os possíveis impactos sejam minimizados e isolados. Eu já vi diversas vezes servidores que eram responsáveis por diversas funcionalidades, como por exemplo: front-end, back-end, middleware e até banco de dados e, uma vez afetado somente uma das partes que compõem o todo, tudo é afetado, e muitas vezes o processo de recuperação é árduo. O Gartner publicou um relatório informando que os recipientes da Docker são tão bons quanto o hipervisor de VM (monitor de máquina virtual) quando se trata de isolar recursos. Mesmo assim há trabalho a ser feito em termos de gerenciamento e administração.
Com a utilização de microsserviços é possível designar que cada etapa tenha seu próprio servidor de maneira isolada, assim garantimos o melhor gerenciamento dos componentes e das dependências de software. Se uma aplicação não for mais necessária não precisamos mais remover do servidor, simplesmente remove-se o contêiner, não deixando vestígios como logs e arquivos de configuração ou temporários no host.
Além disso o Docker também garante que cada aplicativo use recursos (CPU, memória e espaço em disco) que foram atribuídos. Uma aplicação específica não vai consumir todos os seus recursos disponíveis, o que normalmente levaria à degradação do desempenho ou ao tempo de inatividade completo para outras aplicações.
O Docker está evoluindo em um ritmo acelerado, o que o Gartner reconhece. Do ponto de vista da segurança o Docker garante que os aplicativos que estão sendo executados em contêineres sejam completamente segregados e isolados um do outro, o que confere um controle total sobre fluxo de tráfego e gerenciamento. Nenhum Docker pode procurar processos que funcionem dentro de outro Docker. Do ponto de vista arquitetônico, cada elemento obtém seu próprio conjunto de recursos.
Como um meio de reforçar a segurança, o Docker utiliza pontos de montagem sensíveis ao SO do host (por exemplo: '/proc' e '/sys') como pontos de montagem somente leitura e usa um sistema de arquivos copy-on-write para garantir que os contêineres não possam ler dados uns dos outros. Também limita as chamadas do sistema ao sistema operacional host, as imagens do Docker que estão disponíveis no Docker Hub são assinadas digitalmente para garantir a autenticidade. Uma vez que os contentores do Docker são isolados e os recursos são limitados, mesmo que um dos seus aplicativos seja pirateado, isso não afetará os aplicativos que estão sendo executados em outros contêineres do Docker.
E é isso! Se você ainda possui dúvidas para utilizar esta tecnologia, aqui tem algumas boas razões para ajudar na sua decisão. Se você quiser estudar mais, pode acessar o site do Docker e este link com alguns cases. Tem alguma dúvida ou alguma contribuição? Deixe seu comentário! Até a próxima.
https://www.featuredcustomers.com/vendor/docker/case-studies
Um profissional com bastante experiência em sistemas operacionais e infraestrutura mergulhando de cabeça no mundo DevOps. Nas horas vagas curte estar com a família e apreciar uma boa comida.