PaaS and Cloud Native
If you have worked with Azure for a while**, you are likely very familiar with IaaS, PaaS and SaaS models. You are also familiar with the main benefit of PaaS over IaaS – the ability to have the cloud provider manage the underlying storage and compute infrastructure (so you don’t have to worry about things like patching, hardware failures and capacity management). The other important benefit of PaaS is the rich ecosystem of value-add services (such as database / identity / monitoring as a service), that can help reduce the time to market.
So if PaaS is so cool, why are Cloud Native technologies like Kubernetes and Prometheus all the rage these days? In fact, not just Kubernetes and Prometheus, there is a ground swell of related cloud native projects. Just visit the cloud native landscape to see for yourself – https://landscape.cncf.io/
Key benefits of Cloud Native architecture
Here are ten reasons why cloud native is getting so much attention:
- Application as a first-class construct – Rather than speaking in terms of VMs, storage, firewall rules etc. cloud native is about application specific constructs. Whether it is a Helm chart that defines the blueprint of your application, or a service mesh configuration that defines the network in application specific terms.
- Portability – Applications can run on any CNCF certified clouds and on-premises and edge devices. The API surface is exactly the same.
- Cost efficient – by densely packing the application components (containers) on the underlying cluster, the cost of running an application is significantly more efficient.
- Extensibility model – Standards based extensibility model allows you to tap into innovations offered by the cloud provider of your choice. For instance, using the service catalog and open service broker for Azure, you can package a Kubernetes application with a service like Cosmos DB.
- Language agnostic – cloud native can support a wide variety of languages and frameworks including .NET, Java, Node etc.
- Scale your ops teams – Because the underlying infrastructure is decoupled from the applications, there is greater consistency in the lower levels of your infrastructure. This allows your ops team to scale much more efficiently.
- Consistent Resource Model – In addition to greater consistency at the lower levels of infrastructure, applications developers are exposed to a consistent set of constructs for deploying their applications. For example: Pod, Service and Job. These constructs remain the same across cloud, on-premises and edge environments.
- Declarative approach – Kubernetes, Istio and other projects are based on a declarative, configuration-based model that support self-healing. This means that any deviation from the “desired state” is automatically “healed” by the underlying system. Declarative models reduce the need for imperative automation scripts that can be expensive to develop and maintain.
- Community momentum – As stated earlier, the community momentum behind CNCF is unprecedented. Kubernetes is the #1 open source project in terms of contributions. In addition to Kubernetes and Prometheus, there are close to 5000 projects that have collectively attracted over $4 billion of venture funding! In the latest survey, (August 2018), the use of cloud native technologies in production has gone up by 200% since Dec 2017.
- Ticket to DevOps 2.0 – Cloud native combines the well-recognized benefits of what is being termed as “DevOps 2.0” that combines hermetically sealed and immutable container images, microservices and continuous deployment.
Azure and CNCF
Fortunately, Microsoft has been a strong supporter of CNCF (it joined CNCF back in 2017 as a platinum member). Since then it has made significant investments in a CNCF compliant offering in the form of Azure Kubernetes Service (AKS). AKS combines the aforementioned benefits of cloud native computing with a fully managed offering – think of AKS as a PaaS that is also CNCF compliant.
Additionally, AKS addresses enterprise requirements like compliance standards, integration with capabilities like Azure AD, Key Vault, Azure Files etc. Finally, offerings like Azure Dev Spaces and Azure DevOps greatly enhance the CI / CD experience in working with cloud native applications. I will be remiss not to talk about VS Code extension for Kubernetes that also brings a useful tooling to the mix.
** if you are just getting started with Azure, I will submit that Cloud Native is the place to start.