There’s plenty of life left in a great number of the applications that 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 lifecycle altogether. Yet every IT manager knows that some of the applications currently used by their organization will likely be running long after they have hung up their compiler.
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 December 8, 2015, article on The Stack, Red Hat’s Gordon Haff examines 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.
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 writes 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 must also 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. Source: Munish Kumar Gupta, via Slideshare.
Another feature that is quickly becoming standard on cloud-native apps is 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” will likely arrive soon from the Cloud Native Computing Foundation, an effort sponsored by the Linux Foundation and others. InfoWorld’s Sarder Yegulalp describes the foundation’s goals in a December 17, 2015, article.
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 explains in a July 30, 2015, article that the key to cloud-native is microservices – which he refers 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. Source: 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.