DEV Community

sumanbgl
sumanbgl

Posted on

Anatomy of a Cloud-Native Application.

Definition

Cloud-Native applications are scalable applications that are built for and execute on modern, dynamic environments like public, private, hybrid cloud.

Alt Text

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.

Alt Text

  • 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.
    Alt Text

  • 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

Alt Text

  • 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.
    Alt Text

  • 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.
    Alt Text

  • 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.

Alt Text

Conclusion

This article has introduced the different aspect of a cloud-native application.

Top comments (0)