Drilling Down on Cloud-Native Software

By Kiran Bhageshpur, CTO at Qumulo.

  • 1 month ago Posted in

Way back at the dawn of the Computer Age, on a flight to Albuquerque to visit potential investors, Paul Allen realized he had a problem. He was on his way to show MITS executives the BASIC interpreter that he and Bill Gates had written for the Altair 8080 one of the first microcomputers. But they’d forgotten to include a routine to actually read the program (written entirely on paper tape, an early form of storage) into system memory. Allen, never one to shrink from a challenge, dashed off a bootstrap loader midflight. And the rest is history. 

Of the many lessons to take from this tale, one of the biggest is just how much software has changed over the last several decades. Allen’s problem was that, in those early days, software was fully “aggregated.” To write a computer program, you had to code out everything—not just how the application itself would behave, but detailed instructions for assembling all the resources needed to run it. Since then, computing has undergone a steady process of disaggregation, splitting off various components (like processor resources, networking, and storage), so they can operate independently as common cloud services. Developers can then simply connect those existing services to their applications instead of continually recreating from scratch. 

Fast forward to today, and we’re taking disaggregation to the next level, breaking up monolithic applications into even more granular microservices, each handling a specific function, each optimized to run in the cloud. This is the essence of “cloud-native” software, even if it’s not always described in those terms. But if you’re evaluating a cloud-native software investment, and you want to understand what it will mean for your business, disaggregation is a great place to start. 

Disaggregating the Cloud

From the get-go, cloud and disaggregation have been inextricably linked. Indeed, it’s the ability to treat computing infrastructure as independent common services that makes cloud so valuable. Consider a retail business using an eCommerce application. In the past, they would have had to build and maintain the full hardware infrastructure to run that software. Usually, that would mean overprovisioning to ensure they could handle peak traffic loads—even if most of the time, that infrastructure investment would be massively underutilized. 

Today, retailers can run their applications in the cloud and consume computing, network, storage, and other resources on demand. Instead of investing for peak capacity, they can use exactly the cloud resources they need as they need them, scaling services out and in with demand, and paying for only what they use. It’s why cloud has been among the fastest-growing innovations in the history of computing. 

Going Cloud-Native

Now, we’re entering the next phase of disaggregation with “cloud-native” software, or software written specifically for cloud environments, designed to take full advantage of cloud capabilities. In many ways, this shift is just the latest chapter in the ongoing disaggregation story, but it introduces big changes to how software is written and deployed. To be truly cloud-native, software must be:

Microservices-based: More than just splitting off infrastructure resources, cloud-native applications break down software into even more granular “microservices,” each running in standardized containers on a common architecture. As a result, each individual application function can now benefit from on-demand scalability and resiliency, using consistent and predictable cloud services. 

Portable: Because microservices run in standardized containers, cloud-native software can be moved from one platform to another much more easily. 

Designed to interact with cloud primitives: Cloud-native applications don’t have to include explicit instructions for managing the IT resources they need. Instead, they’re written to call on existing cloud services (for example, Amazon’s AWS-native S3 storage service). In addition to making software easier to write and deploy, this change has sparked a rapidly growing ecosystem of third-party cloud services. As more developers write cloud-native software, more third parties are incentivized to create new services their applications can use, feeding a virtuous circle. 

Manageable as code: When software is designed to run in cloud environments, drawing on common cloud resources that work in consistent ways, deployments become much easier. It's now possible to spin up a new application with a few lines of code and start using it in minutes—avoiding the weekslong installation and configuration process of traditional on-prem software. 

The Cloud-Native Advantage

On the surface, breaking up monolithic applications into dozens or hundreds of independent cloud services can seem more complicated. In practice though, cloud-native principles make software easier to write, deploy, and maintain. Among its many advantages, cloud-native software provides:

Elasticity: Now, you can scale all application components and resources—not just infrastructure—in and out with demand, and readily accommodate unexpected spikes in utilization. You can also respond to evolving resource requirements more easily. Many years into the making Avatar: The Way of Water, for example, James Cameron found that the cutting-edge special effects he wanted would require as much as 1.6 billion hours of virtual CPU cycles to render. The job was far too big for his effects company’s data center, and upgrading would have taken too long and carried exorbitant costs. But providing resources at that scale was no issue for the cloud. 

Improved resiliency: Along the same lines, when software is designed from the ground up to take advantage of common cloud availability and resiliency services, you can absorb and recover from problems much more effectively. 

Increased productivity: With cloud-native software, common processes (load-balancing, scaling, recovery) are handled automatically by cloud orchestration tools like Kubernetes—which means developers don’t have to code out explicit instructions for managing them. Instead, they can call on a large, growing number of pre-existing cloud services. In fact, cloud-native software typically requires a fraction of the coding of traditional applications, and can often can be written in weeks instead of months or years. 

Improved business agility: With cloud frameworks and services automating many aspects of development and deployment, businesses gain more flexibility and speed. It becomes much easier to continually update cloud-native software and continually bring new capabilities to users. For the same reason, you can now try out new software innovations more quickly, with far less risk. 

Individually, each of these cloud-native software benefits would be extremely valuable. Together, they’re nothing short of revolutionary. We can thank the ongoing disaggregation of computer applications for making them possible. 

Kiran Bhageshpur is CTO at Qumulo with experience that spans from pre-product start-ups to hyper growth companies, to multi-billion dollar mature tech businesses like EMC and Lucent Technologies.

By Jake Madders, Co-founder and Director of Hyve Managed Hosting.
By David Gammie, CTO, iomart.
By Filip Cerny, Product Marketing Manager at Progress.
By Max Alexander, co-founder at Ditto.
By Jon Lucas, co-founder and director of Hyve Managed Hosting.
By Brian Sibley, Solutions Architect, Espria.
By Lori MacVittie, F5 Distinguished Engineer.