Cloud Native Applications
What are cloud native applications?
The 100+ value-added services that are offered by public cloud providers that go beyond a simple virtual machine such as database service, and message bus service. Cloud native is a term used to generally describe container-based environments. Cloud-native technologies are used to develop applications built with services packaged in containers, deployed as microservices and managed on elastic infrastructure through agile DevOps processes and continuous delivery workflows. Unlike virtual machines, containers can scale-out and scale-in rapidly. Since the unit of scaling shifts to containers, infrastructure utilization is optimized.
Key attributes of cloud-native services
- Packaged as lightweight containers, a collection of independent services that are packaged as containers, which can scale-out and scale-in rapidly, so infrastructure utilization is optimized.
- Developed with best-of-breed languages and frameworks: A cloud-native service is usually developed using the language and framework best suited for the functionality.
- Designed as loosely coupled microservices: Loosely coupled services allow developers to treat each service independent of the other. With this decoupling, a developer can focus on the core functionality of each service to deliver fine-grained functionality, leading to efficient lifecycle management of the overall application, because each service is maintained independently.
- Built around APIs: Cloud-native services use lightweight APIs that are based on protocols such as representational state transfer (REST), Google’s open source remote procedure call (gRPC) or NATS.
- Architected with a clean separation of stateless and stateful: Services that are persistent and durable follow a different pattern that assures higher availability and robustness. Stateless services exist independent of stateful services.
- Isolated from server and operating system dependencies: Cloud-native applications don’t have an affinity for any particular operating system or machine type. The common exception is when a microservice needs certain capabilities, including solid-state drives (SSDs) and graphics processing units (GPUs), that may be exclusively offered by a specific set of machines.
- Deployed on self-service, elastic, cloud infrastructure, they may dynamically grow and shrink — adjusting themselves to the varying load.
- Managed through agile DevOps processes.
- Automated capabilities: Cloud-native services can be highly automated, playing well with the concept of infrastructure as code, and in fact, automation is often required to manage these large and complex applications.