Qual o meio mais fácil para começar a conteinerização na minha empresa?
A conteinerização surgiu para melhorar a forma como as aplicações são distribuídas
A conteinerização de aplicações é um dos passos para a prática de DevOps, confira como iniciar a jornada na sua empresa aqui. Um contêiner é o empacotamento de todas as dependências necessárias para a sua aplicação, gerando uma imagem e disponibilizando da forma mais homogênea possível. Então, é possível replicar uma imagem em diferentes ambientes, sem se preocupar com o que está rodando ali dentro utilizando a conteinerização.
Ah, mas com máquinas virtuais eu já consigo fazer isso…
Sim, consegue, mas máquinas virtuais são muito grandes e muito pesadas, sendo muito mais custoso e oneroso. Contêineres são muito mais leves e eficientes e possibilita uma maior velocidade para distribuição e implantação de aplicações.
O Docker trabalha com algumas primitivas do kernell do Linux, utilizando:
Control groups: que é para definir quanto de recurso será alocado para cada contêiner (storage, rede, memória, CPU, etc);
Namespaces: que é para isolar um contêiner do outro, para que um não saiba o que os outros estão executando dentro de uma mesma máquina e assim conseguir isolar os contêineres.
Em outras palavras, os contêineres padronizam a forma como você faz o build da sua aplicação, onde você pode dizer o que precisa, qual sistema operacional, quais dependências, quais arquivos de configuração e etc.
O contêiner vai disponibilizar um artefato final para você com tudo ali dentro, independente de qual linguagem você usa, qual gerenciador de dependências. Esse artefato poderá ser disponibilizado para qualquer servidor e você saberá que isso vai ser rodado com as mesmas coisas e da mesma forma.
Com a evolução da tecnologia de contêineres, a forma de desenvolver a aplicação também sofreu alterações. Com o uso de Cloud, é um pouco mais difícil ter discos persistentes, então não é interessante você escrever arquivos locais e esse é o conceito que chamamos de cloud native.
Qual o meio mais fácil para começar a utilizar o docker na minha empresa?
Para começar a rodar o docker, basta instalar a ferramenta em seu servidor e executar alguns comandos para executar a imagem. Também é interessante você ter um registry, que é uma espécie de repositório onde você irá disponibilizar as suas imagens.
O próprio Docker tem um registry free, para imagens open source, e também um serviço pago para coisas fechadas. Também existem outros serviços de registry no mercado.
Rapidamente você terá a percepção de que não é interessante você ter que acessar seu servidor e executar os comandos do Docker para baixar e rodar suas imagens e que para isso, você pode contar com a automação e, em casos mais complexos, serviços de orquestração que farão isso por você.
Com o Docker você pode utilizar o docker-compose para declarar a composição do seu contêiner, com dependências e links para descrever a comunicação que os contêineres precisam ter entre si.
Para isso, usamos um yaml file declarativo onde configuramos quais as conexões entre os serviços, através de quais portas.
O Docker te dá uma grande flexibilidade, inclusive para conseguir executar uma aplicação em ambiente local, com todas as composições necessárias. Isso permite que o desenvolvedor consiga reproduzir um ambiente mais parecido com o que será disponibilizado em ambientes de testes, stage, pré produção e produção.
Dessa forma, não existe mais aquela célebre frase: “Na minha máquina funciona”
Claro, é preciso “buildar” a sua aplicação como uma imagem e para isso existe um passo a passo, um arquivo dockerfile que será uma espécie de receita de como o build do artefato será feito.
A documentação do docker é bem extensa e fácil para aprendizagem. Começar a entender como funciona o dockerfile, o composê e como o docker trabalha já ajuda a entender como é simples o uso de imagem, sem precisar realizar downloads de patches e configurar ambiente. Basta ter a imagem e executar.
É muito bom usarmos contêineres e funciona muito bem quando são poucos. Porém, quando temos muitos contêineres, precisamos adotar uma ferramenta que nos ajude a gerenciar tudo isso, caso contrário teremos um grande problema. Para solucionar isso, existe a orquestração de contêineres.
Comece a sua jornada com o DevOps, transforme com a Datainfo
Converse com um consultor aqui