Workshop: Deploy descomplicado de aplicações em VPS 🚀

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

Saber como instalar o OpenClaw vai além dos requisitos técnicos. Antes de iniciar a configuração, é importante entender os objetivos da operação, os casos de uso e como a ferramenta pode contribuir para acelerar a implementação de agentes de IA. O OpenClaw centraliza a criação e operação de agentes de IA em um único ambiente....
Entenda como criar um agente de IA, definir arquitetura, escolher tecnologia adequada e preparar infraestrutura para execução em produção, considerando integrações, observabilidade, custos operacionais e escalabilidade. Criar um agente de IA vai além de escolher um modelo de linguagem ou escrever prompts. Em produção, fatores como integração com sistemas, gerenciamento de contexto, observabilidade, custos computacionais...
Mais do que entender o que é GEO, as marcas precisam desenvolver maturidade operacional para atuar nesse novo cenário: produção orientada à intenção, consistência temática e conteúdos estruturados para interpretação por modelos de IA, sem comprometer a experiência humana. A forma como os usuários acessam informação está passando por uma mudança estrutural. Interfaces baseadas em...
A crescente adoção de inteligência artificial e automação no mundo corporativo tem impulsionado o surgimento de novas ferramentas voltadas à coleta, análise e ativação de dados, exatamente o motivo para você saber o que é OpenClaw. Entre essas inovações, o OpenClaw chama atenção por ir além do modelo tradicional dos chatbots e se aproximar do...

Mensagens para você