Cloud Native is an approach to design, build and run applications using Continuous Integration, Container Engines and Cloud Orchestrators, to reduce the cost and risk and increase quality, scalability and speed of application.
1> Modularity- To create modular products. This helps in reducing delivery and maintanence costs. This is achieved by Micro services.
2> Observability- This helps in easy tracking of the applications and services. So, if something goes wrong with the account services module, only that will get impacted.
3> Deployability- Quick and easy to deploy in small chunks.
4> Testability- Easy to test an application and services.
5> Disposability- Easy to kill part of application, as it does not depend much on other modules or environments.
6> Replaceability- Can often create and move to other deployments.
1> Abstraction- Cloud native provides abstraction whereas, traditional approach is Operating System dependent.
2> Predictable- Time taken to deploy an application in Cloud Native is predictable. Whereas, in traditional approach is unpredictable.
3> Right Size Capacity- Easily scalable application depending on need, traditional approach is most of the time over sized.
4> Continuous Delivery- Cloud native enforces Continuous Delivery.
5> Automated Scaling in Cloud Native, whereas Manual scaling in Traditional approach.
6> Recovery- In case of any failures cloud native is rapidly recoverable than traditional.
There are certain design principles that should be followed to have a Cloud native Application, some of them are:
1> Micro-services- Develop application in chunks.
2> API Based design- So that it will be easy to deploy and test the services.
3> Safe Service Infrastructure- Infrastructure should be auto healing and auto load balancing.
4> Anti fragile- Robust exception handling in application.
Hope this post was able to give some basic idea of Cloud Native. Thanks for reading.