Function as a Service and a whole new world of opportunities
Faster, Cheaper, Simpler: why Function as a Service is the next big disruption in Digital transformations
FaaS is a recent development in the cloud computing arena and it was firstly introduced in October 2014 by the hook.io website (link to GitHub project). Since then, many big players such as Google Cloud, Azure, AWS and IBM have introduced FaaS as part of their product offerings.
In this post I explore the advantages of FaaS as well as some of it main use cases.
What is FaaS?
Function as a Service (FaaS) is a new serverless cloud computing concept. It consists in implementing a solution that helps developers to manage functionalities of their applications without the complexities of building the infrastructure and maintaining it.
Serverless computing is actually a marketing jargon and it does not mean the complete absence of servers. It simply implies that developer does not have to manage the underlying servers and network infrastructure.
Why FaaS is the next big disruption in Digital transformations?
What makes FaaS a candidate for being the next big disruption in Digital Transformation? In this post I look at the top three advantages of FaaS.
With the operating procedures abstracted away, developers can focus on writing code. They can deliver features at a faster rate and iterate faster. Moreover, development teams can be smaller as they need not have individuals working on the infrastructure. Moreover, with developers not having to manage infrastructure and scalability, the operational cost reduces significantly.
In the case of bare metal servers and virtual servers, the practice is to reserve computing capacity, network bandwidth and storage. Developers would then deploy their applications on top of this infrastructure and were billed for the duration the infrastructure is reserved. The serverless computing model gets rid of computing capacity reservation.
A monolithic application is broken down to smaller services usually called “microservices”. This architecture pattern is very similar to serverless computing wherein an application is broken down to functions. Hence, serverless computing is complementary to the microservice architecture and shares many of its advantages.
Serverless computing is ideal for workloads which have sporadic demands. They are ideal for workloads that are short, asynchronous or event-driven and concurrent work loads. I identify the following use-cases as particularly suited for serverless computing.
- Database triggers
Event driven computing was one of the main drivers behind serverless computing. Functions as a service can be used to respond to changes in database, such as insert, update and delete operations. For instance, serverless functions can be used to write entries into an audit table whenever a record gets updated in the database. AWS Lambda is used alongside AWS DynamoDB40 to create database triggers.
Netflix adopted AWS Lambda to help manage their AWS infrastructure with an event-based systems.
- Serverless computing at edge
Edge computing is described as a key driver for the serverless computing trend. IoT devices generate a large volume of data which need to be processed in real-time. Serverless functions at the edge can react to events, such as changes in temperature and water levels, without having to send all the data to the cloud.
Amazon provides AWS Greengrass to run lambda functions at the edge on local connected devices. These functions can also run when the devices are not connected to the Internet. Deploying the functions on the edge can improve the utilization of resource-constrained devices at the edge. Furthermore, by abstracting away the infrastructure details from the developers, code can be deployed on multiple devices. Various Content Delivery Network providers provide serverless computing at their edge infrastructure. Developers can use this to perform tasks such as to modify headers, to carry out A/B testing, to inspect authorization tokens and so on.
- Media Processing
In media processing, an input file goes through various processing stages before it is ready to be served to the end user. For instance, when a raw image is uploaded by a user, a thumbnail of the same is to be generated which is then copied to a blob storage, followed by updating a database. The image might also be further processed for image recognition and other meta data extraction. All these steps are small processes but they need to run asynchronously and in parallel. Hence, serverless computing is ideal for this use case as the functions need to run only when an image is uploaded.
Why FaaS is trending among developers?
Developers hate maintenance. The concept of a serverless architecture is a dream for developers and it popularity is growing quite fast, see the google trends chart for “serverless” in last five years.
On the other hand is hard to imagine FaaS as a complete replacement for normal application architectures.
Function based apps are a perfect fit for replacing potential microservice-style architectures and background type services. Depending on how a function is built, the developer can lower the cost even more by choosing the cloud supplier that fits best for their use.
With the flexibility of Function as a Service, applications can handle greater information flow without bottlenecks in the infrastructure and therefore, becomes more efficient and cost-effective.
- Amazon API Gateway. Official AWS documentation.
- Amazon DynamoDB. Official AWS documentation.
- Amazon DynamoDB: Processing New Items in a DynamoDB Table. Official AWS documentation.
- Microsoft Azure. Introduction to azure functions.
- Danny Bradbury. Microservices: Small parts with big advantages.
- Mohsen Mosleh Kia Dalili and Babak Heydari. Distributed or monolithic? a computational architecture decision framework.