Cloud-Native Applications
Tags: cloud, azure, node, serverless
Published: 2023-02-10 05:00:45


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3thqxdj5cxe84gt3oih1.png)


#### What are Cloud-Native Applications?
Cloud-native app development is a way to speed up how you build new applications, optimize existing ones, and connect them all. Its goal is to deliver apps users want at the pace a business needs.

## Importance of Cloud-Native Applications:
Empower organizations to build and run scalable applications 
Dynamic environments – Public, private and hybrid clouds 
Containers 
Services meshes 
Microservices 
Immutable infrastructure  
Declarative APIs 


## Why Cloud Native?
Some companies who implemented cloud native systems that consist of many independent services – Speed and Agility

## Think about the speed, and agility achieved

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qx3n88ddwmcxjh8t6r5u.png)

## Example
Netflix: has 600+ services in production. Deploys 100 times per day.
WeChat: Has 3,000+ services in production. Deploys 1,000 times a day.
Uber: Has 1,000+ services in production. Deploys several thousand times each week.

## The Pillars of Cloud Native

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/82jbyphcuf4bfwpw83sl.png)

1. Modern Design 
2. Microservices 
3. Containers  
4. Backing services
5. Automation
 

## Modern Design

- The Twelve-Factor Application
- Codebase 
- Dependencies (Container)
- Configurations 
- Backing Services 
- Build, Release, Run 
- Processes 
- Port Binding 
- Concurrency 
- Disposability 
- Dev/Prod Parity 
- Logging 
- Admin Processes
 

## 

- Microservices
- Provides agility 
- Each microservice has an autonomous lifecycle 
- Evolve independently  
- Deploy frequently  
- Less risk of disrupting the entire system 
- Scale independently 
- Fine-grained scaling – Scale-out services as per need of processing power 
- Reduce overall costs

## Containers (Dependencies)

- The code, its dependencies, and runtime are packaged into a binary called a container image 
- Deploy the container in any environment that hosts the Docker runtime engine 
- provide portability and guarantee consistency across environments 
- eliminate the expense of pre-configuring each environment
 

## Backing services (Statelessness principle)

- “Should be exposed via an addressable URL. Doing so decouples the resource from the application, enabling it to be interchangeable”
- ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rujtai3weqp1r831x9yp.png)

## 
[Automation (build, release and run)](https://hypeteq.com/cloud-native-applications/)
It is hard to get right. If there are locks and threads waiting on each other, there is a potential performance problem in your code, along with the possibility of deadlocks. If possible, try to avoid this altogether.

## Conclusion
Infrastructure as code or IaC is idempotent – run the same script over and over  
automate platform provisioning and application deployment 
infrastructure and deployments are automated, consistent, and repeatable.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vzgffitzmm96hoo5i1j2.png)