Though things like Docker & Kubernetes can really help above and beyond vanilla executable jars running on linux. e.g.
- Docker provides CPU, memory, network & IO limits so that a bad process can’t take down a box & processes use resources fairly
- kubernetes liveness checks automatically restart bad processes
- kubernetes readiness checks to automatically add/remove processes from load balancing in real time
- kubernetes can relocate containers to other machines if need if machines go bad or become overloaded and to better pack software onto hardware to maximise utilisation to save money on hardware
- kubernetes integration with secrets, environmental configuration and persistent volumes to simplify deployments
- kubernetes federation across data centres then helps you provide software with resilience if a data centre goes down