Getty Images/iStockphoto
Decipher the true meaning of cloud native
The term 'cloud native' is a popular buzzword among IT pros, but what does it mean? Discover the meaning of cloud native, and learn why this concept is so difficult to define.
The definition of cloud native has become more confusing as organizations and IT professionals define the term in different ways. It's used in so many ways and contexts that the actual definition seems quite vague -- even by the notoriously low standards of tech buzzwords.
The phrase cloud native entered the IT vernacular in 2015 with the founding of the Cloud Native Computing Foundation. CNCF, a subfoundation of The Linux Foundation, declared at the time that its goal was "to advance the state-of-the-art for building cloud native applications and services." However, the CNCF launch announcement didn't say much about what cloud native meant. It did mention open source software, containers, microservices, APIs and orchestration tools. Thus, people began to associate these technologies with the meaning of cloud native.
There is still little clarification about how these technologies produce a cloud-native application. To get closer to cloud native's true meaning, let's explore the ways different organizations use the term, along with some perspective on when it is and is not a useful descriptor.
What is the definition of cloud native?
The most oft-cited definition comes from CNCF: "It is characterized by loosely coupled systems that interoperate in a manner that is secure, resilient, manageable, sustainable and observable."
This definition uses concepts most people consider central to the idea of cloud native. But it's still a bit ambiguous. For instance, what does "loosely coupled" mean? Does any application that uses distributed architecture -- such as the service-oriented architecture (SOA) pattern that was popular decades ago -- count as loosely coupled? Most people might say no, since designs like SOA predate the cloud-native era.
Likewise, plenty of developers designed legacy apps to be "secure, resilient and manageable." These are qualities developers strive for when creating virtually any app. Again, few people would consider apps created decades ago to be cloud native, even if they have these characteristics.
Many other organizations have followed CNCF's lead in their own attempts to define cloud native. Microsoft's explanation is a good example of how automation, resiliency, containers and microservices converge to enable cloud native. Other efforts to define cloud native borrow partly from the CNCF definition but bring DevOps into the mix. CNCF only alludes to DevOps concepts, like automation. From this point of view, it's DevOps guidelines that determine the development and delivery of a cloud-native app. These apps also use containers and microservices. However, most attempts to define cloud native don't say this explicitly.
Is cloud native a synonym for cloud?
Perhaps unsurprisingly, there are instances where people use cloud native to refer to anything that runs in the cloud.
The CNCF definition neglects to justify why "cloud" is part of "cloud native." This creates ambiguity because many technologies CNCF associates with cloud native, like containers, are not unique to cloud computing. You can run containers or use microservices on premises. You can implement observability in any app, not just a cloud-based one. The cloud, it appears, isn't an essential part of cloud native.
In that sense, cloud native is reminiscent of the term free software. Coined by Richard Stallman in the 1980s, this refers to software with freely available source code. The phrase caused generations of laymen to conflate free software with freeware, a free software whose source code is not available to users. Similarly, cloud native can confuse people into thinking you have to use the cloud if you want to build a cloud-native application.
A search for cloud native in AWS Marketplace shows dozens of third-party apps and services that claim to be cloud native. However, many don't cater uniquely to applications that involve automation, containers, microservices or other cloud native-related technologies.
What does cloud native not mean?
In some senses, it might make sense to define cloud native by focusing on what cloud-native apps lack rather than what they have. Admittedly, an attempt to define what cloud native is not still leaves a lot of room for ambiguity and gray areas between what counts as cloud native and what doesn't. But it's useful to provide some sense of what a non-cloud-native app looks and feels like and, by extension, how a true cloud-native app should behave from the perspective of both developers and users.
Most people agree that apps that use monolithic architectures make it a challenge to run the apps efficiently in containers. Also, apps designed to run as a single instance might also lack built-in resilience or scalability. They can be difficult to automate because they aren't compatible with vendor-agnostic deployment technologies, like containers.
So, what does cloud native actually mean?
If the various definitions and uses of cloud native are any indication, the term ultimately means whatever people want it to mean.
At a high level, certain technologies, like containers and microservices, form an important part of what many consider to be cloud native. Yet, there is no specific guidance from any organization on how to use these technologies for an app to meet the requirements of the cloud native definition.
Containers deploy many apps, but it is too simplistic to say that any containerized app counts as cloud native. Likewise, lots of apps rely heavily on automation, and a competent developer designs a production app to be resilient. However, that doesn't make every app with these features cloud native.
Other popular tech buzzwords could receive similar criticisms. For example, there's no consensus on what, exactly, DevOps means. Though there may be some common themes, there is no single formula or tool set that defines what DevOps is.
Perhaps we shouldn't be too harsh on people who vigorously embrace the cloud-native label. Yes, it's vague. Yes, marketers may misuse the cloud native label when they ought to just say cloud. But there is value in the principles of efficiency and resiliency mentioned in most of the definitions. Think of it as a useful guideline for designing and deploying apps effectively. Just don't take the term too literally.
Chris Tozzi is a freelance writer, research adviser, and professor of IT and society who has previously worked as a journalist and Linux systems administrator.