Deploy de API Node.js na nuvem com o Heroku

Node.js Heroku

Deploy de API na nuvem

Hoje em dia com o avanço do serviços de cloud está cada vez mais simples ter a sua aplicação rodando em um servidor na nuvem, o que traz diversas vantagens como escalabilidade, estabilidade e segurança.

Heroku

O Heroku é uma plataforma da Salesforce, que possibilita desenvolvedores compilarem, publicarem e monitorarem as suas aplicações na nuvem. Ele tem suporte a diversas linguagens como Node.js, Python, Go, Java, PHP e muito mais. Um dos pontos fortes do Heroku é o CI/CD, você pode conectar o repositório do seu projeto ao Heroku, e toda vez que você realizar um push para sua branch principal, é iniciado uma esteira de processos de instalação de dependências, teste, compilação e deploy automáticos, o que facilita e economiza tempo no processo de colocar seu sistema em produção.

Em relação ao custo do serviço, o Heroku possui um plano grátis para desenvolvedores que ainda estão testando seus sistemas, neste plano a sua API entra em estado de inatividade depois de ficar 30 minutos sem receber nenhuma requisição, então é bom ter isso em mente caso de sua aplicação precisar fazer processos longos em background.

Como usar o Heroku

Para esse exemplo vamos criar uma simples API Hello World utilizando Node.js e Express, e para fazer o deploy vamos utilizar a integração do Heroku com o Github.

Criar API

Para criar a API você pode fazer um fork desse repositorio: GitHub - dev-league-br/hello-world-node-api ou seguir os passos abaixo para criar você mesmo a API Hello World, para isso você deve ter o Node.js instalado na sua máquina.

Crie o projeto no GitHub, não se esquece de colocar o .gitignore do Node para o git não rastrear as dependências instaláveis do projeto:

criar projeto github

Após criar o projeto você deve clonar ele para sua máquina, copie a URL do projeto:

clonar repositorio

Após copiar a URL, na sua máquina realize o comando:

git clone [URL_PROJETO]

Agora dentro da pasta do seu projeto que você baixou execute o seguinte comando para iniciar um projeto NPM e instalar as dependências do projeto posteriormente:

npm init -y

O Express é o framework responsável pela comunicação web da aplicação, para instalá-lo:

npm i express

Agora vem o código da API em si, crie um arquivo index.js na raiz do seu projeto e adicione o seguinte código:

const express = require("express")
const app = express()
const port = process.env.PORT || 5000

app.get("/", (req, res) => {
  res.send("Hello World!")
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

Atenção: Quando a API estiver no Heroku ela deve rodar na porta definida pela variável de ambiente PORT que é configurada pelo próprio Heroku, se você não utilizar essa variável o Heroku não conseguirá iniciar sua API, caso rode local ela irá utilizar a porta 5000.

Agora para salvar suas alterações no repositório é só executar esses comandos:

git add .
git commit -am "API Hello World"
git push

Configurando o Heroku

Você deve criar uma conta no Heroku, e criar uma nova aplicação:

criando aplicação heroku

Defina o nome do seu projeto, o nome do projeto será usado na URL de sua API,e clique em “Create app”:

Definindo nome da aplicação

Se conecte ao GitHub:

Conectando ao GitHub - Heroku

Selecione o projeto com a API Hello World você criou:

Selecionando projeto GitHub no Heroku

Você pode ativar os deploys automáticos, assim toda vez que você fizer um commit na branch selecionada o Heroku irá automaticamente compilar sua API e disponibilizar em produção.

Deploy Automáticos

Agora é só clicar em ”Deploy Branch” que o Heroku irá fazer o resto do trabalho:

Realizando Deploy

Após o deploy ser realizado sua API já está disponível pelo link: https://[Nome_Do_Projeto].herokuapp.com/ que você pode acessar clicando no botão ”View”

Deploy realizado

Acessando você deve ver essa página com o Hello World que criamos:

Hello World Heroku e Node.js

Conclusão

Agora que você aprendeu a criar o Hello World em Node e fazer o deploy no Heroku, você já pode começar a montar sua aplicação a partir desse projeto, toda alteração feita na branch que você configurou o deploy automático irá automaticamente ser complicada e disponibilizada em produção e ficará disponível no link público para você acessá-la de qualquer lugar que tenha acesso a internet.

Fique atento ao período que inatividade de 30 minutos da API, que existe no plano gratuito, após esse tempo o Heroku irá parar de rodar o projeto e qualquer processo em background irá ser encerrado, mas não se preocupe, assim que o Heroku receber uma nova requisição ele vai novamente iniciar a API e responder normalmente mas com um pequeno atraso que é o tempo que ele leva para realizar a inicialização.

O Heroku é extremamente útil para os desenvolvedores por economizar tempo com os deploys e disponibilizar as APIs em links públicos sem necessidade de configuração de IP fixo ou certificados SSL. O plano gratuito é ótimo também para projetos que ainda estão em fase de prototipação ou até mesmo para demonstrações.

Publicado em Node.js - .

Dev League

Dev League

Conteúdos sobre programação