Table of Contents
The Cloud-Native Computing Foundation (CNCF) defines cloud native: “Cloud-native technologies empower organisations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.”
A cloud native application would radically differ from a traditional or in-tier or monolithic application. A typical cloud native application is decomposed into isolated microservices. Each service is self-contained and encapsulates its own code, data, and dependencies. A service is deployed in a software container and managed by a container orchestrator. It owns its own datastore determined by the type of data service required rather than a single uniform relational database.
Moreover, cloud native applications are designed to be developed and managed within a cloud environment leveraging an automated Continuous Integration (CI) and deployment toolchain.
Cloud Native Principles
Five key principles drive the design of cloud native software: