I can’t objectively say that Heroku is the problem. Objectively, the problem is the long JIT-compilation time which can not be controlled/eliminated. The more complex the app and the larger packages it has, the longer it takes to (re)start it up.
I’m happy with DO but that’s not what I’m after. My objective is to demonstrate a happy path workflow - I’m working on documentation and a video showing how to bootstrap a Genie app from 0 to deployment on Heroku in a few minutes. The major advantage is that Heroku is user-friendly and has a free tier. In my Rails learning days, being able to build and publish an app with ease, was a magical experience. And Heroku was part of it.
I have plans to add support (integrations) for more major hosting providers, including DO. But the fact that Heroku provides a free tier where Julians could just whip up their projects and host them there during dev, with only 2 Genie commands, is really nice.
PS - I managed to address the issue of keeping it alive by adding functionality within Genie to optionally ping URLs (which can also be used for triggering the JIT-compilation so the first users don’t get a 30s delay on their requests).
However, the issue now is that the initial startup goes over 60s. And if the app doesn’t bind to the port in 60s it gets killed by Heroku. I was trying to build a nice and relevant demo but it seems that the only thing that would allow the app to run on the free tier is to remove Plots.jl and refactor the app without using Plots.jl.
We really need a way to speed up deployments/first-runs of Julia apps.
===
PS2 - @ninjaaron Dokku looks cool for their Azure, DO, and DH integrations. So maybe I can use it for Genie to provide deployments via Dokku. Thanks for sharing.