Brief Introduction to Serverless Computing
What is serverless computing, and why do we need it?
With the rapid growth of the “as a service” business model in today’s business domain, we are slowly moving towards a world where developers may not need to rely on physical infrastructure to run codes. After the surge of cloud-based platforms, IT companies are switching to a serverless computing paradigm, which promises to be a cost-effective way of building and operating applications in the cloud. IBM outlines serverless as an approach to computing that offloads responsibility for common infrastructure management tasks (e.g., scaling, scheduling, patching, provisioning, etc.) to cloud providers and tools. This allows the engineers to focus their time and effort on the business logic specific to their applications or process. It also allows developers to create and deploy apps without having to worry about server infrastructure.
Basically, serverless computing is the abstraction of servers, infrastructure, and operating systems. This means that, while this technology eliminates the need for infrastructure provisioning and management, it certainly does not eliminate the need for servers. Serverless lets developers shift their focus from the server level to the task level. A developer only has to specify how much RAM and CPU to allocate for the function, what trigger or event should cause the code to execute, and then finally upload the function source code. The users of this technology are only billed for when their code is running, down to the nearest 100 milliseconds. Often times, cloud providers call their serverless services as, Function-as-a-service (FaaS). E.g., AWS Lambda. In reality, FaaS is actually a subset of serverless. Here, applications are written by developers but run in stateless compute containers that are event-triggered and fully managed by a third party.
Serverless is primarily used for transient data exchanges by web and business applications in the cloud. Also as the name suggests, serverless computing services reduce the overhead and cost of managing either physical or virtual infrastructure. This approach further, helps teams increase their productivity and launch products to market faster, and allows better optimization of organizational resources. Applications of serverless computing include: continuous integration pipeline, processing big data, i.e. structured data (JSON, XML, etc.) or unstructured data (images, audio, etc.), including transcoding, moving, combining or manipulating. It also helps integrate language assistants and chatbots, implement micro-services, run scheduled tasks and much more.
One of the most prominent manifestations of serverless computing is function platform as a service, or fPaaS. According to analyst firm Gartner, half of the global enterprises will have deployed fPaaS by 2025, up from only 20% today. Gartner also believes that the next-generation technology of serverless computing will enable agility, elasticity and cost-effectiveness when applied to appropriate use cases.
Serverless vs. Containers
Containers are a lightweight virtualization technology that wraps source code together with application dependencies, allowing easy portability and consistency. There are a few fundamental differences between serverless computing and containers. Although both use virtualization technology, containers virtualize the operating system (OS) whereas serverless virtualizes the runtime and scales via functions. Unlike the latter, containers require hardware to run. This means, the hardware must be updated, patched and maintained by the concerned team too.
Further, scaling a container requires manual intervention by increasing the number of containers. On the other hand, scaling a function in serverless is taken care of by the vendor based on load. Besides, container scaling is by the application team and for serverless scaling, it is done by the vendor.
There are multiple benefits of leveraging serverless computing. It offers dynamically scalability within seconds to match the demands of any workload. It also minimizes the operations dependencies on each development cycle, increasing development teams’ agility to deliver more functionality in less time. Users don’t have to worry about the cost of procuring, maintain, and upgrading a server either. Since there is no need for a backend configuration, it also facilitates quick deployments and updates. It also has high error tolerance thanks to flexible hardware infrastructure in the provider’s computer center. Further, it grants service assurance purposes, like monitoring, logging, tracing and debugging. Moreover, serverless vendors, ask end-users to pay only for resources being used, never paying for idle capacity.