There’s plenty of life left in a great number of the applications companies have been relying on and profiting from for years. The future may belong to cloud-native apps that deliver the performance and efficiency benefits of microservices and containers, but in the here and now, organizations are looking for ways to combine the best of the old with the promise of the new.
With continuous development, you could argue that the software industry has eliminated the concept of product life cycle altogether. Yet, IT managers know that some of the applications currently used by their organization likely will be running long after they have hung up their compilers.
These legacy applications have proven their worth many times over. Some are one-offs that easily accommodate and are accommodated by new systems as they are implemented. Some are so good at what they do they epitomize, “If it ain’t broke, don’t fix it.” In the mass migration of apps and data to the cloud, it’s natural that such grand old apps would come under scrutiny as candidates for replacement by their cloud-native counterparts.
In a Dec. 8, 2015, article on The Stack, Red Hat’s Gordon Haff examined the results of a recent IDC survey of enterprise DevOps teams, which found that 83 percent anticipate having to support legacy applications and infrastructure through 2019.
It may seem counterintuitive, but the organizations that have gone furthest in adopting distributed, scale-out, microservices-based applications are twice as likely to delay converting existing apps to cloud architectures, he noted.
What Characteristics Make an Application Cloud-Native?
The simplest definition of a cloud-native application is one that is “decoupled from the physical infrastructure,” as TechTarget’s Sean M. Kerner wrote in a December 2015 article. In addition to being designed from the ground up to run in the cloud—whether private or public—the app also must scale on demand, both up and down, and across nodes.
Cloud-native apps are fault-tolerant, built to scale and designed to process requests asynchronously, using queues to decouple functionality, according to Munish Kumar Gupta via Slideshare.
Another feature that quickly is becoming standard on cloud-native apps is the use of Docker containers, which facilitates deployment on public Amazon Web Services (AWS) clouds and private OpenStack clouds, among other options. A more formal definition of “cloud native” likely will arrive soon from the Cloud Native Computing Foundation (CNCF), an effort sponsored by the Linux Foundation and others.
Containers are a key component of the CNCF’s proposed standard for applications and services that run natively on public and private clouds, and that move seamlessly between the two environments. Rather than writing specs on paper first and then implementing the code based on the specs, CNCF will create the code for its reference implementations. Google, a CNCF member, has donated its Kubernetes container-orchestration system and stands to benefit via the foundation’s support for private and hybrid clouds, a technology the company currently lacks.
The Continuing Evolution of Cloud-Native
It’s tempting to limit the definition of a cloud-native app to those two primary characteristics: decoupled from the infrastructure and scalable up, down and across nodes. If this approach strikes you as too simplistic, you’re not alone. InformationWeek’s Charles Babcock explained in a July 30, 2015, article that the key to cloud-native is microservices—which he referred to as “discrete application services”—running in their own containers and connected via a network to create custom applications. The result is an environment for “user-driven systems” comprised of standardized parts and governed by “standardized deployment and operational procedures.”
The combination of microservices and containers pushes down the app stack and simplifies deployment in computing environments of all types, according to Richard Harvey of Ngineered via SlideShare.
The payoff for companies is still far off, according to Babcock, but ultimately cloud-native apps will keep firms focused on their customers as the software landscape shifts around them. This translates into a competitive advantage via continuous deployment and delivery of “fresh” software.