What exactly is "serverless"? Like many popular technology terms, the exact definition of serverless is increasingly fluid. Also like many popular technology terms, the fact that the term means different things to different people doesn't sit well in some quarters.
I've taken my own stab at defining serverless here on El Reg. This definition has been praised by some, criticized by others. Those critiquing the definition fall into four broad camps.
There are those who can't get past the name. "Serverless" just sounds stupid, and it provokes an almost instinctual response; one which will be familiar to anyone who reads the comments section on any news article mentioning the words "dark matter". There's the group who find it easier to yell at me than the vendors and developers behind the serverless movement.
The third and fourth groups of critiques largely boil down to "your definition of serverless is too narrow" and "your definition of serverless is too broad".
The mundanity of static emissions from the peanut gallery does not, however, invalidate the arguments presented. The number of concepts and services that are being lumped under the term "serverless" has rendered the original meanings of the term somewhat irrelevant.
Kelsey Hightower, a staff developer advocate at Google caught our eye for calling out this exact issue. His critique – which can be summed up as serverless seems to be becoming the catch-all term for all managed services – represents a fairly large group of complaints.
The larger Twitter conversation surrounding the tweet in question is a bit of fun back-and-forth about workload and systems management, orchestration and nomenclature. Throw in a dash of reinventing the wheel, the rapidity of obsolescence, and bandwagon-jumping. In short: a typical conference pub conversation.
Serverless may well become the dominant way to do infrastructure. If it does, someone will find flaws with it, a new movement will be born, and we'll dance the dance once more.
In the meantime, as we wait for whatever comes after serverless, the technology behind serverless will be commoditised. Once it is commoditised we'll see it offered by lots of different vendors, both in the public cloud and on-premises. Each will offer different price/performance trade-offs.
And until then, avoiding the tendency for "one size fits all" extremist thinking – the idea that one and only one approach to IT must inevitably crush all others – is probably helpful. Again, a Hightower tweet is useful in this discussion.
Hightower says: "Screwdrivers are going to make hammers obsolete. Silly right? That's what most tech discussions turn into." This is a useful concept to bear in mind, especially because the concepts underpinning serverless encourage a winner-take-all view.
Miring discussions about serverless in nomenclature and semantics is unhelpful. The salient topic of discussion regarding serverless is that it represents a once-in-a-generation redefinition of how and why we actually use computers. As I see it, the last real redefinition was the microcomputer era.
When micros first appeared, they were revolutionary precisely because they allowed individuals to be suddenly more productive. You could have your own PC, run your own software and crunch your own numbers. We might not think much of the ability to fire up a spreadsheet whenever we want today, but it was absolutely revolutionary back then.
Every single "technological revolution" since the introduction of the microcomputer has been iterative, right up until the development of Software as a Service (SaaS). SaaS essentially replayed microcomputer revolution. Once more, end users could be freed of the tyranny of caring about infrastructure and just get on with the business of using computers. No more priestly guardians of centralised IT. You could do what you want, when you wanted, as long as you had the money.
But SaaS wasn’t new. It didn't change how we think about computers, or how we work. It was the exact same revolution we'd already had, all over again.
What this means for development in practical terms
Serverless is different. Serverless doesn’t concern itself with how the end user uses an application; it is a revolution in how the developer builds an application. Serverless is the colour-by-numbers version of development.
At the core of it, serverless means that those building applications no longer have to care about how their applications do what they do, they just have to tell the applications what to do. That’s revolutionary. And it opens up really complex application development to people who never could have done this before.
One great example of the power of serverless is Bulk Data Computational Analysis (BDCA). I can take a windows admin who can barely write batch files – they don't even have to know how to use PowerShell – and inside of a day, I could have them writing voice recognition apps. Our hypothetical novice developer can slap a fully functional voice recognition app using little more than code snippets from Stack Exchange and some public sample code from Amazon.
With a little work, our new serverless code monkey could build an application that reads an S3 bucket looking for uploaded sound clips, sends those sound clips off to a BDCA tool for natural language recognition, and then either does voice-to-text conversion or executes commands, depending on the contents. That's insane. The entire concept is mind-blowingly powerful, and the toolchain will only get bigger.
Serverless is a child-oriented UI from true drag-and-drop application development. Except that it's not just the application; all the backend IT is handled as part of the solution.
Today it's natural language and facial recognition and basic pattern-matching. Tomorrow it could be orbital dynamics as a service, infant cry recognition, and advanced medical diagnostics. Each piece of functionality is callable with five lines of code.
This is what serverless is. The greatest minds of every generation creating BDCA tools that can be used by anyone. These BDCA tools are not one-shot parsers to combine invoices from the financials system with waybills from FedEx. These BDCA tools are a collection of digital skillsets that will accumulate, generation after generation.
The evolution of language allowed one generation to pass along knowledge to the next. The invention of writing allowed one generation to pass along knowledge for hundreds or even thousands of generations.
Serverless – no matter what we end up calling it in the future – will allow one generation to pass along entire industries, preserved forever, callable with a line or two of code. This is big. This is the discovery of fire, the invention of writing, the creation of the library big.
Did somebody say black box?
Serverless is not without flaws. There are legitimate complaints to be levelled at today's implementations, though most have nothing to do with the basic idea of the technology.
The complaints to be levelled at serverless are all the traditional IT complaints when someone comes up with a true game-changer: lock-in, price gouging, burying costs, leveraging one monopoly to create another, etc.
What a developer calls when they call a BDCA tool is essentially a black box. The only people who know how it works are the ones who wrote that tool. And on some philosophical level that might matter. Nerds sure do love to fight about such ethical quandaries at length.
But in practice what it means is that developers can do things they never could have done before, because doing those things would have meant that they had to learn them. With serverless, you just go "Oh, what I want to do is provided by this black box over here; I’ll just feed my data into that and then send the result over here".
To nerds – especially operations nerds – who have spent their entire careers obsessed with risk management, black boxes are terrifying. We don't know what goes on inside the black box, and thus we have no control over it. If something goes wrong, we don't know how to fix it, but we may still be held responsible. Most IT practitioners simply won't be able to get over this.
But to everyone else, serverless represents the demystification of information technology. It is the commoditisation of retail and consumer application development.
When we electrified our nations, there were a few bumpy decades. We had to fight standards wars over DC versus AC current, voltages and frequencies, and standardised plugs. But once all of that was behind us, anyone could plug an appliance into the wall and make it go.
From washing clothes to cooking food, vacuuming our homes to writing this very article on a computer, the commoditisation of electricity changed all of human endeavour forever. Imagine what we'll build once everyone can make applications by saying: "I want to take this data, do this to it, and output the results over here".
It's an exhilarating – and terrifying – idea. Even if serverless is a completely ridiculous name. ®
We'll be covering Serverless at our Serverless Computing London 2018 event. More details, including blind-bird tickets, right here.