In the previous post, I wrote about using managed services for solo founders. In this post, I’m going to talk about self-managing your infrastructure. For the vast majority of solo founders out there, this is not the recommended path. But if you must, there are some things you should do to keep your life easier.
1. Containers, containers, containers!
Everything you do should be containerized. Containers are portable and can be run anywhere. Also, they are self-contained, so no need to worry about dependencies. You can get fancy and use an orchestrator (e.g. Kubernetes) or you can run them manually. But either way, the end result is the same.
Often times people unfamiliar with containers imagine it to be some complex beast. That is not the case. Containers are simply a way to package your application so it can be run anywhere, self-contained.
For example, if I am running a Django application, to containerize it I would start with a python base image. Then I would tell it to install dependencies including Django and copy over the source files. You can tell it to start a gunicorn server when the container is run.
Once I build that container image, I can run my Django application anywhere that has a container runtime. This is much easier to manage than setting up automation scripts on your servers.
As a solo founder, unless it is the target of your business, you shouldn’t be spending much time configuring servers.
2. Automate everything (that can be automated easily)
It may not seem like a big deal manually spinning up a droplet in Digital Ocean and then configuring it for your application. But this introduces lots of room for error. Plus, who wants to spend time manually configuring new servers when you can rip the bandage and just automate it? If you automate it, you don’t have to manually do it ever again.
Our animal brains are not great at remembering exact processes, so when you manually provision a VM for the 20th time, you may forget a crucial step. Maybe it was a firewall rule. Maybe it was disabling password authentication for the root user.
If you run into steps that aren’t easily automatable, read this post I made earlier this year. Even if that process isn’t actually automated, having all of the steps recorded makes it easy to ensure that you don’t bungle something up.
3. Backup and test your backups
It’s easy enough to say that you’re doing regular backups. But it is important to understand what could go wrong if your backups fail. What would you do if you lost all of your users’ accounts? Or all of the user-generated data? Or all of the data which constitutes your main selling point? If your servers died and your backups failed, your business is dead.
Having an effective backup strategy isn’t rocket science, but it is crucial to have one. Identify the components that need to be backed up (e.g. databases, user-generated content, etc.). Then you want to figure out how often to back them up and where to back them up to.
One thing that is often overlooked is testing your backup process. If you’ve gone a year without ever having to restore from a backup, are you sure that the process even works? It’s a good idea to periodically spin up a test environment and restore it from the backup to make sure all is working as expected.
4. Log and monitor everything
If you don’t have real people (i.e. employees) to ensure everything is functional for you, build some artificial ones (but seriously, even if you have employees you should do this anyway). If you are managing your own infrastructure, you are going to want to monitor each component. This allows you to understand the current state, see trends, and even predict when you need to expand.
You will also want to aggregate all of your logging so you can quickly spot issues quickly. And of course, with all of these logs in one place, it makes it much easier to set up alerts so you can get notified the instance something goes down.
There are lots of tools out there to do this, but the ELK stack is a popular one that handles all of this. Though to be honest it is a beast.
When you want to manage infrastructure as a solo founder there is going to be a lot on your plate. It’s not impossible, but the chances are that you have more important things to be working on for your business. If rather than setting all of this up, you can find a couple more paying customers, you can quickly offset the cost of paying for the managed services.
Self-managing all of the infrastructure is a pretty sure-fire way to guarantee more personal stress.