[DIca] Usar a versão free do render sem downtime
Depois de publicar a minha integração do Whatsapp com minhas redes sociais, um dos aprendizados que tive é que podemos utilizar o Render sem downtime no plano gratuito.
Para quem nâo conhece, o Render é uma plataforma que permite o deploy de vários serviços, porém, no plano gratuito, após um período de inatividade, o serviço é desligado. Com isso, quando há alguma request com ele inativo, pode ser que leve, pelo menos 50s para ter uma resposta.
A forma como achei para contornar isso foi basicamente criar um health check externo, que verifica a cada 10 minutos se o serviço está ativo. Na documentação do Render, não encontrei de forma explícita, qual é o tempo que ele considera de inativade, mas pelos testes que já fiz, entendo que se o seu serviço fica 15 minutos sem receber requisições ele é desligado, com o health check acabamos evitando isso.
No caso, todas as ferramentas sâo gratuitas, o render hospeda meu serviço e uso o BetterStack pra fazer os checks de disponibilidade, impedindo que ele seja desligado.
Um ponto importante nesse caso, é, que caso você tenha alguma política de CORS, precisa lembrar de autorizar o BetterStack a bater no endpoint que você deseja fazer o health check. Para fechar vale lembrar que você também tem a opção de fazer um script, que execute a cada período de tempo essa requisição ao seu serviço no Render, a questão é que o health check acaba sendo mais prático e inclusive útil para você acompanhar o status da aplicação.
Abaixo um tutorial simples de como criar um health check com do Render no BetterStack
1 - crie um endpoint com o método get e que retorne 200. Ter um body na response é opcional.
GET https://meu-app.render.com/health
response body example >> { status: 'ok' }
2 - crie uma conta no BetterStack
3 - com a conta, selecione 'Uptime' no menu lateral e depois 'Monitors'
4 - clique em create monitor
5 - coloque o seu endpoint de health check no campo 'Url to monitor'. Depois você pode configurar o que deseja monitorar quando receba a resposta da url.
6 - na seção 'Advanced settings' vá até 'Check frequency' e selecione um valor entre 3 e 10 minutos. Nâo recomendo deixar 15 minutos, pois como citei anteriormente, entendo que caso tenha 15 minutos entre uma requisição e outra, o serviço já é desligado.
A ideia aqui não é entrar no tópico de monitoramento, mas o BetterStack no plano gratuito oferece ferramentas bem úteis para monitorar a aplicação, como alertas, logs e até mesmo uma página de status do serviço. Deixo até de exemplo a página que construi para o Whats4Social nesse momento e a dica de ferramenta que pode ser usada em seus projetos, sem custo.