What deployment orchestration tool would one use in such a case? Is it just plain systemd/docker compose and a shell script?
I surely want zero downtime for my deployments. Do I then need multiple instances of the app running on the server and do something like blue/green? In that case I also need some load balancer config management during my deployment.
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.
Depends on what is your SLA. If it's an offline data processing and you can survive 1-2h outage (during machine restart) why not?
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.
How do you guys do it? Curious, because I only ever lived in the k8s/cloud native world.