Ask a technologist to rattle off a handful of terms that best describe today’s revolution in modern computing, and “cloud native” may not make the cut. As a concept, it doesn’t generate the buzz that terms like DevOps, continuous delivery, microservices and containers do in water cooler discussions. It even gets confused at times with other terms, such as “cloud optimized” and “cloud compliant.”
But while it may not yet be a household term, cloud native is making its way into the technology discussion – and growing in influence. The term has its own industry group. Sectors as diverse as banking and consumer industries are making cloud-native architectures a building block of their business strategies. And in a recent report, Capgemini described cloud-native applications as “driving a transformative shift in digital business.”
So, what are cloud-native applications? What is a cloud-native approach? Why is the term so important?
This article will take a look at the concept itself. In future articles, we will examine cloud-native computing in more detail – how cloud-native technologies are offered by cloud providers, how these technologies can be automated and secured, and how traditional, non-cloud-native applications can be migrated into cloud-native services.
Responding to Change and Reducing Unpredictability
Basically, cloud-native could be described as the DNA coursing through the cloud computing delivery model. There have been reams written about the cloud as a medium that enables agility, cuts costs and offers near limitless resources. But the idea of the cloud being a place – either a public cloud, or a private cloud – is just part of the story. Cloud is a concept, and cloud native describes how you follow the model, as opposed to where you store or build technology resources.
To build cloud-native applications, organizations incorporate the blueprints of the buzzworthy terms mentioned above – DevOps, continuous delivery, microservices and containers.
DevOps is a cultural term: in a DevOps culture, software development stakeholders break down silos and align on the shared objectives of releasing software quickly and efficiently with required security standards. Continuous delivery is more of an engineering practice, committing source code through to production, according to predefined sets of rules. Microservices is an architectural approach to building an application as a set of small services. Containers package up applications and services in an operating-system-level virtualization image, offering new levels of efficiency and speed.
Put the components together, and you have a cloud-native approach. Establish a platform – a cloud, if you will – that departs from traditional enterprise application design, and enables a new, agile approach, and you have a cloud-native architecture.
There have been many definitions rolled out since cloud native entered the lexicon. One of the most strategic was delivered by Christian Posta, chief architect at Red Hat and author of the book Microservices for Java Developers.
In a recent InfoQ panel discussion, Posta said: “‘Cloud-native’ is an adjective that describes the applications, architectures, platforms/infrastructures and processes, that together make it economical to work in a way that allows us to improve our ability to quickly respond to change and reduce unpredictability. This includes things like services architectures, self-service infrastructure, automation, continuous integration/delivery pipelines, observability tools, freedom/responsibility to experiment, teams held to outcomes not output, etc.”
Posta raises a good point about unpredictability. One of the most important aspects of the microservices movement is the ability to cope with unpredictability. Microservices are designed with failure in mind – how, when you move a workload to the public cloud, you expect failures. Creating an architecture that breaks applications into small, loosely affiliated services gives the organization the ability to quickly fix – or just endure – frequent failures.
Other important aspects of cloud-native computing? It eliminates downtime by embracing automated scalability. Orchestration of containers provides elastic scaling and recovery if an app or infrastructure component fails. Abstracting away from underlying infrastructure dependencies lets IT specialists focus on higher-level software issues rather than constantly patching, configuring and maintaining operating systems.
A Foundation for Success
If it seems like cloud-native computing encompasses a lot of disciplines, that’s because it actually does. To bring together these many functions, the Linux Foundation formed an affiliate group, the Cloud Native Computing Foundation (CNCF) in late 2015. The CNCF’s 170+ membership community is as diverse as it is comprehensive.
Here is the CNCF vision of the cloud native landscape. It includes cloud providers – both public (the big three: AWS, Microsoft Azure, Google Cloud) and private (OpenStack). It also includes the inception and incubation of open source products across all major disciplines, such as:
- App definition and development (database and data analytics, streaming, SCM, app definition, CI/CD)
- Orchestration and management (scheduling and orchestration, coordination and service discovery, service management) — Kubernetes, CoreDNS, Linkerd, Envoy, gRPC
- Runtime (cloud-native storage, container runtime, cloud-native networks) — CNI, containerd, rkt, Rook
- Provisioning (host management/tooling, infrastructure automation, container registries, secure images, key management) — Notary, the Update Framework (TUF)
- Platforms (PaaS/container service, serverless/event-based)
- Observability and analysis (monitoring, logging, tracking) — Prometheus, Fluentd, OpenTracing, Jaeger
As for big names, AT&T, Box, Cisco, the Cloud Foundry Foundation, Docker, eBay, IBM, Intel, Mesosphere, Red Hat,VMware and are all throwing their weight behind the cloud native idea.
Even if these names didn’t jump aboard, the fact that AWS, Azure and Google are involved is critical, not only for the promotion of the cloud native concept, but for providing specific technologies that feed into it. The CNCF will be driving the development of new standards and new features for issues like container orchestration. The top public cloud providers will be at the table, watching, participating and incorporating cloud-native vision into their future offerings.
Cloud native, as a concept, is here to stay. Going forward, companies planning to implement cloud should make sure they’re thinking about the big picture – how to extend a vision for cloud beyond individual projects. Cloud native provides that big picture. As it becomes more of a household name, organizations will see how cloud native can create a roadmap for success.