Hacker News new | ask | show | jobs
by mattbillenstein 2246 days ago
I've built it a few times for smallish startups.

1. Build tools/dependencies from source on macOS and Linux

2. Use an OS agnostic init (supervisord)

3. Automate machine setup and deployment in something like Ansible or Saltstack

This allows you to bootstrap a bare macOS or Linux system with a smallish shell script and run all the necessary services in the same way they'd run on production. You have very little specialization between production and dev -- like in the cloud you just run Postgres, you don't use RDS on Amazon.

Coincidentally this makes supporting multi-cloud or bare metal very easy since you don't use anything that's really special in any cloud. Like I would run our main thing on ec2, but CI/dev workloads on Linode where I can get cheap VMs.

Most of the piecemeal automation - migrations, cron were just tools written in python - some were daemons, others just scripts that ran during a deploy.