Are you in 2021 still waiting on the delivery guy to increase the memory of your webserver? Are there other options, or should we all jump to the latest trend of serverless hosting?
Ever since the beginning of the World Wide Web, a web page was delivered by a server located somewhere and sent the requested page back to the browser on your computer. Since that first page in 1991, a lot of things have changed, but a page that is requested is still returned to your browser by a server in one way or another.
These days, depending on the visitor volumes, those web pages are delivered by one or more servers that balance the traffic between each other to ensure that all pages are delivered promptly. Depending on the underlying architecture, the page is readily available by the server and can be found and returned (Static Site Generation), or more common, the page is built per request to make the page unique to your request (Server-Side Rendering).
THE ABSTRACTION EVOLUTION
INFRASTRUCTURE AS A SERVICE
Evolved from that on-premises server located in-house, the more widespread approach today is using some type of cloud computing. The most comparable way is Infrastructure as a Service (IaaS). In this case you still have a virtual machine (the server) to which you can login directly and from a software perspective there is no inherit difference. But at a hardware level all maintenance is offloaded to the cloud provider.
This approach is nothing more than offloading the on-premises data center into the cloud. It provides you with a way to still login to your server while relieving the hardware need. Which can be setup and used as preferred. But all configuration and software patching still needs to be done.
PLATFORM AS A SERVICE
Taking it one level up, you have the option to host your application on a platform. You have no direct access to the underlying machine and no way of logging in. But you are still able to define what is exactly being run on that platform, which code and or product you are using and the necessary configuration that is involved. You receive a place to store your application and have all the flexibility you need as long as you remain on the runtime platform.
When the configuration of the platform is nothing more than the web platform package itself, the release process can be simplified to the basics. This allows for easier scaling both by adding more "servers" or by adding resources to those servers. The biggest advantage of this approach is that the hardware, security of the platform and platform maintenance are offloaded to the cloud provider.
So, how does serverless fit into this evolution? Commonly serverless is mostly linked to Function as a Service, small bits of code that can handle certain tasks and are only running when called upon. These functions can enable server-side rendering of a page, handle interactive form submits and so much more.
Do you need a bit of code that transforms data in between bigger systems, do you need to resize images for certain usage? All of this and much more can be done by functions. There are even web frameworks like next.js that have multiple functions at its base to provide a combination of static site generation and server-side generation by functions.
SOFTWARE AS A SERVICE
To allow an abstraction on top of the platform itself, the next level up is defined by the software product running on those platforms. The server that simply served your website in the early days has become much more, it now allows you to manage content and ensure that each visitor has a "unique" experience. The Content Management System (CMS) has become an important factor that enables many aspects of your web experience.
Abstracting away all those functionalities does include the risk that the web platform becomes too rigid. Fortunately, this is a topic that will be handled in many ways by different vendors, going from abstraction of the CMS to a Content as a Service provider towards having the implementation contain integration points for advanced flexibility and adaptations.
In this approach, all maintenance is handled by the software vendor. This allows a maximum focus on the key requirements and the functionalities that are necessary. Everything else, such as hardware maintenance, operating system patches and software updates, is provided in the platform.
In the end, the evolution will never stop, there will always be new ways to allow for an abstraction of the lower-level aspects. But we have reached a point in time at which it's more important than ever to evaluate the needs and requirements when selecting the right platform.