The Evolution of Serverless Computing
Enterprise IT has come a long way—from physical servers, to virtual machines, to containers—and is still evolving faster than ever.
The basic paradigm underlying enterprise IT has changed a great deal over the years. As new opportunities and challenges—both business and technical—have emerged, most enterprises have moved away from architecture built solely with physical, on-premises servers. And the game may be changing faster than ever, with new challengers arising to take on even relatively cutting-edge technologies such as containers.
In the Beginning, There Was Hardware
Early on, evolution in enterprise architecture followed developments in hardware capabilities. Von Neumann architecture brought computer operating systems and software to the enterprise. In this model, the OS was tightly coupled to the hardware. But as operating systems moved to disk-based storage systems, it became possible to upgrade the OS without changing the hardware.
The first step away from a pure dependence on hardware had been made. But while operating systems were less dependent on specific hardware, software applications were conversely becoming more dependent on the specific OS. As operating systems became more complex, any given application would often have a hard dependency on a specific version of the OS or some other piece of software installed along with it.
The Dawn of Virtualization
These dependencies created challenges in software development. Any new application would need to be tested to ensure that it worked in a range of specific environments. To this end, disk cloning tools were developed, which made it possible to make portable copies of those environments. This drew a clear distinction between operating systems and applications, on one hand and the hardware required to run them, on the other.
Hardware virtualization was perfected and then later commoditized by companies such as VMware. It became cheap and easy to create virtual machines. With the arrival of cloud computing, virtualization became a standard way to operate remote hardware owned and maintained by vendors like Amazon Web Services. But virtual disk images were large and clumsy, creating significant scaling challenges.
The Coming of Containers
Container technology, popularized by Docker, offered a much more lightweight alternative to images. Across any range of images, much of the software stack is likely to be identical. In the Docker approach, only the differences from image to image need to be stored separately and the common elements can be drawn from an underlying container. This enabled microservice architecture, which promises unprecedented scalability in software development.
It turns out, though, that microservices aren’t the be-all-and-end-all of scalability in enterprise architecture. There is still a lot of dead weight replicated across containers—specifically, libraries and boilerplate code. The code that really distinguishes one microservice from the next is just a small amount of application logic and nearly everything else is identical. More importantly, those nearly identical portions add little or no business value to the end customer.
Thinking Outside the Container
From this realization sprouted new constructs—high-level “as-a-service” offerings like Backend-as-a-Service (BaaS) and Function-as-a-Service (FaaS). These represented the dawn of serverless computing. The exact formulation of what is “serverless” is still up for grabs but—broadly—we can define this as any application or service for which the enterprise provides only application logic, which is executed on infrastructure it does not manage.
The point is, key paradigms behind enterprise architecture and the applications it supports are shifting fast, presenting new opportunities for scalability and agility. Adopting the new paradigms will inevitably be a challenge in the context of monolithic legacy architectures and entrenched IT practices. But with serverless computing in place, you could greatly enhance your organization’s ability to react to the inevitable but unforeseeable changes still to come.