Are You Cloud Native?

Introduction

 
Cloud-native is an approach to build applications using microservices, containers, Kubernetes, DevOps, CI/CD, and cloud (public, private, hybrid). With this great combination of great architecture, platform, culture, dev practice, and cloud-computing model your applications will be built for scale, continuous change, fault-tolerant, and manageable. Let’s explore and understand each of the key players in the cloud-native approach.
 
Cloud-Native
 

Microservices


Microservice is a small autonomous, tightly scoped, loosely coupled, strongly encapsulated, independently deployable, and independently scalable application component. Microservice has a key role to play in distributed system architecture. 
 
Cloud-Native
 
Microservices architecture offers a lot of benefits, but there is a cost involved. You may want to learn more about its advantages and disadvantages by following the link.
 

Containers

 
A container is a standard unit of software that packages up code and all its dependencies, so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries, and settings. Containers provide an abstraction at the app layer that packages code and dependencies together.
 
Cloud-Native
 

Kubernetes (K8s)

 
Kubernetes was born from Google’s over 15-year experience running production workloads. It is designed to grow from tens, thousands, or even millions of containers. Kubernetes is a container runtime agnostic. Kubernetes is an open-source container orchestration tool designed to automate deploying, scaling, and operating containerized applications. “Distributed Management and Orchestration “of containers is an integral part of making your application cloud-native, and Kubernetes does it all.
 

DevOps

 
DevOps is NOT a “Packaged Solution”. I.e. You cannot buy and install it.
 
Cloud-Native
 
DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.” – Donovan Brown, MSFT. DevOps is a “culture” (Agile is a mindset), where development, test, and operations work together in a collaborative manner to automate the delivery of quality software. DevOps culture develops a “production-first mindset”. I.e. applying DevOps ensures that your code is always ready to be deployed to production.
 
Cloud-Native
 
DevOps breaks the wall of confusion between teams and fosters better communication and collaboration throughout the application development lifecycle and results in better visibility and small frequent deployments together.
 
You can learn more about DevOps here.
 

CI/CD

 
Continuous Integration (CI) and Continuous Delivery (CD) enables and empowers any software delivery team in an organization to continuously deliver value to their end-users.
 
With CI/CD practices in place, development teams are more likely to commit code changes more frequently, which leads to better collaboration and software quality.
 

Continuous Integration (CI)

 
CI is the process through which the building and validation of developer code are automated to ensure quality check-ins. You can build a CI/CD pipeline in the DevOps tool of your choice, and for cloud-native it will not be complete unless you have an important step “push the image to container registry”. Here, is a visual of how CI phases look like in Azure DevOps (previously known as VSTS).
 
Cloud-Native
 
If you are interested in building your own CI/CD pipeline using Azure DevOps then you can read more by following the link.
 

Continuous Delivery (CD)

 
CD picks up the package built by CI, deploys those into multiple environments like Dev, QA, staging etc. then runs various tests such as integration tests, performance tests, load test etc. and if all works fine then on a button click it can be finally deployed into production.
 
Cloud-Native
 

Summary

 
While each (cloud, microservices, containers, Kubernetes, DevOps, CI/CD) of the above serves tremendous value in its own entity, but if all the above combined together then it will contribute towards a true cloud- native approach. Imagine using benefits of cloud, microservices, containers, Kubernetes, DevOps, CI/CD combined together, which unlocks the formula to the success of any organization that want to reap the multifold benefits to the health of software, delivering value to the customers, support demand at scale, and lowering the development and operational cost of the application. 

If you are not cloud-native yet, then you may be interested in knowing that by 2025, over 80% of enterprise apps will become cloud-based (source: forbes.com) or be in the process of transferring themselves over to cloud-native apps.