Containers.
I’ll also recommend commercial OrbStack for Mac, because it simplifies some configuration and is performant.
That was my focus over the last couple months (and right now with customer solution I’m running tens of isolated clusters of heterogenous services and custom
network configurations).
I’ve tried nix, local Caddy/Haproxy, Direnvs, Devenvs, dozens of task file runners, DAG runners etc.
Kubernetes is fine but it’s a domain in its own and you’ll end up troubleshooting plenty of things instead of doing work itself.
The simplest solution I would recommend is a task runner (Justfile/Taskfile) with containers (either built or with volumes attached - this prevents secrets leakage). Pay special attention to artifact leakage and clone volumes instead of mutating them.
I don’t recommend Docker Compose because it has low entry and a high ceiling and it takes long time to back out.
For simple clusters (5-8 containers) it’s working well. If you need to level up my personal recommendation would be:
- Go for pure programmatic experience (I’ve tested bunch of API clients and IMO it’s less time learning Go than troubleshooting/backfilling missing control flow features) - there’s also Magefile for simplified flows
- Full Kubernetes with templating language (avoid YAMLs like a plague)
- Cuelang if you want to go for full reliability (but it’s difficult to understand and documentation is one of the worst I ever read through).