Function as a Service: The Next Big Disruption in Digital Transformations
Cloud computing is like a big change in how businesses use technology. One new idea from this change is Function as a Service (FaaS). With FaaS, people who build software can make and use small parts of a program without needing to handle a whole system or computer setup.
This new way can save money, grow easily, and get things done faster. So, many businesses are starting to use FaaS to make their work easier and more creative. In this discussion, we’ll talk about why FaaS is becoming a big deal in changing how businesses use technology.
Introduction to 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.
In the simplest terms, FaaS is a concept in cloud computing that allows developers to execute individual pieces of code (functions) without worrying about the underlying infrastructure. It takes away the responsibility of managing servers and lets developers focus on the code, thereby enhancing productivity.
Short history of FaaS
The concept of Function as a Service (FaaS) didn’t appear overnight. It’s the result of several years of evolution in cloud computing and the culmination of many advancements in technology. Here are some key moments in the history of FaaS:
1. Emergence of Cloud Computing (2006): the journey of FaaS began with the advent of cloud computing. In 2006, Amazon Web Services (AWS) launched Elastic Compute Cloud (EC2), which marked the beginning of the cloud revolution. This allowed businesses to rent virtual computers on which they could run their applications.
2. Introduction of Platform as a Service (PaaS) (2008): a couple of years later, Google introduced App Engine, a Platform as a Service (PaaS) offering. With PaaS, developers could deploy and run applications without worrying about the underlying infrastructure, as the platform would manage it.
3. Birth of Infrastructure as a Service (IaaS) (2010): AWS introduced a more granular cloud model known as Infrastructure as a Service (IaaS) with the launch of AWS Elastic Beanstalk in 2010. This allowed developers more control over the infrastructure compared to PaaS.
4. Emergence of Serverless and Backend as a Service (BaaS) (2011): the term “serverless” was first used in 2011 to describe applications that heavily relied on third-party services, known as Backend as a Service (BaaS). This was a step closer to FaaS, as it began to abstract away the idea of servers.
5. Introduction of FaaS (2014): the birth of FaaS as we know it today can be traced back to 2014, when AWS introduced AWS Lambda. Lambda allowed developers to run code in response to events without having to provision or manage servers, thus coining the term Function as a Service (FaaS).
6. FaaS Goes Open Source (2016): to foster more innovation in the FaaS domain, several open-source FaaS platforms were launched in 2016, including OpenFaaS, Kubeless, and Fission. These platforms aimed to bring the benefits of FaaS to on-premises installations, fostering greater accessibility and flexibility.
7. Widespread Adoption (2017 – Present): post-2017, other major cloud vendors, including Google (with Google Cloud Functions) and Microsoft (with Azure Functions), started offering their FaaS solutions, leading to widespread adoption across various industries. FaaS continues to gain traction as a crucial component of digital transformation strategies.
Faster, Cheaper, Simpler
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.
Faster: 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.
Cheaper: 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.
Simpler: 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.
Key Benefits of FaaS
The adoption of FaaS ushers in a host of remarkable benefits. Here, we delve deeper into these advantages and offer practical examples to highlight their real-world implications:
1. Cost Efficiency: one of the primary draws of FaaS is its potential for significant cost savings. Unlike traditional models that require constant server upkeep — even during idle periods — with FaaS, businesses pay only for the resources used during function execution. For instance, an e-commerce platform can utilize FaaS for inventory management. Instead of maintaining servers 24/7, they pay only when functions related to inventory updates or checks are invoked, saving considerable operational costs.
2. Scalability: FaaS boasts auto-scaling capabilities, allowing businesses to seamlessly handle spikes in demand. Consider a news website that sees a surge in traffic whenever a major event occurs. With FaaS, the site can automatically scale to accommodate this increased traffic, ensuring a smooth and uninterrupted user experience.
3. Speed to Market: FaaS simplifies the development process by decoupling it from infrastructure management, facilitating quicker deployments and a faster time-to-market. For example, a mobile app development company can use FaaS to roll out new features or updates in real-time. As developers are no longer slowed down by infrastructure considerations, the business can iterate and deliver enhancements more swiftly.
4. Focus on Business Logic: the FaaS model eliminates the need to manage infrastructure, thereby enabling developers to focus on improving business logic and user experience. For instance, a SaaS company can leverage FaaS to quickly build and iterate on its software functionalities. Instead of allocating time and resources to manage servers, the team can concentrate on crafting features that offer more value to their users, thereby enhancing customer satisfaction and loyalty.
5. Improved Security: FaaS can potentially improve security by reducing the attack surface. Since there are no servers to manage or patch, the risk of vulnerabilities is reduced. Moreover, as functions are ephemeral and stateless, once they have executed their tasks, they cease to exist, further minimizing the exposure to attacks.
6. Environmental Sustainability: by enabling efficient use of resources, FaaS could contribute to more sustainable computing practices. Traditional server setups often involve substantial energy usage, even during idle times. In contrast, with FaaS, energy is consumed only during function execution, contributing to more environmentally friendly IT operations.
The above benefits underline why FaaS is not just a technological trend, but a paradigm shift in how businesses approach digital transformation. The reduced costs, enhanced scalability, faster deployments, improved focus on core business logic, heightened security, and contribution to environmental sustainability make FaaS a compelling choice for organizations navigating the digital landscape.
FaaS vs PaaS
In the world of cloud computing, there are several service models each offering different levels of control, flexibility, and responsibility to the user. Two of these service models are Function as a Service (FaaS) and Platform as a Service (PaaS).
Function as a Service (FaaS)
FaaS is a type of cloud computing service model where applications are broken down into separate functions that can run in response to an event, such as a user clicking a button on a website. These functions are hosted on a managed platform, and the developer is not responsible for managing the server or infrastructure. FaaS is a form of serverless computing.
Platform as a Service (PaaS)
PaaS is a cloud computing service model that provides a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app. It offers a high level of abstraction, which can speed up development time.
Now, let’s compare FaaS and PaaS across a few key categories:
|Scalability||High; Functions can scale independently, providing agility to meet business needs.||High; PaaS can automatically adjust the number of instances running based on the application’s demand. However, all components scale together, which could lead to underused resources.|
|Management||Less management; The cloud provider manages the infrastructure, and developers just need to focus on writing and deploying the code.||Moderate management; While infrastructure is managed by the provider, developers need to manage the application and data layers.|
|Pricing Model||Pay per use; You only pay for the compute time you consume. There is no charge when your code is not running.||Typically based on a subscription model; You pay for reserved capacity, regardless of usage.|
|Deployment Speed||Fast; As there is no need to provision resources beforehand, functions can be deployed quickly.||Fast to moderate; Although faster than traditional models, provisioning resources may still take some time.|
|Development Language Flexibility||High; Supports a variety of programming languages depending on the provider.||Moderate; Supports a wide range of languages, but choice may be restricted depending on the provider.|
|Use Case||Event-driven scenarios, microservices, real-time file processing, etc.||Application development and hosting, web services, API development and hosting, etc.|
|Data Persistence||FaaS functions are stateless, and data persistence needs to be managed separately.||PaaS can manage data persistence, offering integrated database services.|
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.
It’s essential to acknowledge that while FaaS offers immense potential, its adoption should be guided by an organization’s specific needs and readiness to manage the shift. The journey might be fraught with challenges, but with a solid strategy and appropriate tools, FaaS could be the next big disruption in the realm of digital transformation.
As this is a rapidly evolving field, there’s always more to learn and discuss. I encourage you to join the conversation. What are your thoughts on FaaS? Have you implemented it in your organization, or are you planning to do so? What challenges or advantages do you see?
I welcome your comments below and encourage you to reach out with any specific questions or insights. Your input could help others understand this technology better. The conversation around FaaS and its role in digital transformations is far from over, and your perspective is invaluable. Thank you for reading, and I look forward to your active participation.