No, Servers aren’t going anywhere.
This was my reply when I discussed this term with a friend. In fact, I told him that they will remain indispensible for at-least a decade in this IoT-driven, digital world. As the need for compute power rises, more powerful and ‘dense’ server variants will be birthed. I added that we are constantly surging towards is a connected, event-driven world – where one action triggers another and so on. This will invariable demand a new computing paradigm. The current version of infrastructure as a service (IaaS) and platform as a service (PaaS) was just the beginning.
An ‘applications tsunami’ is currently flooding our devices, enterprises and delivery models. While cloud computing did break the conventions of infrastructure management, we are still far from achieving the true operational benefits that Cloud had initially promised.
Moving to IaaS was the first step – taking developers and software teams away from siloed procurement and management of physical infrastructure, to virtual machines (VMs). Yet, the increasing need to plan, manage, and maintain this virtual world looms ahead. When it comes to IaaS, software teams and developers still need to consider the underlying infrastructure (planning, sizing, and patching to name a few). They code, test, rent a VM from an IaaS provider and then plan for scalability.
Though the IaaS cloud can be auto-scaled, it needs additional resources. On the other hand, the lack of right-sizing in response to automation may keep outmoded components in action. This means that either capabilities remain unutilized, or organizations have to invest more in the case of sudden peaks. Further, this leaves the developers more concerned about infrastructure sizing in-sync with user experience, than their primary role – making application code more robust and beautiful.
Serverless computing aims to bridge the gap between IaaS and platform as a service, relieving developers of core infrastructure responsibilities and reduce management cost.
How does a serverless framework help build a digital world?
Well, it allows IT experts to directly run and allocate functions instead of VMs in the IaaS cloud. The IaaS provider takes care of the deployment process, scalability, and run environments. This marks the complete transfer of responsibility of manning the environments from developers to the provider. All developers must do now is write a function and upload it via the API published by the IaaS vendor – that’s it. The vendor takes care of the rest and gives the developer a URL to access the application.
Imagine an application that is used to upload photographs in the IaaS cloud. Every upload needs to be checked for objectionable content. In the current scenario, the infrastructure remains idle until content is incoming. But with Serverless computing, an event is triggered and the application is activated only for that short period. In most cases, costs are imposed only at the nearest 100th millisecond to active functioning.
Another example could be a CCTV application that needs to store and analyze the feed on cloud once it encounters movement. As soon as the movement triggers the application, the code gets executed – again reducing dependence and getting billed only for the time when the function is used.
This, however, remains more suitable for micro-services based architecture, mitigating ownership duties surrounding low-level tasks. While unconfirmed reports claim to have achieved 80-90% cost reduction, real-world examples include AWS Lambda, Iron.io and IBM OpenWhisk. The instructional video from AWS Lambda says “Once you upload your code to Lambda, the service will handle all the capacity, scaling, patching and administration of the infrastructure to run the code.” IBM OpenWhisk, on the other hand, claims to be the open-source alternative to the industry, while Google’s cloud functions utilizes Google Compute Engine for the same.
The high-level architecture essentially comprises triggers, actions (executable code), rules (association between trigger and an action), and packages (external services) – adding another abstraction layer on top of the existing cloud infrastructure.
However, limitations still remain. One needs to be confident that the vendor will handle operational functions with the same ease and commitment as the developer himself. Serverless computing also prevents multiple functions from being used simultaneously – it’s clearly better suited for distinct functions.
Multi-function scenarios still need to be managed by teams/developers, while singular ones are being managed by the PaaS or IaaS vendor service. The limited number of programming languages (Python, C#, PHP and a few others) currently supported also restrict functionalities; however this will be resolved with maturity.
This means, while enterprise-grade applications are not PaaS ready candidate today – the future will be very different. This is why open-source projects like Serverless Inc. are creating a serverless framework – to accelerate PaaS adoption.
Will serverless computing witness widespread adoption? Perhaps yes, as developers of tomorrow may not even be familiar with ‘servers’ or typical hardware and focus only on code and functions. Leaving infrastructure management functions on IaaS vendors seems to be the natural progression.
Would that cannibalize some of IBM, AWS or Azure’s own offerings? Yes, it will and that’s exactly how the developers will reign supreme in this digital world.