Definition
Cloud-Native applications are scalable applications that are built for and execute on modern, dynamic environments like public, private, hybrid cloud.
Cloud-Native Explained
Cloud-Native applications are built using microservices, containers, orchestration and automation. They are designed for the cloud to take advantage of its elastic infrastructure for scaling up and down on-demand. They increase the speed, flexibility and innovation in the development cycle enabling faster delivery and new user experience.
Containers, service meshes, microservices, immutable infrastructure, CI/CD tooling, observability tools are the prominent technologies that enable adoption of cloud-native application development.
Cloud-native applications being loosely coupled systems offers the benefits of resiliency, manageability and observability. Together with robust automation, allows engineers to make high-impact high-quality changes frequently and predictably with minimal toil.
Anatomy of a Cloud-Native Application
Following are some key elements that are commonly found in cloud-native applications:
- Microservices: Small, independent, loosely coupled services. They promote agility in development lifecycle. Several instances of stateless microservices facilitate resilience and elastic scalability and low-risk system evolution.
Frameworks and Programming languages: Development teams are free to select tools that best the application functionality.
APIs: Well-defined interfaces based on REST, GraphQL or gRPC technologies provided by third party services and microservices promote faster development and collaboration between teams.
Containers: Microservices are frequently packaged and deployed as Docker images for portability and optimized resource consumption.
-
Orchestration: Containers are managed by orchestration tools like Kubernetes, Mesos, Docker Swarm for automated deployment, operation, scaling and resilience of application at scale. Orchestrators offer below functions:
- Configuration
- Provisioning
- Availability
- Scaling
- Resource allocation
- Load balancing
- Health monitoring
Continuous Integration/Continuous Delivery Tooling: Application code and required infrastructure expressed as "infrastructure as code" are checked into source control systems like Git, allowing rapid iteration through automated dev, test, and prod pipelines.
Monitoring: Distributed applications expose new faults and operations teams turn to central monitoring systems like Prometheus to provide a single view of the entire system.
Security: OAuth, OIDC, JWTs, identity providers, API gateways, and automatic container patching provide new mechanisms to cover attack surface areas.
Service Mesh: The goal of the mesh is to guarantee secure communications between each independent container application/microservice and be able to redirect traffic in the
event of failures.
Conclusion
This article has introduced the different aspect of a cloud-native application.
Top comments (0)