What is cloud-native?
Tags: cloudnative, microservices, devops, agile
Published: 2020-10-20 22:44:00

This post will talk about cloud-native - "what, why, how and when" cloud-native is relevant.

What is cloud-native application? The application that is built to take full advantage of the underlying cloud platform. 

* built in the cloud
* for the cloud
* maximizing the benefits of the cloud

Cloud-native computing foundation (CNCF) defines official definition of cloud-native as : 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.

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

**Benefits of cloud native applications:**

![Benefits of cloud-native applications](https://dev-to-uploads.s3.amazonaws.com/i/6qp4zll4jvbwe2pentkg.JPG)

* __Speed__ - the ability to innovate, experiment and reduce time to market to bring new products and services
* __Safety__ - the ability to move rapidly but also maintain stability, availability and durability
* __Scale__ - the ability to elastically respond to changes in demand (aka scale up / scale down - without manual intervention)

****

Over the years, software development industry has matured and it has evolved on all areas covering - development process, application architecture, packaging, deployment and application infrastructure. 

Following diagram shows evolution of software development process.

![evolution of software development process](https://dev-to-uploads.s3.amazonaws.com/i/x76gr87ldxvqtxyh45mm.JPG)

Cloud-native software development offers benefits for safety, speed and scale as mentioned in above section.

Now, that we know what and why of cloud-native, lets switch gears and understand how? 

**How to design and build cloud-native applications?**

The widely accepted methodology for constructing cloud-native application is [12-factor application](https://12factor.net/).

Following image highlights 12-factor applications methodology and beyond. 
![12-factor apps & Beyond](https://dev-to-uploads.s3.amazonaws.com/i/vle3nycvjaaam52ypj21.JPG)

Now that we understand, why what and how of cloud-native application, lets look at when?

**Application Use cases - When to consider cloud-native applications?**

* Strategic enterprise systems that needs to constantly evolve with business need 
* Apps that require shorter time to market
* Apps that require components to scale individually (and not as whole)
* Last but not least, team with expertise in cloud-native skillset

As a rule of thumb, Apply cost/ benefit analysis by considering cost of cloud-native development with business value of the application before jumping onto band-wagon of cloud-native application. 

**Conclusion**

Cloud-native applications are the foundation for the modern way of software development and acts as backbone for digital transformation led growth and innovation. 

Enjoy building cloud-native applications !! 

Note - Cloud Native Computing Foundation (CNCF - https://www.cncf.io/), is an influential open-source consortium of over 300 major corporations. It's responsible for driving the adoption of cloud-native computing across technology and cloud stacks.

*Disclaimer* - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.