The relationship between Java DevOps, CI, CD and cloud-native computing
We recently published an interview in which Ken Owens, Cisco Systems’ chief technology officer of Cloud Platforms, provided a very concise and definition of cloud-native computing that pulled together the concepts of DevOps, containers, microservices and modern software development. We recently had the audio for that podcast transcribed, as we thought it was worthwhile having it reproduced in text for those who aren’t particularly in love with audio files. The following is the audio podcast, with the transcription of Owen’s definition of cloud-native computing below.
Cameron McKenzie: If you’ve been following TheServerSide’s Twitter feed lately you’d know that we’ve been doing a boatload of articles lately on cloud-native computing. Now in our Quixotic quest to nail down a good definition of exactly what cloud-native means, we’ve been given the names of a number of experts in the field, one of whom is Cisco’s Kenneth Owens.
Now it’s actually been incredibly difficult trying to nail down a precise definition of what cloud-native computing means. To the purest, it’s simply the deployment of a micro-service into a managed and orchestrated container. To others, you’re not doing cloud-native if you’re not Agile and doing DevOps. There really is no expert consensus on the term. Now having said that, Ken Owens gave us the best definition of cloud-native computing that we have heard to date. In his definition he pulls together the idea of cloud-native, he pulls together the idea of microservices, he pulls together Docker, and he then discusses how all of that rounds back upon itself to incorporate things like automation and DevOps. It’s like he’s provided a unified theory of cloud-native computing. And what’s even more amazing, he does it in less than four minutes. So here’s Ken’s response when we asked him to define the term cloud native, I think you’ll find it’s the best definition of cloud-native computing that’s around.
Ken Owens: I kind of have two ways to answer that question. Sorry for that, but as you know, I’m on the TOC (Technical Oversight Committee) for the CNCF (Cloud Native Computing Foundation) and the way that we as a community have defined cloud-native is container-packaged, dynamically orchestrated (and I always add ‘managed’, so it’s kind of managed-systems-architecture type of approach, which is where Kubernetes comes in), and microservices-architected. And that microservices-architected part is where all the magic happens, if you will.
So I like to then sort of further define microservices-architected. I think that gets to the roots of your question as to why there are two different opinions about how cloud-native is defined.
So when you think about microservices-architected, there’s a wide range of, I guess you could say opinions, about what that means. But I believe the patterns or the common sort of view that most everyone in the space has is that it is about completely automating your software, a focus on a small set of interfaces that you define as services, like a containerized service if you will, and then looking at how to consume and expose services out of your interfaces.
And so it’s really a mind-shift in how software development occurs because now the application developer kind of owns all of it. In some cases you can say that they’re still relying on the infrastructure team to provide them some infrastructure, but for the most part, they kind of own the life-cycle of the development, the deployment, and the ongoing integration and deployment aspects of that service for the rest of the life of that service. Some people call it DevOps, some people call it, you know, 12-Factor application architecture, but in effect, the developer kind of owns the life-cycle, end to end, of the services they create, whereas in the past there was an infrastructure team that they would pass some things to and there was the operations team that they would pass some aspects to. Now, all of those three teams are sort of being merged together into a cloud-native team.
Cameron McKenzie: So there you go, a concise definition of cloud-native computing that pulls together containers, microservices, the cloud, automation, and DevOps. It’s a pretty impressive feat.
You can follow Ken Owens on Twitter: @kenowens12
You can follow Cameron McKenzie too: @cameronmcnz
More articles from Cameron McKenzie:
- Why the Amazon S3 outage was a Fukushima moment for cloud computing
- Software ethics and why ‘Uber developer’ stains a professional resume
- It was more than user input error that caused the Amazon S3 outage
- Don’t let fear-mongering drive your adoption of Docker and microservices?
Stop adding web UI frameworks like JSR-371 to the Java EE spec