Planejamento de Marketing 2025: Combo de Estratégias para escalar sua presença digital 🚀

Utilizando Docker para escalonar aplicações Node.Js

Publicado em 20/12/2016

Atualizado em 04/06/2024

Ao iniciar um projeto, é muito importante conhecer os requisitos do sistema, bem como saber qual carga de acesso que ele deve suportar. O Node.JS é uma ótima solução para criar aplicações onde ocorrem entrada e saída de muitos dados, pois possui uma grande facilidade de escalonamento horizontal. Neste artigo, vamos demonstrar como configurar o ambiente de desenvolvimento para a criação de projetos escalonáveis com o Docker. Utilizando essa plataforma aberta, é possível realizar deploys e escalonar aplicações com tranquilidade. Além disso, o Docker providencia um ambiente isolado e leve para sua aplicação, graças à virtualização por containers.

A grande diferença entre a virtualização por containers e a de uma VM (Virtual Machine) é o consumo de espaço e recursos utilizados pela máquina. O motivo dessa disparidade é o fato de a VM emular o hardware de uma máquina utilizando uma camada denominada hypervisor, enquanto um container faz a virtualização pelo próprio sistema operacional. Em outras palavras, um container faz o agrupamento e o isolamento de recursos. Tudo o que está dentro de um container não enxerga o que está fora (Host).

A virtualização por container já existe há algum tempo, mas o Docker acrescenta um grande diferencial ao processo. No Docker, cada imagem contém várias camadas, sendo assim, ele utiliza o UnionFS para reunir todas as camadas. Esse é um processo que concede rapidez, pois não há a necessidade de fazer rebuild para atualizar as imagens.

Dito isso, vamos configurar um ambiente em Docker para uma aplicação NodeJs. Um proxy reverso na frente das instâncias da aplicação é uma das configurações padrão que vamos utilizar. Não será necessário realizar qualquer tipo de configuração manual. Graças à comunidade, as imagens já estão prontas, sendo necessário apenas realizar pequenos ajustes para sua aplicação rodar. Para iniciar o proxy (vamos assumir que você já tenha instalado o Docker), basta executar o seguinte comando:

1 $ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy

Ao executar o “run”, o daemon do Docker irá procurar pela imagem “jwilder/nginx-proxy” na sua máquina. Caso não encontre, ele irá baixar diretamente do Docker Hub. O comando “-v /var/run/docker.sock:/tmp/docker.sock” faz com que os dois arquivos fiquem sincronizados, tanto no host quanto no container. Mais informações sobre a imagem você pode verificar no link https://hub.docker.com/r/jwilder/nginx-proxy/. Agora é possível subir o container da aplicação com o seguinte comando:

1 $ docker run -d -e VIRTUAL_HOST=<HostDoSeuApp> --expose 8888 -v "<CaminhoDoSeuApp>":/usr/src/app -w /usr/src/app node:4.4 node index.js

Esse comando é similar ao primeiro, sendo a passagem da variável VIRTUAL_HOST a diferença-chave para o funcionamento dessa configuração. O comando deve conter o host que aponta para sua máquina – essa variável é utilizada para a configuração do proxy. Será necessário deixar a porta em que o servidor node está rodando aberta para o host (comando “–expose”).

Com isso, você tem seu ambiente pronto para ser executado localmente ou em produção. Além disso, você pode executar o comando para iniciar outro container da aplicação e, assim, escalar mais instâncias.

O Docker possui um sistema de versionamento de imagens pelo Docker Hub. Assim, se o autor da imagem fizer alguma atualização na configuração da imagem, ele pode fazer um commit e um push. Da mesma forma, as pessoas que possuem a imagem podem usar o comando pull para atualizar a sua versão. Além disso, é possível realizar rollbacks em alterações efetuadas no container.

Como foi demonstrado acima, é possível realizar a configuração de ambientes de maneira simples e rápida. Mesmo não sendo ainda recomendada a utilização dessa tecnologia (Docker) em produção, acreditamos que seja muito importante o desenvolvimento do seu estudo. Consideramos que pelo poder de automação, fácil configuração e gerenciamento que o método propõe, em um futuro próximo, ele fará parte do desenvolvimento das aplicações web e serviços cloud.

O que você achou deste conteúdo?

O que você achou deste conteúdo?

Bruno
Bruno Fidelis
Estudante de ciência da computação. Atualmente trabalha como desenvolvedor web na KingHost. Gosta de estudar novas tecnologias e criar soluções inteligentes a partir delas.
Bruno
Bruno Fidelis
Estudante de ciência da computação. Atualmente trabalha como desenvolvedor web na KingHost. Gosta de estudar novas tecnologias e criar soluções inteligentes a partir delas.

Compartilhe esse conteúdo com alguém que possa gostar também

Receba todo mês conteúdos
incríveis como esses para
seguir evoluindo

Conteúdos relacionados

Você sabe quais são as linguagens de programação mais usadas atualmente? Em um cenário tecnológico que evolui rapidamente, é crucial entender quais linguagens estão em alta e por que elas são relevantes para o desenvolvimento de software. Hoje determinadas linguagens se destacam por sua versatilidade, comunidade ativa e capacidade de resolver problemas complexos em diversas...
Na computação, um algoritmo é um conjunto finito de instruções bem definidas, ordenadas e executáveis, que resolvem um problema específico.  Mas o que isso significa na prática? Você já se perguntou como seu smartphone recomenda músicas, como o Google encontra exatamente o que você procura ou como as redes sociais te mostram posts relevantes? A...
Quais são as principais tendências de marketing e tecnologia para 2025? A resposta vai te dar uma série de insights e direcionar estratégias para que sua marca se destaque este ano. Temas como inteligência artificial, biotecnologia e cibersegurança, estão entre os destaques desta seleção e podem mudar a maneira significativa a forma como vivemos e...
Ataque DDoS é uma das ameaças mais temidas por quem tem um site na internet. Imagine anos de investimento para construir a credibilidade de uma presença digital, para ver seu site sendo afetado por um ataque desse tipo.  Para se ter uma ideia, o Brasil pelo 10º ano consecutivo, é o líder do ranking de...

Mensagens para você