What are cloud native services?
A cloud native service is a service is a development approach to build and run workloads in the cloud and take full advantage of the cloud’s capabilities. Cloud native is a term generally used to describe containers, microservices, and serverless functions. Unlike virtual machines, these environments can scale out and scale in rapidly. And since the unit of horizontal scaling shifts to those environments, you can optimize infrastructure utilization.
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. 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.
Suggested Reading and Related Topics
- Autoscaling: Learn about how you can automatically grow or shrink the number of compute resources that are allocated to your application.
- Containers: Dive into containers, what they are, and their benefits.
- Horizontal scaling and vertical scaling: Learn about the difference between scale out and scale up.
- Microservices: Read more about microservices and microservices architectures.