This article details about what are cloud native applications and related characteristics of cloud native applications. As all of us are aware, there is a lot of traction of microservices, loosely coupled application distribution and cloud native or cloud readiness of applications. This article explains the idea of cloud native applications and relate the concepts to traditional applications to highlight what are fundamental differences.
Traditionally, we have been working so far on bulky transactional applications which are platform / operating systems dependent. Most of the times, they are bound by the way they access the resources and the way these applications are consumed.
Well for a proper functionality, such applications rely a lot on physical hardware resources, operative system performance and reliability. When running out of resources, these applications would scale vertically, or in other words, you’d tend to add more resources to existing application servers.
Cloud Native Applications
Idea of cloud native applications is to focus on how applications are running and getting consumed, while not focusing on where it is running and reactively acting on augmenting the capacity when the resource buckets are full or there is high utilization than expected and vice a versa.
One of the important difference to note here is cloud native applications are scaled horizontally. If there is a demand rise, since you consume apps as service here, you just need to add a node to that service and that’s it. There is no need to augment capacity or play around with existing piece of application which is already running in production. That’s how you utilise the cloud consumption model.
Moreover, cloud consumption model enables an application to become self healable. With containerised micro serviced application and resilient designing, you get ultimate resiliency (at multiple levels) meaning if one instance of your application component goes bad, it gets easily deployed on other node maintaining the resiliency policy compliance for that very application.
In one of the previous articles, we learnt about microservices which are one of the important aspects of cloud native applications which would make a a cloud native application more agile and with introduction of continuous integration and continuous deployment, an application gets an edge to respond to a competitive market much quicker than traditionally it would.
It is important to note that micro services are important since they enable the idea of cloud native applications. Cloud Native Applications are built on micro services architecture more often than not
Another characteristic of a cloud native application is it doesn’t keep the session state in application, or they are stateless in nature. Being stateful would definitely limit the scalability of an application.
Cloud native applications are made to run separately from runtimes which lets developers use platform to deploy the applications and not focus on maintaining the lifecycle of underlying operating systems such as maintaining performance buffers or to patch an operating system.