Twenty years ago it seemed certain that the underpinnings of future data center infrastructure would be Linux clusters running on x86 “commodity” hardware. We just didn’t know what to call it or where exactly it would run.
The big systems vendors like IBM, Sun, HP, and Cisco weren’t calling it “cloud”; instead, the vendors named it utility computing, autonomic computing, grid computing, on-demand, and n- other terms. At Comdex 2003, it was reported on ZDNet that “participants in a panel discussion at Comdex agree that utility computing is more like a river than a rock, but have little luck nailing down a real definition.” (ZDNet is a sister site of TechRepublic.)
Two decades later we know what to call it (“cloud”), and we know it’s built with containers and a whole lot of Linux. As detailed in the new Lightbend survey Cloud Native Adoption Trends 2020-2021, 75.2% of respondents already host the majority of their applications in some sort of cloud infrastructure, and roughly 60% run most of their new applications in Kubernetes/containers.
Now we’re faced with another major rethink that will affect tens of millions of developers operating at the application layer, where there are common threads on crucial concepts, but everyone is bringing different and predictions for the future.
SEE: Top 5 programming languages for systems admins to learn (free PDF) (TechRepublic)
Higher up the stack
As Google developer advocate Kelsey Hightower put it earlier this year, “There’s a ton of effort attempting to ‘modernize’ applications at the infrastructure layer, but without equal investment at the application layer, think frameworks and application servers, we’re only solving half the problem.”
“There’s a huge gap between the infrastructure and building a full application,” said Jonas Bonér, CTO and co-founder at Lightbend, in an interview. “It’s an exercise for the programmer to fill in this huge gap of what it actually means to provide SLAs to the business, all the things that are hard in distributed systems but needed for the application layer to make the most of Kubernetes and its system of tools.”
Lightbend’s cloud adoption report highlights some of these major decision points that remain murky for the application layer of the cloud-native stack.
“Building cloud-native applications means creating software that is designed with the advantages—and disadvantages—of the cloud in mind,” said Klint Finley, author of the Lightbend survey. “It means taking advantage of the fact that it’s possible to outsource entire categories of functionality—like databases and authentication—to public cloud services and planning for the fact that communication between those cloud components might be unreliable.”
The survey also suggests that developers think about cloud computing more in terms of specific technologies like Kubernetes and containers, while management thinks of cloud computing more as a new way to build applications. Management tends to prefer outsourcing as much maintenance as possible, while developers’ preference for configurability over automation reveals a desire not to lose too much control over the many layers of an application stack. As one respondent put it: “SaaS comes with ease of adoption and faster time to market, however many do not understand the cost of running them at scale.”
Disclosure: I work for AWS, but the views expressed herein are mine.