For a medium-to-large app, K8s should offset a lot of the operational difficulties. Also you don't have to use K8s.
Cloud is turn-on/turn-off, whereas on-premises you pay up front investment.
Here are all of the hidden costs of on-prem that folks forget about when thinking about cloud being "expensive":
- hardware
- maintenance
- electricity
- air conditioning
- security
- on-call and incident response
Here are all of the hidden time-consumers of on-prem that folks forget about when thinking about cloud being "difficult":
- os patching and maintenance
- network maintenance
- driver patching
- library updating and maintenance
- BACKUPS
- redundancy
- disaster recovery
- availability