The term “cloud-native” is often invoked for applications that run in the cloud. In fact, only a few of these applications are actually “cloud-native”. And those that are typically involve stateless workflow indicative of most web-scale projects. Is this distinction important? What does “cloud-native” really mean? Why should I care? These are questions service providers should be asking, particularly in the age of 5G, as “cloud-native” is a new best-practice essential to the successful launch of a new wave of services.
Cloud-native adaptations are vital to service providers’ future
Applications supporting telecommunications services have always been particularly challenging to create and manage, given that the underlying services - whether voice calls, high definition video services, financial quotes, or anything in between - have depended unusually upon speed and resiliency to work properly for end-users. More than other industries, telecoms have pushed the envelope in the need to handle very high volumes with equally high responsiveness and reliability. With 5G and digital commerce the needs are even greater as the diversity in service types increases. IoT appliances, connected transport, eHealthcare, automated factories, augmented reality, virtual reality and more are coming to a network near you.
The rollout of these new services necessitates an evolution in the way that services are orchestrated and managed to account for this diversity of offerings, especially as these services increasingly rely on dynamic responsive behavior. In some cases, applications may be needed at the edge of the network for ultra-low latency, and in other cases centralization is preferable. Network elasticity means that applications will be more temporal as they are instantiated when needed and eliminated when not. Automated decisions will determine when the network will scale up or down most efficiently to support the current workload. The network of the future will be very different than the network of today. Increasingly operators with segmented and specialized services require a new architecture and new thinking. A cloud-native architecture is not a “nice-to have” or a feature but is an existential necessity for competitive service providers.
While “cloud-ready” applications can be deployed in the cloud and will work, only applications designed with cloud-native principles will scale well and work efficiently, whether the “cloud” is a private, public, or hybrid environment. Telecommunications standards organizations such as 3GPP and the Broadband Forum have recently aligned with the adoption of web-scale best-practices following a recognition of the need for agile, cost-effective and dynamic scaling to support new 5G services. This is further complicated by the imposing task operators face in deploying, managing and automating virtual applications from various vendors. The challenge modern software vendors have is to ensure these design decisions are applied pervasively in ways that optimize their solutions to work well with modern cloud infrastructure platforms.
Evolution of application architecture and best practices
In the 2000s, web-based applications emerged as an alternative to the monolithic and client-server applications that preceded them. Unlike monolithic processes which were modularized but highly coupled, or client-server processes which isolated database and application logic but remained highly coupled, web-based applications embraced distributed processing and reduced dependencies amongst instances of running code. This architecture and the service-oriented architecture that soon followed worked well for stateless processes but less well for stateful solutions, as complexity migrated from the application to the infrastructure and tools layer, where data needed replication or management in ways that harmed performance and ultimately impaired agility.
A modern cloud-native application begins with a microservices-based architecture, where each microservice provides a discrete function serving a specific task or business goal and is isolated with a well-defined interface to communicate with other sets of services.
A cloud-native application may comprise dozens or even hundreds of services, where each service may have thousands of instances. New services may be spun up, torn down, or changed very quickly and the expectation is that each service must be agile, composable, elastic, highly available and resilient. Service communication is both highly complex and a fundamental part of runtime behavior.
Best practices for managing highly dynamic solutions have evolved at a tremendous pace. An essential innovation involves containers (e.g., Docker) for resource isolation and dependency management, while an orchestration layer (e.g., Kubernetes) enables management of services in a resource pool abstracted from the underlying hardware.
Gluing all of this together involves a service mesh (e.g., Istio), which facilitates service-to-service communication decoupled from application code in a highly dynamic cloud environment. With all of these components a cloud-native application can scale rapidly and effectively under load and ensure high availability despite the uncertainty of specific nodes in a cloud environment.
Open source contributions have made much of this possible, as the Cloud Native Computing Foundation (CNCF) has advanced such projects as Kubernetes, Prometheus, and Envoy among others, for use in a modern cloud environment.
Yet, stateful microservices are particularly challenging, as state must be available to every processing node for accuracy and responsiveness. Hence, high performance writes are committed to each node and fully recoverable. Traffic routing should account for circuit breaking, where retries should be avoided, and latency-aware load balancing employed for optimal path finding.
With cloud, what can we achieve?
At the heart of 5G networks are cloud-based functions leveraging much higher throughput and lower latency performance to revolutionize application development and deliver innovative new services.
The Internet of Things will comprise of 125 billion linked devices by 2030, up from 11 billion last year, according to analysts at DBS Group Research. Low-power, low-bandwidth appliances addressed today mostly through a patchwork of proprietary connectivity technologies like LoRa and SigFox will be transformed with 5G as a unifying standard, and cloud-native solutions will provide greater automation and intelligence across a burgeoning network of connected devices.
In transport and logistics, autonomous vehicles will revolutionize both commuter traffic and the shipping industry.
Health care will increasingly involve better response times and more accurate diagnoses, with rapid advances in data transmission, robotics, and Artificial Intelligence (AI).
Offices and factories will be revolutionized with advances in automation through AI, and machine learning, while Augmented Reality (A/R) will become prevalent in diagnostics and training as well as a valuable overlay as an entertainment service.
Where does all this take us? In essence, low latency services, pervasive AI and automation change what it means to be a service provider in the modern world. Cloud-native solutions not only make this possible; they are essential to achieving growth on this scale.
Applications must scale elastically and support enormous volumes with great efficiency to make these services a reality. Without cloud-native solutions we remain constrained by an inability to scale rapidly with agility and accuracy. Stateful information will be locked away in one part of the network when we need it in another, free capacity will exist but we can’t use it fast enough, parts of the network will be overloaded but we can’t provide the right help to alleviate the workload. The network will have outages and these outages will impair performance. All of these conditions and more are typical and can be managed with the right cloud-native design. In fact, we need to design for outages, delays, and errors, as well as uncertainty in our use of capacity and resource management. Management of these uncertainties is at the heart of good cloud-native design.
As services become more complex, and the ways in which we use them more unpredictable, we rely more on automation, elasticity, and more graceful recovery from failures. This shift in thinking is necessary to embrace the next wave of services. The future is cloudy, and we had better make it our home.