Just one m6g.8xlarge can easily fit 10 heavy loaded services (read binaries) without a problem. Each of these services can be made by different teams.
Just one m6g.8xlarge can easily fit 10 heavy loaded services (read binaries) without a problem. Each of these services can be made by different teams.
How do you guys do it? Curious, because I only ever lived in the k8s/cloud native world.
I drop in some "standard" parts like load balancer, ingress controller, monitoring, storage automation (both for persistent volumes and database with CNPG), let's encrypt, DNS auto registering.
On top of that then I can easily deploy project/customer/workload specific things while caring less about implementation for common traits like "I need application's port 80 to show on public internet as app.foo.quux/API and I need an SQL database for it".
Usually there's also SSO and few "Dev happiness" elements like simple dashboard to access relevant applications if you stumble on the root domain.
It might sound like a lot of work, but it's mostly single time investment (especially when you haven't done some bits before) that is remarkably little interaction on later, and definitely takes less time than fiddling with terraform or others only to then have manual (or so custom only one person in the world knows them) she'll scripts on the server.
Blue/green with systemd is not a magic (speaking for uncontainerized Go, I doubt that Go in docker/podman will be a blocker).
I had a chance to see how such system works and it was great. 1 powerful machines, few services that process the data. Even it fails (which happened ~2 in 5 years) you just wait until it restarts.
Also, most of the work happened during the night, few hours of lag was okay 'cause before 6AM everything was ready to be served for the upcoming working hours.