I hate the term "serverless". It's a misnomer to the extent that it feels like it was designed to deliberately mislead. Even vague consultant-speak like "externally provisioned infrastructure" would feel more accurate.
It seems it is only a misnomer if you are too young to remember how these types of applications used to be written. They weren't always servers. In the early days they were subprocess modules[1]. "Serverless" is a return to the subprocess model, seeing the application lose the server, or to put it another way the application is less a server.
This must be why they say programming is dead once you turn 40: You can no longer communicate with the young-ins.
> It seems it is only a misnomer if you are too young to remember how these types of applications used to be written. They weren't always servers. In the early days they were subprocess modules[1]. [1] https://en.wikipedia.org/wiki/Common_Gateway_Interface
No, it's even worse a misnomer when you are old enough to remember these days. They were CGI modules... running under a server. They were not "without a server". They didn't work without a server.
And in these days, we did have plenty of applications without any server. For instance, desktop applications using local in-process databases were very common, and plenty of what people nowadays do within their browser (connecting to a remote server on the other side of the world) was instead done using these local-only desktop applications. These applications are what could legitimately claim the moniker of "serverless". Not something which can only work when under the control of a server.
Not true at all. You can use CGI scripts from the shell just fine. And you almost certainly did to aid with testing! Per the CGI specification, communication is through environment variables, stdin, and stdout. There was not a server in the application like we saw later. Since around the mid-2000s, when CGI fell out of fashion, applications of this nature usually meant them serving on port 3000 (probably). "Serverless" sees removal of the server from the application again, moving back to a process-based concept similar to what we did when CGI was the thing to use, although the protocols may be different nowadays. It is not in reference to a specific technology like CGI, rather the broader idea.
> And in these days, we did have plenty of applications without any server.
"These types of applications", not "all applications"...
I did start dabbling in computers in the early 80s, but I think there are far more people doing that now who have no concept of what actually happens and are are often sold pups because things are given deliberately obscure and cool-sounding names. (And people who name it like that are often extremely hostile when you ask questions, see my comment here: https://news.ycombinator.com/item?id=42549723) Of course buyer should beware, but I still think it's not OK to do.
I'm from even before that, and it makes no sense to me.
I understand both what you say and what "serverless" commonly means, I'm just saying it's essentially arbitrary. A symbol with no etymology that holds water.
All words are arbitrary, but how does it not make sense? "Server" is a well understood term in software. "Less a X" is well understood in English to mean something akin to "without X", or "not having X". Serverless is short for "less a server", which succinctly indicates exactly what it is: The application is without a server. Which is a shift in how these types of applications are written, as since the mid-2000s it was common to include a server as part of the application. "Serverless" makes more sense than most terms we use in industry. It literally describes itself, although does require some historical context to understand why "server" is relevant.
Understandably, if you don't come from the software world you might think a server is a person who does work at your request, like serve you food at a restaurant. Is that where the problem lies? There are definitely still people, servers, serving the care to the systems that run the software. But that is clearly not the context in which it is used. It is very much used as a software term, and as a software term alone.
This might be why people are having trouble with it. "Cloud" and "serverless" both refer to hardware, not software.
"Cloud" was moving the hardware from something you managed, either in office or a datacenter, to using machines someone else managed, but it was still server-oriented (such as software in VMs or bare-metal that you managed).
"Serverless" drops even that, using ephemeral code that doesn't care what server it's running on, so the people managing the hardware can move your software as-needed.
> "Cloud" and "serverless" both refer to hardware, not software.
Not really. "Cloud" refers to a software abstraction that tries to hide the existence of actual hardware namely to remove dependence on the availability of any specific hardware component (like, as in, being able to transparently move to another physical machine without the user ever knowing). It is clearly a software term. I can't go down to my local Walmart and buy a "Cloud". Amazon won't ship a "Cloud" to my place. There is nothing "hard" implied by the word as used in this context. I'll grant you that it more or less maintains some kind of "virtual" hardware concept. Perhaps that is what you mean?
There is no hardware association with "serverless". It refers to a pattern for developing a certain breed of applications that resemble servers, but without the server. "Server" is definitively a software term as used here. A server is an application that listens for requests from a client, typically on a network port if we are to dive into implementation territory, but could be something else like a unix domain socket. Much like CGI of yore, these "serverless" applications shed the server, relying on the runtime environment to fill in the missing pieces.
This doesn't make sense to me because "fooless" means "lacks foo"
You are describing a thing that is not a foo, or does not do foo, not a thing that posesses no foo.
So, I say, this is just something you're saying and not a definition I ever heard or would have implied from context from others usage. And it's not a new term by now, so there has been several years for me to have gained this impression or understanding if anyone else were using it that way.
Exactly. "Serverless" lacks a server. Which, granted, wouldn't make sense with no context, but when you remember that the same types of applications were previously written to include a server and no longer include a server when written in a "serverless" fashion, that is exactly where the differentiation is found. It literally describes what it is.
> And it's not a new term by now, so there has been several years for me to have gained this impression or understanding
I have never, ever, seen "serverless" refer to anything else outside of the previous commenter who thinks it has something to do with hardware. But it clearly has nothing to do with hardware. There aren't warehouses full of "serverlesses" ready to be loaded onto trucks. It is not something physical. It is not in any way "hard", that much is obvious. It is undeniably a software term. So, what, exactly, is your impression?
To try and put my first comment more clearly: They both refer to distance removed from hardware. Neither refers purely to software things like webservers or application servers, which is how you and others described them in what I was first responding to.
"Server" does not solely refer to software, it is also a name used for hardware. Think along the lines of mainframe, host, hypervisor, and so on.
> does not solely refer to software, it is also a name used for hardware.
A computer that primarily runs a server (or multiple servers) is often colloquially also called a server in recognition of what it is doing, but server is still in reference to the software. If you repurposed that hardware to sit on someone's desk to run Excel, most wouldn't call it a server anymore.
> Think along the lines of mainframe
I am not sure that works. I expect a mainframe running Excel on someone's desk would still be considered a mainframe by most as mainframe usually refers to a hardware architecture. A server, in the colloquial hardware sense, could be of any kind of architecture, including a mainframe!
Regardless, serverless is not associated with hardware as it is usually used. It is, as virtually everyone uses it, about removing/not needing the server in your application, typically used in the context of a service like AWS Lamba which offers the aforementioned runtime environment that negates the need for your application to be a server. In fact, Lambda is specifically named in what looks like a majority of the sibling threads here. It is abundantly clear where the typical use lies. If you know of instances of people using it to refer to another concept, I would love to see it.
I at least am not talking about hardware vs software uses of the word.
I don't think anyone is actually confused about that. We all know that server also can mean "computer that is being used to serve", and we all know that "serverless" does not mean that there is no computer that is being used to serve.
I mean that "thingless" means there is no thing. In "serverless" software, there is still a server. In both the hardware and software senses, but again forget the hardware part.
It's just that the software itself is not also it's own server for itself.
What doesn't make sense to me is it just seems weird to use a word like that to apply to that condition. "serverless", if it were anything other than "server", would mean there is no server, or does not use a server, or does not work by way of a server, etc. Like software that isn't client-server in the first place.
In this context of web apps, I would say that "serverless" would be impossible or meaningless, but the closest thing to a meaning would be "I don't need to worry about running the server".
Of course no matter what, you do need to run or at least use, some kind of server. If you program using all microservices in place of functions, you still have a piece of code somewhere that calls the microservices, and that code needs to be installed somewhere and run somewhere, and that is a server you need to run. Even if it's a fully managed service, you still need to subscribe to the service and manage your account, which is essentially "running the server". Fail to do it correctly and the app stops working.
I guess an "engineless" car is a car without an engine, and that maps exactly to what they're saying serverless means, software that doesn't include it's own server. But cars do generally include an engine, so an "engineless" car is a exceptional thing and so a meaningful term.
But software normally never includes it's own server. That is a recent thing and still only in the subset context of web apps. "serverless" in that sense is more like saying "roadless" car.
Sure, the car in fact doesn't include it's own road so it's true, but weird. Cars don't generally include their own road so it's weird to point out.
If you said "roadless car" out of the blue, just like "serverless" it wouldn't actually be quite meaningful at face value, but the closest thing to a meaning would be a car that does not require a road. An off-road vehicle. Not a car that doesn't include a road.
There is an apocryphal story going around at my company, which in all honesty I don't believe to be true, but it's too good to not believe. :)
Back when the hype was virtualization (so probably mid-2000s, before my time at the company), a big project was run to try moving to virtual machines. After the research phase had been deemed a success, they were gearing up to go into production and put in a hardware order. This was supposedly rejected by an executive who complained that they should not need physical servers if they do everything on virtual machines now.