In tech we like to throw the term “cloud native” around like it means something. Or, rather, that it means something specific that everyone agrees upon. Not so, as evidenced by a recent Twitter thread that Maria Naggaga, a lead principal product manager at Microsoft, sparked. She asked her followers — a pretty technical bunch — to summarize what cloud native means. Their answers suggest that the Cloud Native Computing Foundation might want to spend some of its membership dues to evangelize a standard definition.
Not that semantic accuracy seems to be getting in the way of plenty of cloud native IT buying.
In the cloud, but not of the cloud?
For many, cloud native is somewhat synonymous with Kubernetes and containers. The question is… why? As Hassy Veldstra called out, “Kubernetes is as cloud-native as Java was OS-native with its ‘write once run everywhere’ promise. Nothing ‘native’ about trying to abstract away the thing you claim to be ‘native’ to.”
SEE: Metaverse cheat sheet: Everything you need to know (free PDF) (TechRepublic)
Of course, the history of cloud native started with Bill Wilder in a book he wrote for O’Reilly titled Cloud Architecture Patterns. According to Wilder (summarized by Ken Finnigan), cloud native applications:
- Use cloud platform services
- Scale horizontally
- Scale automatically, using proactive and reactive actions
- Handle node and transient failures without degrading
- Feature non-blocking asynchronous communication in a loosely coupled architecture
Which isn’t really Kubernetes, even if Kubernetes can be used to build applications like this.
Microsoft’s Scott Hanselman pithily expressed cloud native this way: “Apps know the cloud exists.” That feels closer to the truth than Kubernetes does. But doesn’t that mean they’re not cloud native by definition?
SEE: Hiring kit: Back-end Developer (TechRepublic Premium)
Because, as others expressed, to truly be cloud native an application must “depend on cloud infrastructure,” as VMware expert and Microsoft developer Dave Curylo highlighted.
“This is a little different than applications that just can be hosted on cloud infrastructure,” he continued. “They are applications that were built specifically to run on cloud infrastructure.”
These are apps that are “designed to take advantage of horizontal scaling,” Michael Brown added. For those that call out Kubernetes as the definition of cloud native — and many respondents to Naggaga’s tweet did, just as many in the industry do — Achim Friedland’s point rings true: “There is no need for Kubernetes if the software [is truly] ‘cloud native.’”
Does it matter? Probably not. Every few years we get worked up over a term that is meant to mean some particular thing but vendors take it and render it meaningless by applying it to whatever they’re selling, however poor the fit. Today, every vendor wants to be cloud native because it’s somewhat synonymous with “modern.” And customers want to be cloud native, too, so they buy into seemingly magical solutions that they probably realize are too good to be true. In the meantime, the semantically serious among us will just have to grimace at just how cloud alien many of our “cloud native” technologies are.
Disclosure: I work for MongoDB but the views expressed herein are mine.