Let’s Run Cloud-Native Computing through the Wash
Back in 2014, I asked why organizations should bother to implement cloud when cloudwashing would suffice. Cloud computing was still a mystery to many enterprises at the time, so maybe signing up for something that vendors called cloud (but really wasn’t) was the best move.
Putting the ‘washing’ suffix on some technology trend or another has been around longer than the cloud, of course.
Whenever some new whiz-bang shiny thing catches the eye of enterprise buyers, vendors are only too happy to slap the fancy new label on their older gear, in hopes of signing up a few unsuspecting customers.
Today, cloud-native computing is so damn shiny that no one can resist it. One would expect, therefore, that there would be plenty of cloud-native-washing to go around.
To be sure, many vendors are following the same ‘label first, implement later’ pattern that characterized earlier washings. But there’s more to the cloud-native-washing story than meets the eye.
Pinning Down Cloud-Native
Cloud-native computing is a new paradigm for computing that extends the familiar benefits of the cloud to all of IT. It’s more of an architectural philosophy than a particular implementation style, and furthermore, one cloud-native implementation might not look like another. (Download a free copy of our Cloud-Native Computing Poster for more detail.)
This lack of precision leads to plenty of washing opportunities. The most obvious example of cloud-native-washing is when a vendor uses the phrase ‘cloud-native’ to mean ‘cloud-based.’ Sorry, Charlie. Putting something in the cloud doesn’t mean it’s cloud-native, even if it’s SaaS.
Maybe if that new vendor widget runs on Kubernetes, then it’s automatically cloud-native? Indeed, at the center of the cloud-native movement is the open source container orchestration platform Kubernetes. Is Kubernetes sufficient?
People closely associate Kubernetes with cloud-native to be sure, but Kubernetes is neither necessary nor sufficient for true cloud-nativeness. Nevertheless, Kubernetes is so popular that it alone is a source of much of the cloud-native-washing out there.
Of course, the relationship between Kubernetes and cloud-native computing depends on how you define ‘cloud-native.’ If all you mean is ‘runs on Kubernetes,’ then the distinction between what is cloud-native and what isn’t is rather cut and dried.
The preponderance of opinion, however, is that there is much more to cloud-native than Kubernetes – and indeed, it should be possible to be cloud-native with no Kubernetes at all.
The Cloud-Native Checklist
The question of cloud-native-washing is unquestionably murky. If running in the cloud and/or on Kubernetes are neither necessary nor sufficient to qualify as cloud-native, then what precisely are the criteria?
We might even come up with a checklist of characteristics that are important to cloud-native computing – with the important caveat that it’s not absolutely necessary to implement them all, or implement them in the same way as the next organization over.
It’s important, therefore, not to be dogmatic about this checklist. As with most every technology decision, it’s best to use the right tools for the job, rather than what somebody says you’re ‘supposed’ to use.
The specifics of a cloud-native implementation will always depend on its business context – what problems the organization wants to solve, what constraints it must follow, what competitive pressures it faces, and so on.
That being said, it’s still useful to come up with a cloud-native checklist, as long as you mind those important caveats. Here, then, are seven important (but not all necessarily absolutely essential) characteristics of cloud-native computing.
1. The cloud basics – scalability, elasticity, and resilience. You can’t extend the best practices of the cloud without taking care of the basics. Note, however, that cloud-native brings a twist to each of these.
Scalability refers to both technical scalability as well as the scalability of the organization to meet the needs of the business. Cloud-native also ups the ante on elasticity, requiring far more rapid scale-up and scale-down than traditional cloud can offer. Resilience is also a bigger bet, as cloud-native takes the fail-fast, recover-faster mantra of cloud to the next level.
Combine these three basics and stir, and you’ll find that ephemerality is also an important cloud-native characteristic. Everything is subject to change, and many components of your application landscape may come and go with annoying frequency.
2. Configuration-driven immutable infrastructure – roll up the ‘cattle not pets’ principle of immutable infrastructure with the model-driven, declarative approach of configuration-driven deployments, and you have one of the most fundamental of cloud-native principles.
3. From DevOps to CI/CD to DevSecOps to GitOps – Best practices for building and deploying software continue to evolve, and cloud-native drives some of the most important advancements in such practices.
Cloud-native computing is of particular value to application development organizations with multiple teams working in parallel on inherently dynamic software, so it’s no wonder the practices for building such software must support this context.
Of particular importance is GitOps, which helps to converge the best practices of DevOps and cloud-native for dynamic operational environments (see my recent article on GitOps).
4. Hybrid IT/multicloud including edge computing – Cloud-native extends to all of IT, wherever it be – on-premises, in any public or private cloud, or even on the edge. Furthermore, the cloud-native approach to such heterogeneity is to support a comprehensive, coherent abstraction across all such environments.
Combine this comprehensive hybrid abstraction with the configuration-driven principle #2, and organizations should be able to configure policies and other behavior across the entire landscape via a central pane of glass.
5. Virtualization, containers, and serverless computing as appropriate, and so on – There should be nothing constraining cloud-native to containers. Which type of physical infrastructure virtualization is appropriate will depend upon many factors. Traditional virtualization may very well be a central part of the story – even on mainframes, for example.
Serverless computing is also shaping up to be essential to cloud-native computing. Note, however, there’s no reason to stop there. What’s the next innovation after serverless? Who knows? But rest assured, it’ll be part of the cloud-native approach.
6. Comprehensive endpoint abstraction – in addition to the broad-based hybrid IT abstraction that unifies diverse environments, cloud-native computing depends upon a comprehensive endpoint abstraction as well.
No longer can we identify endpoints with IP addresses, as those addresses are now ephemeral. Cloud-native zero-trust computing in particular relies on abstracting endpoints which might correspond to user devices, microservices, APIs, or other types of endpoints – where such a correspondence is always subject to change.
This endpoint abstraction is also essential to the behavior of service meshes, and leads to a complete rethink of how to handle integration in general. The abstraction is also an important enabler of cloud-native persistence, where stateless microservices and other components are able to interact with stateful abstracted endpoints without impacting their scalability or ephemerality.
7. Cloud-native observability – in the cloud-native world, we can know everything we need to about any component of our infrastructure by the telemetry it generates. Leveraging these massive data streams not only provides organizations with visibility into everything that’s happening in their cloud-native environments, it also gives their operators the ability to take responsibility for such environments, fixing problems early or preventing them entirely.
The Intellyx Take
If you’re following all seven of the principles above, then yes, you are likely cloud-native. But remember, which principles are important for you will depend upon your business and technology contexts, and the problems you are trying to solve.
This variability makes it difficult to separate ‘true’ cloud-native from cloud-native-washing to be sure. My recommendation: think of the bullet points above as trees, and do your best to understand the forest.
Cloud-native computing, remember, is a new paradigm for IT. Paradigm shifts are difficult, and they require a complete rethink of everything you’re doing. It’s not easy, and it takes time.
But take heart: we’re well on our way. Our decade-plus experience with cloud computing has been the perfect preparation for the cloud-native world we’re only now beginning to explore.
Copyright © Intellyx LLC. Intellyx publishes the Intellyx Cloud-Native Computing Poster and advises business leaders and technology vendors on their digital transformation strategies. Image credit: Glen Bowman, actionvance, and Jason Bloomberg.