Werner Vogels, chief technology officer of Amazon.com, coined the term “undifferentiated heavy lifting” several years ago to describe all the hard IT work that companies do that doesn’t add value to the mission of the company. Solutions like Amazon Web Services (AWS) and Google Cloud Platform (GCP) aim to eliminate traditional IT tasks like buying and setting up servers, connecting them to the internet, and managing the inevitable hardware failures and upgrades. This has worked out fantastically well for many companies – from startups to enterprises – who prefer to focus on solving unique business problems rather than undifferentiated IT problems.
Vogels suggests that businesses should “stop spending money on undifferentiated heavy lifting” and instead “acquire resources on demand, pay for what you use, leverage each other’s competencies, turn fixed costs into variable.” These ideas have been revolutionary for many businesses who can leverage cloud services. However, the benefits have been mainly limited to infrastructure teams (because they didn’t need to spend time managing hardware) and project managers (who could more easily budget for resources as needed). For most software developers, the benefits were limited. It takes just as much effort to build, deploy and maintain an application on servers at corporate headquarters as it does to on servers at AWS or GCP.
Recently, we’ve started seeing new services roll out that aim to take things to the next level for developers. In a recent interview, Eric Brewer, VP of infrastructure at Google, describes is as the “new cloud” and points out that the language is changing. Instead of talking about managing servers, we’re talking about managing services. Tools like Kubernetes are abstracting a lot of the legacy concerns so that development teams can focus on the application layer and not the infrastructure layer. The types of legacy concerns that are going away include: How big should my servers be and how many do I need? Which OS should I run? What security patches do I need to install?
Services like GKE, Google’s managed Kubernetes offering, is heading in this direction. It handles the OS and security patches so development teams can just deploy the applications and services that deliver business value. GKE handles much of the undifferentiated heavy lifting. While it’s true that the choice of server side and number of servers is still up to the development team, it’s easy to imagine a time when GKE will figure out the right amount of compute resources as well.
According to Brewer, moving to the cloud can be a 10 year event for many enterprises. Some might start with an on-premise cloud, then move to a hybrid cloud (split between on-premise and the public cloud), and then perhaps move entirely to the public cloud. As the public cloud eliminates more and more undifferentiated heavy lifting, it’s easy to see why this is compelling for development teams.
In the next 10 years, we could see a lot of exciting features to enhance developer productivity. Brewer hints that their aim is to “reduce the toil for developers”. For example, GKE could scan for security vulnerabilities, help with testing, and even us AI to suggest ways for the developer to optimize the application.
While discussing the advantages of GKE compared to an on-premise Kubernetes cluster, a colleague described it as a “luxury” not to have to maintain a cluster and instead skip right to the benefits. In the next few years, it’s easy to see cloud computing solutions for developers evolve from a luxury to a necessity. Not only will spending time and attention on the undifferentiated heavy lifting of scaling servers, choosing operating systems, and applying security patches seem ridiculous and inefficient, but the added features provided by large scale AIs – like those being developed at Google, Amazon and Microsoft – will be so compelling that startups and large enterprises won’t want to do without them.