Over the last couple of years the Cloud native bandwagon has been gaining traction. Public cloud providers are becoming a key cornerstone in organisations strategy to disrupt, innovate and surface products and services to end consumers in ways they could never think of during the days of static infrastructure in traditional data centres.
The above Google trend indicates a growing interest towards the concept Cloud native. However, what does it mean to really be Cloud native?
The age of disruption
The IT industry is constantly evolving. First there was the PC revolution of the 70s and 80s. Then there was the internet revolution of the 2000’s and more recently the mobile phone revolution. One constant theme in all of this is those organisations that were quick to update the way they worked with technology and delivered software and services were always a step ahead of the crowd.
This is no different to the era of Cloud computing. However, one of the biggest leaps organisations must think about is how they consume and utilise the power of these services. We are currently in the midst of of an age of digital disruption where unicorns/startups are pushing enterprise companies of their pedestals. And one common theme amongst these startups is their Cloud native approach!
Cloud native thinking
The CNCF have a nice broad definition of the term “Cloud Native”
Cloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
When we look to organisations such as Netflix, Uber or even more recent startups such as Air bnb there are some key properties of Cloud native thinking that they were quick to exploit. These include:
- The use of Dynamic infrastructure and viewing infrastructure as immutable (Pets vs Cattle)
- Breaking down the traditional monolith into microservices to independently deploy and scale services (Scale cube)
- Applying principles from 12 factor app design (https://12factorapp)
- All of the above underpinned by organisations who adopt DevOps practices such as CI/CD, automation, IaC, automated testing, observability
Therefore before jumping on the bandwagon of Cloud native organisations should ask themselves are their IT teams setup to benefit from operating in this manner?
The key to success is both a shift in thinking in both how the organisation approach Cloud native projects and how IT teams structure themselves in a way that enables adoption of these modern practices.
The shift to Cloud Native infrastructure
A key foundation for any Cloud Native application is the infrastructure it runs on. But what does the term Cloud Native infrastructure mean?
Infrastructure as Code has enabled teams to declaratively define the infrastructure of their environments using tools such as Terraform, Puppet and Chef. But the reality is these tools are run by an operator to provision either through a CLI or as part of an infrastructure pipeline using CI/CD tool such as Jenkins, Azure DevOps or even Github actions.
Cloud native infrastructure extends the notion of IaC by doing the following.
- Constantly monitor the state of the infrastructure (Desired state)
- Query a Cloud control plane to work out the current state
- Reconcile the differences to ensure the desired state (Reconciler pattern) by dynamically mutating the infrastructure
We find this pattern in infrastructure management software such as Terraform. Kubernetes additionally maintains this pattern when it maintains the desired state of a cluster.
The road ahead
In my Blog i will be exploring the Cloud native world from many angles. From addressing topics on Kubernetes, serverless and how organisations should modernise legacy applications to Cloud native apps. In addition I will be also talking about other Cloud topics such as DevOps/SecOps, identity and security, as well as important topics in enterprises like governance and security.
Join me on my journey into a Cloud native world!