Implante seu back-end do Node.js gratuitamente
A implementação do backend do seu aplicativo o torna acessível aos usuários pretendidos. No entanto, a jornada do host local para a nuvem pode ser difícil sem o conhecimento e as ferramentas adequadas.
Neste artigo, você aprenderá a implantar seu backend do Node.js em várias plataformas, cada uma com uma camada gratuita ou créditos gratuitos que permitem que você explore a plataforma primeiro, sem o incômodo do pagamento.
Contents
1. Back4app
O Back4app é uma plataforma de nuvem de plataforma como serviço (PaaS) que permite criar e hospedar aplicativos da Web de várias pilhas por meio de uma interface de usuário intuitiva, uma ferramenta CLI dedicada e um agente de IA.
A plataforma oferece vários serviços, incluindo uma plataforma de contêineres como serviço (CaaS) conhecida como Back4app Containers.
Os contêineres da Back4app são um serviço CaaS oferecido pela Back4app que permite gerenciar e implantar seu aplicativo da Web usando contêineres do Docker.
Os contêineres da Back4app oferecem monitoramento de aplicativos em tempo real com métricas cruciais, como CPU, RAM, Bandwith e logs de aplicativos, para ajudá-lo a identificar gargalos e otimizar o desempenho do aplicativo.
Ele também oferece implementações automáticas, que têm tempo de inatividade zero nas atualizações. Eles conseguem isso garantindo que os novos contêineres estejam prontos para funcionar quando você implanta um novo commit ou altera a configuração do contêiner, evitando interrupções de serviço durante as implantações.
A implantação com contêineres do Back4app é um processo simples que envolve conectar o repositório do GitHub do seu aplicativo (Dockerfile incluído) ao aplicativo Back4app Github, adicionar suas variáveis ambientais e clicar no botão de implantação.
Como implantar seu backend do Node.js nos contêineres do Back4app?
Para implantar seu aplicativo Node.js nos contêineres do Back4app, você precisa
- Uma conta do Back4app, que pode ser registrada gratuitamente se você ainda não tiver uma.
- O aplicativo Back4App Containers GitHub instalado em sua conta do GitHub.
Depois de fazer login na sua conta do Back4app e instalar o aplicativo GitHub na sua conta do GitHub, conceda ao aplicativo Back4app acesso ao repositório que você deseja implantar.
Certifique-se de que seu repositório contenha um Dockerfile; abaixo está um exemplo de Dockerfile que você pode usar para seu aplicativo Node.js:
# Specify base image
FROM node:18-alpine
# Specify working directory
WORKDIR /app
# Copy package.json and package-lock.json
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy source code
COPY . .
# Expose port 8080
EXPOSE 8080
# Run the app
CMD ["npm", "start"]
Em seguida, crie um novo aplicativo Back4app clicando no botão “NEW APP” no canto superior direito da tela. Em seguida, selecione a opção Containers as a Service, conforme mostrado na imagem abaixo.
Selecione o aplicativo que deseja implantar na lista de aplicativos aos quais você concedeu acesso ao aplicativo Back4app GitHub.
Preencha as variáveis ambientais associadas ao seu aplicativo e clique no botão Create App (Criar aplicativo ).
Clicar no botão Create App iniciará o processo de implementação e mostrará os logs de implementação em tempo real para ajudá-lo a monitorar o processo de implementação.
Se ocorrer um erro durante o processo de implantação, você pode permitir que o agente de IA do Back4app analise os erros dos registros e ofereça possíveis soluções. Como alternativa, você pode consultar o guia de solução de problemas do Back4app.
Depois que o aplicativo for implantado, você poderá acessá-lo com o URL ativo no canto superior esquerdo do seu painel.
O nível gratuito do contêiner do Back4app oferece 0,25 CPU, 256 MB de RAM e 100 GB de transferência, o que é ideal para desenvolvimento e aprendizado. Para aplicativos de produção, seria ideal fazer upgrade para um dos planos pagos disponíveis.
2. Render
O Render é uma plataforma de nuvem que fornece uma solução de PaaS (plataforma como serviço) para a implantação de aplicativos da Web de várias pilhas de desenvolvimento, incluindo o Node.js.
Com o Render, seus serviços são dimensionados para cima ou para baixo com base no uso médio de CPU e/ou memória, eliminando a necessidade de prever ou provisionar serviços em excesso para atender ao alto tráfego.
O Render também oferece suporte a implantações com tempo de inatividade zero, garantindo que seu aplicativo nunca fique inativo, mesmo quando a compilação for interrompida.
Ele consegue isso fazendo verificações de integridade sempre que você implanta uma nova versão do seu aplicativo e só substitui a versão antiga se a nova versão for aprovada na verificação de integridade.
O Render também inclui muitos recursos, alguns dos quais incluem ambientes de visualização, uma API REST dedicada, discos persistentes, rede privada e muito mais.
A implantação de seu aplicativo no Render envolve a conexão de sua conta do GitHub/GitLab à plataforma e a configuração dos detalhes da implantação, incluindo variáveis ambientais para seu aplicativo.
Como implantar seu back-end do Node.js no Render
Para implantar seu aplicativo no Render, você precisa de uma conta ativa; se ainda não tiver uma, inscreva-se gratuitamente.
Faça login na sua conta e navegue até o painel. Em seu painel, clique em “Web Services“.
Em seguida, será solicitado que você conecte sua conta do GitHub/GitLab ao Render ou forneça um repositório Git público.
Depois de conectar sua conta do GitHub e selecionar o repositório que deseja implantar, você será direcionado a um formulário de configuração, no qual será necessário inserir detalhes como o nome do aplicativo, o comando de compilação, as variáveis ambientais etc.
Preencha os detalhes necessários e clique no botão “Create Web Service“. Isso inicia o processo de implantação e o leva a uma tela em que é possível monitorar o status da implantação e os logs do aplicativo em tempo real.
Se ocorrer algum erro durante a implantação, você poderá analisar o erro nos logs de implantação e solucionar o problema para que a implantação seja bem-sucedida.
O plano gratuito da Render oferece 512 MB de RAM e 0,1 CPU para seus serviços da Web. Se o seu aplicativo exigir mais recursos, considere os planos pagos.
3. Fly
O Fly é uma plataforma de nuvem que fornece uma rede global de fornecimento de aplicativos.
Ele permite que você implemente e execute aplicativos próximos aos seus usuários em todo o mundo, aproveitando uma rede distribuída de servidores, reduzindo significativamente a latência e melhorando o desempenho do seu servidor.
A Fly oferece micro-VMs Linux completos conhecidos como “Fly Machines”. As máquinas Fly têm um tempo de inicialização relativamente rápido de cerca de 300 ms. Você também pode pausar suas máquinas quando elas estiverem inativas, garantindo que você pague apenas pelos serviços que consumir.
A implementação do seu aplicativo no Fly envolve a execução de alguns comandos com sua ferramenta CLI dedicada.
Como implantar seu back-end do Node.js em tempo real?
Para implantar seu aplicativo Node.js no Fly, você precisará:
- Uma conta Fly, na qual você pode se inscrever gratuitamente se não tiver uma.
- A ferramenta de linha de comando
flyctl
instalada em seu computador local.
Se você não tiver a ferramenta flyctl
CLI instalada em seu sistema, poderá instalá-la usando o comando abaixo:
#macOS/Linux
curl -L https://fly.io/install.sh | sh
#windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
Em seguida, faça login na sua conta Fly executando o comando abaixo:
fly auth login
A execução do comando acima abrirá o navegador padrão e solicitará que você faça login na sua conta do Fly.
Depois de fazer login com êxito, navegue até o diretório do aplicativo que deseja implantar e execute o comando abaixo:
fly launch
Quando você executar o comando acima, o Fly detectará automaticamente que você está tentando implantar um aplicativo Node.js e configurará a implantação.
A ferramenta CLI exibirá a configuração do aplicativo para sua aprovação antes da implantação do aplicativo. Se estiver satisfeito com as configurações, você poderá prosseguir respondendo “Y” ao prompt, caso contrário, poderá responder “N”.
Responder N abrirá o navegador e o levará a uma página na qual você poderá configurar o aplicativo além da configuração padrão fornecida pelo Fly, conforme mostrado na imagem abaixo.
No entanto, diferentemente de outras opções abordadas neste artigo, o Fly exige que você adicione as informações do seu cartão antes de implantar o aplicativo. Ainda assim, você não será cobrado até que exceda o valor de US$ 5 em recursos.
4. AWS
O Amazon Web Services (AWS) é um provedor de infraestrutura como serviço (IaaS) que fornece componentes fundamentais de infraestrutura de computação pela Internet.
O AWS permite que você crie e gerencie ambientes virtualizados sem investir e manter hardware físico.
A AWS tem a maior funcionalidade entre outros provedores de serviços em nuvem, desde tecnologia de infraestrutura, como computação e bancos de dados, até tecnologias emergentes, como IA e ML.
É também o ambiente de computação em nuvem mais seguro disponível, apoiado por um conjunto profundo de ferramentas de segurança em nuvem, com mais de 300 serviços e recursos de segurança, conformidade e governança, bem como suporte para 143 padrões de segurança e certificações de conformidade.
Além disso, a AWS é uma plataforma madura com um histórico comprovado (17 anos) de confiabilidade, segurança e desempenho.
No entanto, a implementação de seu aplicativo no AWS é mais complexa do que em outras plataformas, como Back4app e Render.
Você pode fazer isso de várias maneiras; no entanto, este tutorial abordará a mais popular, o Amazon Elastic Compute Cloud (Amazon EC2).
Como implantar seu back-end do Node.js no AWS?
O EC2 é um serviço da Web fornecido pela Amazon que permite alugar servidores virtuais, conhecidos como instâncias, na nuvem.
Para criar uma instância do EC2, você precisa de uma conta do AWS; você pode se inscrever gratuitamente se não tiver uma.
Depois de fazer login na sua conta da Amazon, crie uma instância do EC2 (você pode pular a última etapa do artigo com link acima, que exige que você se conecte à sua instância do EC2 usando SSH).
Você pode verificar a instância recém-criada no painel do EC2 em “instâncias”.
Em seguida, conecte-se à sua instância do EC2 usando o console de instância do EC2. Depois de seguir as etapas nas instruções do link acima, um terminal da Web deverá ser aberto em seu navegador.
Em seguida, mude para o usuário root executando o comando abaixo:
sudo su -
A execução do comando acima mudará o contexto do usuário para o usuário root com privilégios elevados.
Esse comando, que inclui “sudo” para recursos de superusuário, “su” para troca de usuário e o hífen (“-“), garante que as variáveis de ambiente e as configurações do usuário root sejam carregadas.
Em seguida, instale o Node Version Manager (NVM) executando o comando abaixo:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Em seguida, ative o NVM na sessão atual do terminal executando o comando abaixo:
. ~/.nvm/nvm.sh
Em seguida, instale o Node.js usando o NVM executando o comando abaixo:
nvm install node
Em seguida, instale o Git executando o comando abaixo:
sudo yum update
sudo yum install git
Você pode confirmar que o Node.js e o Git foram instalados com êxito em sua instância do EC2 executando o comando abaixo:
node -v && git -v
Se a instalação for bem-sucedida, você verá os números de versão impressos no console, conforme mostrado na imagem abaixo.
Em seguida, conecte sua chave SSH do GitHub à sua instância do EC2. Depois de configurar e adicionar com êxito sua chave SSH, execute o comando abaixo para clonar seu repositório na instância do EC2:
git clone <YOUR_APPLICATION_URL>
O comando acima clonará seu aplicativo em sua instância do EC2.
Entre
no diretório do aplicativo em seu EC2 e execute o comando abaixo para instalar todas as dependências do projeto.
npm install
Em seguida, adicione suas variáveis de ambiente executando o comando abaixo:
nano .env
O comando acima criará e abrirá um arquivo .env
vazio, copiará suas variáveis ambientais, as colará no arquivo e pressionará control + X e, em seguida, Y para salvar e fechar o arquivo.
Por fim, execute o script de inicialização do seu aplicativo, que normalmente deve ser o comando abaixo:
npm start
A execução do comando acima deve iniciar seu aplicativo. Você pode acessar o aplicativo implantado usando o endereço DNS público, que pode ser encontrado no painel da instância.
A camada gratuita para instâncias EC2 no AWS fornece 750 horas mensais para instâncias t2.micro ou t3.micro que executam Linux, RHEL ou SLES, dependendo da região.
Da mesma forma, para instâncias do Windows, ele oferece 750 horas por mês para instâncias t2.micro ou t3.micro com base na região.
Além disso, independentemente do tipo de instância, ele inclui 750 horas por mês para um endereço IPv4 público.
No entanto, a camada gratuita só está disponível para novos clientes da AWS por 12 meses após a data de inscrição na AWS.
5. DigitalOcean
A DigitalOcean é uma plataforma de infraestrutura como serviço (IaaS) que oferece acesso às VMs subjacentes que dão suporte aos seus aplicativos, permitindo que você configure seu espaço em disco, aloque memória e configure sua rede.
A DigitalOcean fornece vários produtos de computação em nuvem, como droplets, que são máquinas virtuais Linux. Além dos droplets, eles oferecem um serviço Kubernetes gerenciado e funções sem servidor.
A DigitalOcean também oferece segurança de rede com firewalls de nuvem, balanceadores de carga, uma nuvem privada virtual, IPs flutuantes, DNS, IPv6 e proteção contra DDoS.
A implementação de seu aplicativo Node.js na DigitalOcean é um processo relativamente simples em comparação com outras opções de IaaS.
Isso envolve a criação de um Droplet, sua configuração, a instalação de sua máquina Linux virtual e um proxy reverso para atender às suas necessidades.
Implantando seu back-end do Node.js em um Droplet da DigitalOcean?
É necessário ter uma conta na DigitalOcean para implantar seu aplicativo Node.js na plataforma; você pode se inscrever gratuitamente se não tiver uma.
Em seguida, faça login e crie um novo projeto (ou use um projeto existente).
No painel do seu projeto, clique no menu suspenso “Create” (Criar) no canto superior direito da tela e selecione “Droplets” (Gotas) para criar uma nova gota.
Em seguida, selecione a região de implantação mais próxima de você para o seu droplet.
Em seguida, selecione o sistema operacional “Ubuntu” como sua imagem e “Basic” como seu tipo de droplet.
Em seguida, selecione suas opções preferidas de CPU.
Em seguida, selecione “password” (senha) como método de autenticação. Como alternativa, você pode escolher SSH como método de autenticação.
Por fim, selecione “1” como o número do seu droplet e dê a ele um nome de host.
Depois de preencher os detalhes necessários, clique no botão “Create Droplet” (Criar Droplet). Isso o redirecionará para o seu painel de controle.
No painel, selecione o droplet que acabou de criar e inicie o droplet do console do droplet, conforme mostrado na imagem abaixo.
O lançamento do console do droplet abrirá um terminal da Web do Ubuntu no seu navegador, conforme mostrado na imagem abaixo.
Em seguida, instale o script de configuração do Node.js executando o comando abaixo:
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
Em seguida, instale o Node.js executando o comando abaixo:
apt-get install nodejs -y
Em seguida, clone seu repositório do GitHub usando o comando abaixo:
git clone <YOUR_GITHUB_REPOSITORY_LINK>
Instale as dependências de seu projeto executando o comando abaixo:
npm install
Em seguida, adicione suas variáveis de ambiente executando o comando abaixo:
nano .env
O comando acima criará e abrirá um arquivo .env
vazio, copiará suas variáveis ambientais, as colará no arquivo e pressionará control + X e, em seguida, Y para salvar e fechar o arquivo.
Em seguida, instale o PM2 para manter seu servidor em execução em segundo plano:
sudo npm i pm2 -g
Em seguida, inicie seu servidor com o PM2 executando o comando abaixo:
pm2 start main.js
Em seguida, execute o comando abaixo para garantir que seu servidor seja reiniciado sempre que o aplicativo for reiniciado:
pm2 startup ubuntu
Agora seu aplicativo está em execução e escutando em seu droplet (localhost). Para torná-lo disponível publicamente, você configurará o Nginx como um proxy reverso.
Execute o comando abaixo para instalar o Nginx:
sudo apt install nginx
Antes de usar o Nginx, você deve ajustar o ufw (Uncomplicated Firewall) do Ubuntu para proteger seu aplicativo e garantir que somente o tráfego autorizado possa chegar ao seu servidor da Web.
Execute o comando abaixo para ativar o ufw:
ufw enable
Em seguida, execute o comando abaixo para permitir SSH, HTTP e HTTPS:
ufw allow ssh && ufw allow http && ufw allow https
O comando acima habilita o firewall (UFW) em seu servidor Ubuntu para permitir conexões de entrada nas portas 22 (para SSH), 80 (para HTTP) e 443 (para HTTPS).
Em seguida, execute o comando abaixo para abrir o arquivo de configuração padrão do Nginx:
sudo nano /etc/nginx/sites-available/default
Dentro do arquivo de configuração, localize o objeto location
e substitua-o pelo bloco de código abaixo:
location / {
try_files $uri $uri/ =404;
proxy_pass http://localhost:5050;#Replace with the port your app is running on
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Observação: Para proxy_pass
, você pode substituir o valor por qualquer porta em que seu aplicativo seja executado.
Feche e salve o arquivo(control + X, Y, ENTER). A edição do arquivo de configuração com o bloco de código acima configura o proxy reverso de modo que, quando você fizer solicitações para a porta 80 (para HTTP), o aplicativo em execução na porta 5050 (ou na porta padrão) processará as solicitações.
Em seguida, execute o comando abaixo para testar se o arquivo de configuração do Nginx está configurado corretamente.
sudo nginx -t
Se o seu arquivo de configuração foi configurado corretamente, você deverá obter a resposta da imagem abaixo.
Por fim, reinicie o Nginx executando o comando abaixo para garantir que suas alterações no arquivo de configuração tenham efeito:
sudo service nginx restart
Agora você pode fazer solicitações ao seu aplicativo usando o endereço IPv4 público do seu droplet.
O nível gratuito da DigitalOcean oferece US$ 200 em créditos para novos usuários acessarem todos os serviços disponíveis.
Comparação das opções de implementação
Este artigo abordou cinco opções de implantação para seu aplicativo Node.js. Abaixo está uma comparação tabular de todas as plataformas abordadas.
Plataforma | Categoria | Ferramentas de desenvolvimento | Recursos de nível gratuito | Informações de pagamento |
Back4app | PaaS | Docker, aplicativo GitHub, agente de IA Back4app. | – 0,25 CPU – 256 MB de RAM – Transferência de 100 GB | Não é necessário |
Render | PaaS | Aplicativo GitHub/GitLab, link do repositório público | – 512 MB de RAM – 0,1 CPU | Não é necessário |
Fly | PaaS | Ferramenta Fly CLI | Recursos/uso no valor de US$ 5 | Necessário |
AWS | IaaS | Instância do AWS EC2 | – 750 horas por mês de instâncias Linux, RHEL ou SLES t2.micro ou t3.micro. – 750 horas por mês de instância Windows t2.micro ou t3.micro, dependendo da região. – 750 horas por mês de endereço IPv4 público. | Necessário |
DigitalOcean | IaaS | Gota do Oceano Digital | $200 créditos gratuitos para novos usuários. | Necessário |
De modo geral, as plataformas PaaS, como Back4app, Render e Fly, são mais adequadas para aplicativos que exigem escalabilidade, flexibilidade e ciclos rápidos de desenvolvimento e implementação.
Por outro lado, as plataformas de IaaS, como a DigitalOcean e a AWS, são mais adequadas para aplicativos que exigem maior controle sobre a infraestrutura subjacente, configurações personalizadas e escalabilidade sem a necessidade de gerenciar hardware físico.
Conclusão
Neste artigo, você explorou e aprendeu como implantar um aplicativo Node.js usando contêineres Back4app, Render, Fly, AWS e DigitalOcean.
Cada uma das opções discutidas tem suas vantagens e desvantagens. Para as plataformas PaaS, o processo de implementação é mais fácil.
No entanto, você perde a maior parte do controle da infraestrutura subjacente. Nas plataformas de IaaS, o processo de implementação é complicado; no entanto, você tem controle total da infraestrutura subjacente sem ter servidores físicos.
Qualquer que seja a opção escolhida, você precisará comprar e conectar um nome de domínio personalizado para torná-lo realmente acessível aos seus usuários.
Se você gostou deste artigo, aprenda também Como criar um aplicativo da Web com um banco de dados PostgresSQL.