What is FaaS?
FaaS (Function as a Service) is a type of cloud computing that allows developers to execute code in response to an event, without needing to deal with the complicated server setup infrastructure typically involved in cloud-hosted applications.
When running an application on the web, you need to set up a server, operating system and server software for hosting services that you expose to the web. With FaaS, all of this setup is handled automatically by the platform provider. No need to deal with hardware settings, server software setup and management of tasks to keep this all running. The functions in FaaS applications are all that need to be taken care of.
FaaS vs Serverless
First off, serverless is more of a marketing term than a technical term, as everything on the web is on some sort of server. It’s premise is about making a developer’s life easier by taking the hassle out of setting up and managing various aspects of a server in order for their applications to run.
Components of serverless include services for compute, storage, database access, user management, API gateways and anything else that allows services to run, without caring about how it is run.
FaaS is the compute component of a serverless architecture. This is often considered the most important, central element of serverless which is why FaaS is often referred to as serverless when it is really a subset of services in the architecture.
Benefits of FaaS
The bases for this movement in software development is to abstract away as much as possible, the menial tasks of building an application. To the end-user, it should be cost-effective and free of backend maintenance headaches.
- Focus more on code, not infrastructure: FaaS allows developers to put their focus on the actual applications, rather than deployment. Applications are divided into multiple functions that trigger other services. This allows applications to scale automatically when needed without having to manage the infrastructure. Maintenance activities are managed by the service provider.
- Pay only for the resources you use, when you use them: When you are not running any functions there is no cost. Functions lay dormant until they are triggered by an event. FaaS is, therefore, cost-effective, especially for dynamic workloads or scheduled tasks. Payment is calculated by the 100’s of milliseconds of use and total cost of ownership is also better for high-load scenarios.
- Highly scalable, automatically: With FaaS, functions are scaled automatically, independently, and instantaneously, as needed. When demand drops, FaaS automatically scales back down. Provisioning of services happens in milliseconds rather than minutes or hours for other services.
- All the benefits of cloud infrastructure: FaaS offers inherent high availability because it is spread across multiple availability zones per geographic region and can be deployed across any number of regions without incremental costs.
FaaS is good for high-volume and embarrassingly parallel workloads. These are activities that are commonly performed in large scale High-Performance-Computing. Batch-processing can be very cost-effective in FaaS as when this activity stops, so does the billing. This is also similar for scheduled jobs including triggers from third-party sources.
A quick-fire list of other types of processes FaaS can be used for
- creating backend systems
- data/stream processing,
- format conversion,
- data aggregation,
- web apps,
- back ends for IoT devices,
- Monte Carlo simulations,
- Boost computing performance