terça-feira, 1 de dezembro de 2015

Docker - Agora o ambiente vai de navio!!!

Boa noite pessoal, tudo bem?

Hoje em dia fala-se muito de infraestrutura convergentem, alta disponibilidade, possibilidade de subirmos um ambiente em poucos minutos.... etc, etc, etc...

No entanto, quando falamos neste tipo de infraestrutura falamos de alto investimento, infraestrutura de data center para manter tudo isso disponível, sendo infra elétrica, ar condicionado, controle de acesso.
Nem todo mundo ou todas as empresas possuem tal capital para fazer este investimento, porém precisam de um ambiente capaz de aguentar os acessos, processamentos e possuir disponibilidade dentro de um preço acessível.

Nestes casos minha sugestão é o uso do Docker.



O Docker nada mais é do que um container dentro de um navio.
Isso mesmo.
Vamos imaginar que nosso servidor (pode ser aquele montado mesmo com as peças compradas na Sta. Ifigênea :D ) é
o navio.
Iremos instalar um sistema operacional Linux nele e instalar o pacote do Docker para fazer toda a abstração necessária
e criar/gerenciar os containers dentro deste navio.
Cada container pode conter um ou vários dos serviços abaixo:

- WEB;
- Banco de dados;
- Aplicação

A grande vantagem no uso do Linux Container Engine (LXC) é que ele não utiliza os métodos tradicionais de virtualização,
o LXC faz uso do mesmo Kernel do servidor "navio" e isso faz com que tudo seja mais rápido.

Cada container é tratado no "navio" como um processo isolado por um namespace e chroot. Cada start de um container é tão
rápido pois tudo isso para o servidor é um processo, semelhante ao start de um service no SO.

O ponto de atenção e um detalhe interessante é que ao criarmos um novo container, dentro do SO ele cria um novo chroot e
isso tende a ter uma necessidade de I/O muito grande.
O Docker para tratar isso com eficiência, faz uso de imagem, onde um novo container vai ser um diff de um outro container base.

Outro recurso muito interessante que ele faz uso é do sistema de arquivos AuFS, onde parte pode ser destinada para leitura
e outra para escrita ou ainda melhor, um merge entre ambos. Partes podem ser compartilhadas entre os containers para leitura e caso necessário
pode ser dado para cada container um ponto de montagem individual para escrita.

Fora essa praticidade no uso de containers, poder compartilhar e segmentar recursos no mesmo servidor, temos também a "facilidade" para fazer os deploys dos serviços (Web, BD e App).

Abraços e até a próxima.

Nenhum comentário:

Postar um comentário