To the uninitiated, the very idea of serverless computing seems incredulous because in the history of software development, servers have been indispensable. Well, they still are. Serverless computing need not be taken literally, because it does not make servers obsolete. In the serverless computing scheme of things, servers continue to play an important role, but with certain differences.
Software developers are no longer required to think about servers or adjust coding based on servers. They can focus wholly on coding while the servers, hosted in the cloud, take care of the code processing. There is no need to plan the capacity of the servers because in the cloud, they are capable of scaling up and down based on requirements. The whole server does not remain active all the time. Based on the requirements, parts of it become active, do their jobs and then become dormant.
Many opine that serverless computing can improve computing efficiency and lower operational costs; they view it as a revolutionary way of computing. But not everyone agrees. On the other side of the argument, it is being countered that serverless computing will increase complexity, and there are not many ways to manage complexity.
What Is Serverless Computing?
As already stated, serverless computing does not mean that computing or software development can take place without servers. In fact, the servers are simply hosted in the cloud by a third-party vendor. Therefore, the software developers just need to focus on their code, and don't need to think about servers, capacity, deployment or anything like that. The servers have different parts within them, known as functions, which process the code. Unlike in traditional computing, the entire server does not remain active all the time. The functions perform specific tasks – for example, validation and search – and are activated only when required. The functions can be scaled up or down based on requirements. Just like other cloud services such as software as a service (SaaS) or platform as a service (PaaS), the functions are also offered on a subscription basis. The customer is charged only for the time a function remains active.
Serverless computing is a rather new concept in software development and its roots can be traced back to 2006. In 2006, a service called Zimki offered a solution that allowed software developers to write code and upload it to Zimki's server. The code execution was performed by functions offered in the form of application programming interfaces (APIs).
The next major development took place in 2014 when Amazon introduced the system of pay-as-you-go for a code execution platform in the form of AWS Lambda. However, it is interesting to note that it took such a long time for such a novel concept to find traction (2006 to 2014). For some reason, serverless computing developments did not quite make as big a splash as other ideas like cloud computing or the internet of things (IoT). Nevertheless, AWS Lambda was the first serverless offering from a big enterprise, and a slew of other offerings followed, including Google's offering, known as Google Cloud Functions. In 2016, both IBM and Microsoft jumped onto the serverless computing bandwagon by unveiling OpenWhisk and Azure Functions, respectively.
A good point to start understanding serverless computing at a deeper level is a comparison between serverless computing and PaaS. Though they are different as concepts, PaaS was actually the first step toward serverless offerings. While PaaS offers a platform and environment that allows developers to build software applications over the internet, there is still the need to plan for the capacity needed for the software in the cloud. However, there is no such need to think about servers in any way when you are working with serverless computing. Software developers just code and upload the code to the cloud, and then the servers take over.
Serverless computing is also called functions as a service (FaaS) because small functions are offered on a pay-as-you-go businesses model. Such functions perform small tasks – for example, validating user credentials. The functions are offered in the form of APIs. There can be several functions that may be required for a software application, but not all functions become active at the same time; they are only active whenever they are required. For example, if one function has been receiving a high volume of traffic and it is overworked, it can be scaled and its capacity increased. So, you do not need to scale the entire application.
Why Is Serverless Computing Important?
The importance of serverless computing lies in its difference with traditional computing. Traditional computing has been serving businesses well, but poses a few challenges: expense, time-consuming, no focused coding and difficulties in scaling up or down. Enterprises have been looking for a solution to these problems. The unique benefits of serverless computing include:
- Focus on coding
In traditional computing, developers had to think about servers and adjust coding accordingly. In serverless computing, they need only focus on coding, and the rest is taken care of by servers hosted in the cloud. This increased focus leads to better code quality.
- Coding is potentially easier
If your codes are serverless computing-oriented, then all you will do is to write smaller pieces of code that are processed by specific, respective functions and make sure that the code integrates well with other pieces of code.
- Easier to scale up or down
Since the entire serverless computing infrastructure is about small functions, there is no need to scale up or down the entire infrastructure – just scale the required function. That way, processing and scaling happens much more quickly as well.
- Less expensive
Typically, an enterprise that utilizes serverless computing services pays for the subscription and then for the function usage. However, it pays only for the time a function is active and is being put to use. In other words, enterprises pay only for what they consume.
An Example of Serverless Computing
AWS Lambda is one of the most prominent examples of serverless offerings. It allows enterprises to just write and upload the code to Lambda. When needed, Lambda can automatically scale the application by running the codes in response to the trigger. When the workload on a function or API increases, the function is scaled. The client is billed on the basis of sub-second metering, which means the client is charged for every 100 ms the code executes and the number of times the code is triggered. That way, there is no need to pay when there is no execution of the code.
For all its uniqueness, the serverless offerings are not without their limitations. Several small functions can potentially make for an extremely complex system, more so if the software application is huge. The situation is also compounded by the limited availability of tools to manage such complexities. Still, serverless computing will be viewed as a solution to the monolithic systems enterprises have to deal with. It is still in a fledgling state and organizations are still finding ways to make it work for them, as it gains more acceptance among enterprises.