To understand cloud native, one of the best places to start is with the Cloud Native Computing Foundation (CNCF).
CNCF’s charter calls for it to “make cloud native computing ubiquitous” and “drive adoption of this paradigm.”
The CNCF defines cloud native computing this way:
“Cloud native technologies empower organizations 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.”
What does this mean, exactly?
Let’s pull out a few key phrases and rephrase them to help deepen your understanding of what cloud native is.
Build and run scalable applications
The emphasis should be on the applications, not the infrastructure. There are certain infrastructure patterns that are common in cloud native environments 𑁋 like immutable infrastructure, for example 𑁋 but these exist in support of building and running scalable applications. Cloud native is about scaling applications more easily and more predictably.
Modern, dynamic environments such as public, private and hybrid clouds
This clarifies that it isn’t really about where the application is deployed as much as it is about environments that are dynamic and support automation (as indicated by “combined with robust automation”). Cloud native technologies and architectures are at home in public clouds, of course, but are also at home in other environments that support robust automation through APIs.
Enabling loosely coupled systems that are resilient, manageable and observable
It isn’t just about technology but also about architecture and approach. Being cloud native means that the architecture and technologies used enable greater resiliency, greater manageability and greater observability than would be possible otherwise.
Make high-impact changes frequently and predictably
The primary business benefit to adopting cloud native computing is enabling the delivery of impactful changes that drive business value. Again, the focus here is on the applications, not the infrastructure; cloud native technologies and architectures enable businesses to innovate quickly and deliver value to their users quickly and safely.
Cloud native technologies
Although cloud native computing encompasses more than just technology, there are technologies that are commonly associated with cloud native computing. Some of these are mentioned in the CNCF definition above: containers, service meshes and declarative APIs.
It’s important to note, though, that the CNCF definition says these technologies “exemplify” the cloud native computing approach but stops short of saying such technologies are required for something to be considered “cloud native.” Adopters of cloud native computing should avoid the trap of adopting specific technologies and instead focus on the attributes described in the CNCF definition above.
What is cloud native?
Putting all this together, a more expansive definition for cloud native might look like this:
Cloud native technologies are focused on enabling organizations to create and operate applications in a scalable, robust fashion in modern, API-driven environments. Examples of cloud native technologies include (but aren’t limited to) containers, service meshes and declarative APIs.
When combined with cloud-first approaches such as immutable infrastructure, extensive automation and microservice-oriented application development, these technologies enable the creation of systems that are resilient, manageable and observable. Further, these systems allow for high-impact changes frequently, predictably and safely while reducing human effort.