Long ago, a server was something that was yours and yours alone. You and your team would scrutinize the specs, collect bids, fill out a purchase order, and then take delivery on the machine so it could be carefully installed and tested in the server room just down the hall from your desk. You and your team could walk over, touch it, check that the LED was burning bright, and feel secure listening to the quiet hum of the fan. You might even polish the front panel with a shirt sleeve.
Now you might not have anything to do with your hardware. Some people still click on a webpage of a cloud company to create an “instance” but many of us leave all of the work of starting up a server to an automatic script run by some continuous integration and deployment bot. At most, we spend a few moments debating the size of the instance when we configure the build routine, but after that the work is left to one of our robot deployment routines. This software may even be clever enough to negotiate the auctions for spare cycles to minimize the costs, all without us doing a thing.
The disconnection with our hardware is growing even deeper as the “serverless” buzzword grows more common. Of course, the companies don’t literally mean there’s no server in the loop. They just mean that you shouldn’t worry your little head about anything to do with those boxes of chips whirring away somewhere else. Just give us your few lines of code and we’ll make sure that some piece of silicon in our back warehouse will run it.
Many of these mysteries are labor-saving and stress-saving innovations. Being left in the dark means not wasting our time thinking about any of the details about memory configuration or drive partitioning or whether that broken DVD-ROM tray matters. Skipping these thoughts is a good thing. Developers have worked long and hard to build agile tools and bots so we can skip having staff meetings to discuss and review the annoying issues.