Navigation
Recherche
|
How to build (real) cloud-native applications
lundi 12 mai 2025, 11:00 , par InfoWorld
Cloud-native applications are increasingly the default way to deploy in both public clouds and private clouds.
But what exactly is a cloud-native application and how do you build one? It’s important to start with first principles and define what cloud-native actually means. Like many technology terms, cloud-native is sometimes misunderstood, much like cloud computing itself was and continues to be in some respects. Simply hosting an application on a remote server doesn’t make it a cloud application. When it comes to cloud, the US National Institutes of Science and Technology established a formal definition of cloud computing in 2011 in Special Publication 800-145: Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. Cloud-native doesn’t simply mean something that was built for the cloud, though some might use the term to mean that. Cloud-native is a term that doesn’t have a NIST definition. But it does have a formal definition that was developed through an open source process under the Cloud Native Computing Foundation (CNCF). That definition is maintained at https://github.com/cncf/toc/blob/main/DEFINITION.md and states: Cloud-native technologies and architectures typically consist of some combination of containers, service meshes, multi-tenancy, microservices, immutable infrastructure, serverless, and declarative APIs. What are cloud-native applications? You can run just about anything you want in the cloud. Take literally any application, create a virtual machine, and you’ll find a cloud host that can run it. That’s not, however, what cloud-native applications are all about. Cloud-native applications are designed and built specifically to operate in cloud environments. It’s not about just “lifting and shifting” an existing application that runs on-premises and letting it run in the cloud. Unlike traditional monolithic applications that are often tightly coupled, cloud-native applications are modular in a way that monolithic applications are not. A cloud-native application is not an application stack, but a decoupled application architecture. Perhaps the most atomic level of a cloud-native application is the container. A container could be a Docker container, though really any type of container that matches the Open Container Interface (OCI) specifications works just as well. Often you’ll see the term microservices used to define cloud-native applications. Microservices are small, independent services that communicate over APIs—and they are typically deployed in containers. A microservices architecture allows for independent scaling in an elastic way that supports the way the cloud is supposed to work. While a container can run on all different types of host environments, the most common way that containers and microservices are deployed is inside of an orchestration platform. The most commonly deployed container orchestration platform today is the open source Kubernetes platform, which is supported on every major public cloud. Key characteristics of cloud-native applications CharacteristicDescriptionMicroservices architectureApplications broken into smaller, loosely coupled services that can be developed, deployed, and scaled independentlyContainerizationPackages microservices with dependencies, ensuring consistency across environments and efficient resource useOrchestration platformProvides container deployment platform with integrated scaling, availability, networking, and management featuresCI/CDAutomated pipelines for rapid code integration, testing, and deploymentDevops cultureCollaboration between dev and ops teams creates shared responsibility, faster cycles, and reliable releasesScalability and resilienceDynamically scales resources based on demand and handles failures gracefully for high availabilityDistributed system designServices operating across multiple servers enabling component-specific scaling, fault tolerance, and optimized resource utilization Frameworks, languages, and tools for building cloud-native applications Developing cloud-native applications involves a diverse set of technologies. Below are some of the most commonly used frameworks, languages, and tools. Programming languages Go: Developed by Google, Go is appreciated for its performance and efficiency, particularly in cloud services. Java: A versatile language with a rich ecosystem, often used for enterprise-level applications. JavaScript: Widely used for scripting and building applications as well as real-time services. Python: Known for its simplicity and readability, making it suitable for various applications, including web services and data processing. Cloud-native containerization and orchestration The core basic units of cloud-native application deployment are some form of containers and then a platform orchestration the running and management of those containers in the cloud. Key technologies include the following: Docker: The container technology that took application containers mainstream and often the default container technology used in cloud-native deployments. Podman: While Docker is the dominant container technology, Red Hat developed its own approach which is largely compatible with Docker. Kubernetes: The de facto standard for container orchestration in cloud-native environments. Kubernetes services are available on all major cloud platforms including Amazon Elastic Kubernetes Service (EKS), Microsoft Azure Kubernetes Service (AKS), and Google Kubernetes Engine (GKE). Cloud-native development frameworks Programming languages alone are often not enough for the development of larger enterprise applications. That’s where application development frameworks come into play. Popular cloud-native development frameworks include the following: Django: Commonly used web framework for Python that has increasingly been used for cloud-native application development in recent years. Micronaut: A full-stack framework for building cloud-native applications with Java. Quarkus: Another framework created specifically to enable Java developers to build cloud-native applications..NET Aspire: Microsoft‘s open-source framework for building cloud-native applications with.NET. Next.js: A React JavaScript framework that is particularly well-suited for building cloud-native web applications. Node.js: A lean and fast JavaScript runtime environment with an event-driven, non-blocking I/O model. Continuous integration and continuous deployment Continuous CI/CD pipelines are essential components of cloud-native development, enabling automated testing, building and deployment of applications. Modern CI/CD tools integrate closely with container technologies and cloud platforms, providing integrated automation across the entire application lifecycle. These tools often implement practices like automated testing, canary deployments and blue-green deployments that reduce risk and accelerate delivery. Among the commonly used tools are the following: Argo CD AWS CodePipeline Azure DevOps GitHub Actions GitLab Jenkins Observability and monitoring Cloud-native applications require observability technology to provide insights into the behavior of distributed systems. This includes monitoring, logging, and tracing capabilities that provide a comprehensive view of application performance and health across multiple services and infrastructure components. Tools that support the OpenTelemetry standard, along with platforms like Prometheus for metrics and Jaeger for distributed tracing, form the backbone of cloud-native observability. Best practices for cloud-native application development All of the major public cloud hyperscalers in recent years have developed best practices for cloud-native applications. The primary guidelines are often drafted under the name of the Well-Architected Framework. AWS Well-Architected Framework Google Cloud Well-Architected Framework Microsoft Azure Well-Architected Framework The foundational principles behind the Well-Architected Framework help to ensure that cloud-native applications are secure, reliable, and efficient. The core principles include the folllowing: Operational excellence: Monitor systems and improve processes. Security: Implement strong identity and access management, data protection, and incident response. Reliability: Design systems to recover from failures and meet demand. Performance efficiency: Use computing resources efficiently. Cost optimization: Manage costs to maximize the value delivered. Cloud-native applications represent a fundamental shift in how organizations design, build, and deploy software. Rather than simply moving existing applications to cloud infrastructure as a virtual machine, the cloud-native approach embraces the cloud’s unique capabilities through architectural decisions that prioritize flexibility, resilience, and scale. By embracing cloud-native principles, organizations position themselves to benefit from the full potential of cloud computing—not just as a hosting model, but as an approach to building applications that can evolve rapidly, operate reliably, and scale dynamically as usage requires.
https://www.infoworld.com/article/3982266/how-to-build-real-cloud-native-applications.html
Voir aussi |
56 sources (32 en français)
Date Actuelle
mar. 13 mai - 08:27 CEST
|