Deployment options for “once” apps

I’ve been thinking about how “once” apps are going to be deployed. 

If you buy desktop software, you simply have to download a file, install it on your computer and you’re done. And the experience is usually offline based (e.g. a photo editor) so there aren’t many moving parts.

Now, if you want to turn an “existing SaaS” into a “once” product, there may be additional moving parts that make deployment tricky (e.g., databases, application servers, queues, 3rd party APIs, infrastructure, etc). My hunch is that success of such a product requires that deployment be super easy.

I think the first part of tackling this issue is to make the application’s infrastructure requirements super simple. Some examples include:

  • Simplifying the dependencies on the data store level
  • Reducing 3rd-party library dependencies.

The second part is figuring out how to wrap all that web app functionality into something you can just run. I think the options here appear to be (listed from most to least convenient):

  • (1) One click deploy. This would deploy the application to a public cloud with minimal configuration using a browser. This would be something like the “deploy to Heroku” or “deploy to Railway” button.
  • (2) Install a Linux package on a virtual machine (VM) and run it. The Linux package bundles all the source code in a way that is ready to use. However, you would still need to configure your infrastructure (e.g. local storage, networking, etc). A key aspect here is that you are using a single VM. Self hosted GitHub Enterprise and GitLab take this approach.
  • (3) Build the source using its Dockerfile and deploy it on a VM (e.g., with Kamal). This is very similar to (2)  but here you have to build the image instead of just using a trusted one.
  • (4) High Availability setup. The goal here is to be able to support multiple VMs which require more infrastructure knobs (e.g. load balancer, dedicated database host, etc). GitLab also has this approach for some of its customers. This is requires a significant amount of work and is not necessary for most users. This appears to be DHH’s conclusion too.

Curious to see what the 37signals team eventually comes up with.