As far I as I understand K8s allows us to implement relatively easily horizontal scaling, deployment rollback and rolling deployments.
However, the moment our application uses a relational database these benefits seem to vaporize:
- Relational databases do not scale horizontally.
- Having explicit schema implies no rollback in a general case.
- Rollback is hard If the DB schema changes are not backwards compatible
- Rolling deployments may mean having two versions of the code talk to one version of the schema - can be problematic in a general case.
- New changes must be compatible with the old DB schema.
Am I missing anything? If I am right and we cannot take advantage of horizontal scaling, deployment rollbacks and rolling deployments (in a general case), what other reasons are there to use K8s?
Your thoughts are very much appreciated and welcome.