All problems in computer science can be solved by another level of indirection
I love a nice layer of abstraction.
Filesystems let me just put files on a drive without concerning myself with explicit allocation and disk geometry. TCP clients let me just make a request without concerning myself with packet retransmition, re-ordering, and on-wire representations. Logic gates let me think about digital circuitry without concerning myself with voltage levels and capacitance.
What these abstractions don’t do is explicitly deny the existence of what they abstract away.
I am totally up for abstracting away the notion of “machine(s) to which I deploy code”. I already do this a lot by using PaaS frameworks and services.
Abstracting something away doesn’t mean totally ignoring it. My code may do no explicit filesystem access, and be running on a server with RAID, but someone still needs to go swap the disks out if one fails. Abstractions leak, whether it’s deliberate workarounds like DNS leaking into HTTP to work around limited IPv4 allocations or unintended side-effects like WiFi packet loss being treated as TCP congestion. This is the crux of my issue – it may seem superficial and picky, but I’m a big believer in Linguistic Relativity – language shapes thought.
Nobody calls a filesystem “diskless”. Your system is not “serverless”. You have servers, they still matter, you just have an abstraction that means you don’t need to think about them as much.
How about we start calling it “Functions as a Service”?
"But serverless still has servers" … it's not the point. Here's the best diagram I have to explain what "serverless" is pic.twitter.com/LagdrqH0Pc— swardley (@swardley) April 17, 2017