I’ve been running my small company for 4 years so far. It’s a podcast search engine & api.
Product & infra & Devop & all kinds of manual processes all evolve over the past 4 years. Things were added / improved on demand.
4 years ago: 3 digital ocean instances + ssh to manually deploy code. No users. So no devops.
Now:
- ~20 EC2 instances, provisioned via ansible
- to deploy code: run a bash script on my MacBook, which is actually to run ansible. The script can also rollback to any specific git sha
- use rollbar + Datadog + PagerDuty for monitoring & alerting
- 3 Postgres database EC2 instances (1 master, 2 slaves). Daily cron job to automatically upload db dump to aws s3 and google cloud storage
- no CI. No docker / kubernatte
- a few interesting devop events are sent to slack, so I’m aware of what’s going on for the entire system on my phone. Eg, when a db dump was successfully uploaded to s3, when a Django request is slower than 5 seconds, when an important cron job fails…
Not very sophisticated, right? But in practice, we rarely have outages and spend very little time to do devops.
The most annoying thing was to upgrade Postgres to a new version. We had to prepare for an entire week and minimize downtime (in practice, disable db write for < 1 minute or so).
I’ve got a couple old blog posts on engineering for solo founder:
- https://www.listennotes.com/blog/the-boring-technology-behin...
- https://www.listennotes.com/blog/good-enough-engineering-to-...