Hey Kubernetes Korner,
I have some questions, when I think of Cloud Native I think we have the learning journey and we have the businesses and roles that require that shift to Cloud Native. Where are you?
These questions came to me as I was preparing for an upcoming webinar “Become a Cloud Native Expert”
https://www.kasten.io/kubernetes/resources/webinars/become-a-cloud-native-expert
In the webinar I want to try and speak to the two questions above, I also want to self admit that I am not an expert in anything let alone Cloud Native.
As this has been top of mind I wanted to write down some of my thinking and findings in a post here, hopefully you can then also attend the webinar and see where we get to.
Cloud Native & Cloud Computing
We see a lot where Cloud Computing can be disguised as Cloud Native when certain vendors or the community is talking, let’s be clear that running EC2 instances in AWS, ultimately Virtual Machines in the cloud is not cloud native!
Let’s discuss the two in a little more detail and work out how they can and will compliment each other.
Cloud computing -- often referred to simply as “the Cloud” -- is the on-demand delivery of infrastructure (hardware/servers), storage, databases and all kinds of application services via the internet.
Cloud Native is the architecture for assembling all of the above cloud-based components in a way that is optimized for the cloud environment.
Now you can hopefully see how migrating your VMware virtual machines to AWS EC2 instances is not going to be considered Cloud Native.
That is not to say that Cloud Virtual Machines cannot be Cloud Native, they will most likely make up some of your Cloud Native architecture and environment.
Identifying, provisioning and then deploying the just-right combination of services to best take advantage of this very new, rapidly evolving world amongst the clouds? It’s easy to get lost.
The summary though is optimising your architecture to take full advantage of the flexible infrastructure and managed services available from clouds like AWS, Azure, and Google.
Cloud Native: More Detail
Now that we have discussed a little the differences between the Cloud and Cloud Native, I want to discuss some of the main pillars behind Cloud Native. I am also going to share in the order in which I think things are more obtainable both from a learning and implementation point of view.
There are four pillars that can be attached to Cloud Native, these are:
I am not going into the detail on each of these topics but I should put a topic on each to give you that high level understanding.
DevOps = DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support. We can also think of DevOps at an even higher level as automation.
CI/CD = Continuous Integration: If you have been scratching the surface of DevOps, you’ll have most likely come across the terms Code > Build > Test. This process is the foundation of getting application code tested and ready to release to your audience.
Continuous Deployment/Delivery: Continuous Deployment/Delivery will enable you to update your application in an automated fashion. If the code passes its tests, use continuous deployment to push that code into the next environment be it, QA, staging, or production.
Microservices = Microservices architectures make applications easier to scale and faster to develop, enabling innovation and accelerating time-to-market for new features.
Containers = A way to package Apps, fits the microservices architecture nicely, Nothing new but was made important again with the rise of Docker and Kubernetes.
The benefits of implementing Cloud Native is going to give you the ability to quickly deliver your application but also features to your application which means your customers and end user benefit from Speed. It will give you the ability to dynamically scale your application to rise to demand. Both of these should provide you the ability to capitalise against the competition or increase margin.
First Path: Learning Cloud Native
You have probably all seen the CNCF landscape and thought, that is quite confusing!
I want to also be clear here that Cloud Native is not just Kubernetes, there are so many more aspects to Cloud Native. In fact Kubernetes is just part of the Cloud Native puzzle.
My personal learning journey here is about breaking down each of these sections and discovering some of these projects.
You can find the landscape here - https://landscape.cncf.io/
My advice is to filter with just the graduated and incubating projects which will take you from that overwhelming 1000+ projects down to 54! (I have a project I am working on that goes into this in more detail, I will share more in another post)
Second Path: How to bring this paradigm to the business?
The learning effort is always going to come first, at least I hope. But then comes the way in which you can navigate getting something into the realms of Cloud Native.
You can easily see how enterprises are adopting a Cloud Native approach within their environments, but generally this is a build new vs a remodel of existing monolith applications. Let me tell you there is no easy button to re-architecting a monolith to cloud native. Have you ever seen it? Many have done this according to case studies.
A resource to bridge that learning and actually getting the business behind a cloud native project would be Cloud Native Trail Map. https://github.com/cncf/trailmap
First of all we have to consider the problems that cloud native can solve? The answer can be No!
Cloud Native requires an investment in time and effort and that effort won’t pay off if neither speed , scale nor margin are your prime concern
I won’t go into more detail on these methodologies for starting with Cloud Native but the two I have been looking into is based on the Strangler Pattern and the Domain Driven Development. Maybe the post next week can get into more details around these two.
The biggest question I am going to get both likely here and on the webinar is, but we are not a software development house, we buy our software off the shelf. This is fine and a lot of people are in this situation. All we are doing is raising awareness here of Cloud Native so that when those off the shelf software vendors release their software as a container image then you can adopt or bake that into a Cloud Native plan.
Things are still very early but it never hurts to have an awareness before things start to happen.
I hope to see everyone for the webinar, and please ask questions it will help us all in the long run.