Serverless Computing: Evolved Cloud
Serverless Computing is a new computing paradigm which is defined in the concept of Function-as-a-Service (FaaS) Cloud Computing model [1-3]. It is the natural evolution of Cloud Computing in response to easiness and efficiency needs.
In our earlier blog post about Edge Computing, we had explained how Cloud Computing emerged. In short, resource constraints of mobile devices needed a stronger device to perform the computation and storage operations on behalf. Hence Cloud Computing emerged . However, this was only a single dimension of the problem. An environment, like Cloud Computing, was also needed because buying hardware and setting up, running and maintaining a platform were costly for many companies. Companies had to scale their resources vertically to be able to meet the demands of their customers . And Cloud Computing gave such enterprises a chance to use and share the computation, communication and storage resources of a central platform. Thus they got rid of buying hardware, employing people to set up, run and maintain the platform.
However, Cloud Computing had some disadvantages. In Platform as a Service (PaaS) Cloud Computing model, users had to run their applications in Virtual Machines (VMs) which emulated a complete computer with its processing, memory, storage and network resources, as well as drivers . Cloud platform operator was only providing the platform and leaving the decision of CPU, RAM, disk, network resource properties to the users [1-3]. Therefore a user not only had to deal with application development and business plan but also the low-level details. In addition to this, the determined resources for VMs of clients were not fitting well to the needs of client applications, which were either under or over-provisioned . As these VMs were seeming as black boxes to the platform provider, they were not able to profile the execution and resource needs and have to give auto-scaling decisions inefficiently . Moreover, clients had to pay all the time for the platform resources they rented regardless of their application’s workload.
Serverless Computing emerged as a solution to all of the issues mentioned above. Clearly, both cloud providers and clients were suffering from several issues and a solution was needed for both sides. Serverless Computing simplifies the cloud computing model by:
- Removing all the operational and platform-related responsibilities from clients’ shoulders,
- Giving clients the chance to focus just on the application and business logic,
- Allowing clients to pay only for the workloads generated by their applications,
- Letting Cloud providers be able to better monitor and profile client applications, and make auto-scaling decisions.
Serverless Computing achieves these by means of the technological improvements in the recent years in containerization, functional programming, microservices and many more. According to the authors of , it would not have been possible a decade ago, if breakthroughs in these areas did not take place.
A simple conceptual model of Serverless Computing is given in the figure below. In Serverless Computing, clients or users consider only their applications and the corresponding functions. Once functions are developed, they are delivered to the Cloud Provider, which in turn deals with all the operational processes with the life-cycle of client functions. These processes include management, containerization, deployment, provisioning and keeping functions available on demands, monitoring, auto-scaling and billing . These functions in Serverless Computing are stateless functions which run in an event-driven way [1-3], which means they are triggered when a corresponding event happens. Since they consume the Cloud resources only when they are triggered, clients get rid of paying for the unused resources. As functions are realized by containers, Cloud Providers can better profile and monitor these functions and perform auto-scaling based on the instantaneous workload increases. Thus, event-driven and stateless functions can run in an optimized and responsive way.
In Serverless Computing, clients are abstracted from the underlying hardware and related operational processes. Thus they can have the serverless experience .
Benefits of Serverless Computing :
- Users (clients) do not consider the underlying platform anymore and they can focus only on the application development and business logic [1,3],
- Not dealing with the platform-related issues any more can shorten the time to make an application idea to be ready to use ,
- Users do not have to pay for the unused resources and only pay for the resource consumptions during the events,
- Cloud providers can use their resources more efficiently,
- Cloud providers can monitor, profile and control their platform and take actions easier and better.
Serverless may sound like we are outsourcing nearly everything to Cloud Providers except for application development. But is this really true? In his interview with Kishore Bhatia in Software Engineering Radio, Nate Taggart (co-founder and CEO of Stackery) claims that this is not really true . According to him, availability, scalability, and orchestration are outsourced to Cloud Providers. However, he warns that we still have to think about application health management and DevOps processes.
Serverless Computing is suitable for event-driven and stateless applications [1,3,5]. It can successfully overcome the sudden bursts of activities. Internet of Things (IoT) applications can create such activities. Thousands of simple, inexpensive sensors can create short and sporadic activity, which can be managed by functions of Serverless Computing .
Serverless Computing may not be suitable for some applications. As container technology is one of the building blocks for Serverless Computing, they may require a few seconds to be launched. Although this amount is significantly faster than for the time for VMs, it may not be suitable for real-time applications . Stateful applications (e.g., applications with database, etc.) also may not benefit from Serverless Computing either. Serverless Computing may not be an option for applications that deal with large volume of data such as deep learning .
Information technology is keeping on evolving and currently, Serverless Computing is a part of this evolution which was derived from needs in the ecosystem. In this article, we provided a very brief overview of Serverless Computing. We believe that it can be one of the building blocks of smart applications of the future in accordance with IoT and Edge Computing.
- van Eyk, E., Toader, L., Talluri, S., Versluis, L., Uță, A. and Iosup, A. (2018). Serverless is More: From PaaS to Present Cloud Computing. IEEE Internet Computing, vol. 22, no. 5, pp. 8-17, Sep./Oct. 2018. doi: 10.1109/MIC.2018.053681358
- Kanso, A. and Youssef, A. (2017). Serverless: beyond the cloud. Proceedings of the 2nd International Workshop on Serverless Computing (WoSC ’17). ACM, New York, NY, USA, 6-10. DOI: 1145/3154847.3154854
- Savage, N. (2018). Going serverless. Communications of the ACM 61, 2 (January 2018), 15-16. DOI: https://doi.org/10.1145/3171583
- Satyanarayanan, M. (2019). How we created edge computing. Nature Electronics, 2(1), 42-42. doi:10.1038/s41928-018-0194-x
- Bhatia, K. (2018). Nate Taggart on Serverless. IEEE Software, vol. 35, no. 4, pp. 101-104, July/August 2018. doi: 10.1109/MS.2018.2801544