Hardware is unreliable, software is complex. Hardware components fail, applications need to be restarted. Both situations require manual intervention, the process is time-consuming and cost-intensive. When using a containerized infrastructure like via Kubernetes, many processes can be automated. If, for example, hardware is failing, the containers affected by the failure are restarted automatically on hardware not affected.
Containerization also provides the possibility of horizontal scaling: is the load to high on one application, it is instantiated several times and the load is distributed on all of the applications instances. If the load decreases, the instances not needed any longer will be stopped. This can be automated via metrics, provided by the containerized application via its status. The trend here is automation, one of the fundamental pillars of site reliability engineering.
Cloud native criteria
For the application, running in such an environment has some implications, both technical and functional in nature. On the one hand, for optimal use of automation, a tailored approach to the environment is necessary, for example, using the provided metrics. On the other hand, the application should be capable of being instantiated multiple times. For web applications with login functionality over sessions, this means that the state of the session cannot be held in the application. An application that meets these criteria is considered cloud-native.