O Heroku gratuito está perto do fim. E agora? Conheça o Render
- #JavaScript
- #Python
- #Java
O Heroku deixará de oferecer um serviço de hospedagem de aplicações web gratuito no final de novembro, que deixou a comunidade dev bem triste. Mas... existem outras alternativas no mercado que podemo utilizar.
Vou falar aqui de uma bem simples, a Render. Da mesma forma que o Heroku, ele possui uma versão gratuita que permite ao usuário utilizar até 512 MB.
Para utilizar o serviço, basta se cadastrar no site - e pode usar sua conta do google, do github... Opte pela versão "free" e seja feliz para expor seu portfolio e projetos pessoais para o mundo.
Deploy de API Python (FastAPI)
Para este exemplo, vou usar uma API feita em Python, FastAPI e MongoDB, que tem como servidor o Uvicorn. Mas você pode usar o que quiser, na real.
No "Dashboard" (Painel de Controle), clique em "New" para criar seu projeto. Escolha o tipo da sua aplicação. No meu caso, é um Web Service, mesmo, mas há diversas opções disponíveis, veja só:
A seguir, conecte o repositório do seu projeto que está lá no Github. Você pode só colocar o link dele, caso seja um repo público, ou clicar no menu direito para se conectar à sua conta do Github, o que lhe permitirá escolher com qual projeto trabalhar. Note que há suporte também para o Gitlab ;)
Após a escolha do repositório, você vai precisar ajustar algumas configurações básicas (e é bem simples, mesmo, viu).
Um diferencial muito bacana é que você pode escolher o nome do seu site na url. Então, não precisa hospedar sua aplicação num site esdrúxulo, como http://jhdyeiwiwj63567.provedor.com, como oferecem outros provedores gratuitos.
As configurações a fazer são bem básicas. A maioria já vem por padrão, mas você pode alterar se necessário, como escolher uma outra branch, que não a main, como base do projeto, qual a sua pasta raiz etc.
Feito isso, no "Build Comand" informe o comando que executa aquele seu arquivo de instalação de bibliotecas e dependências (Aqui, no Python, estou usando o clássico requirements.txt), mas cada stack tem o seu.
Outro ponto importante: o "Start Command". Neste quesito você colocará, por exemplo, o comando para rodar o servidor da aplicação. No meu caso, estou usando o uvicorn. E, aqui, um adento. O render escolherá a porta para você, então use a tag --host 0.0.0.0 neste caso. Em outras palavras, não seja específico, não digite a porta.
Veja o exemplo (a minha app estava na pasta main):
uvicorn main:app --host 0.0.0.0 --reload
Agora, escolha o plano gratuito, claro:
Importante: As variáveis de ambiente. Para informá-las, clique no botão "Advanced". Você pode criar um arquivo "secreto", de acesso restrito do Render, com as suas variáveis de ambiente, como o ".env". Mas você pode simplesmente adicioná-las uma a uma, informando chave e valor, diretamente. Depende de como for melhor para você.
Aí basta clicar em "Create Web Service" e esperar ele fazer o build e o deploy para você <3
Não vou mentir, esse processo de deploy leva uns bons minutos... Mas, de graça, né mores, tudo bem ;)
Blueprints, o Procfile do Render
Assim como no Heroku, você pode criar um arquivo de configuração da infraestrutura do seu aplicativo, caso você esteja subindo apps mais complexas, com docker e afins. Basta nomear o arquivo como "render.yaml" e passar todas as informações. Neste link você pode obter mais detalhes de como estruturar esse arquivo: https://render.com/docs/blueprint-spec