In this blog, we’ll explore what serverless is, what “Functions-as-a-Service” (FaaS) is, how they fit into applications, and what are some benefits of serverless FaaS.
“FaaS (Function-as-a-Service) is a type of cloud-computing service that allows you to execute code in response to events without the complex infrastructure typically associated with building and launching microservices applications.” – IBM
What is serverless?
Building services and applications can be a daunting task. Before developing the necessary software for the product, a company must establish and maintain the infrastructure for running any backend application logic. This could include setting up and running servers, operating systems, databases, and other storage options. The responsibility of maintaining the infrastructure and runtime of your application/service could increase costs, development time, delivery timeframe, and infrastructure management needs. However, there is a cloud computing service that can mitigate these adverse effects. Serverless FaaS allows developers to focus on developing application/service software without the need to configure, manage, and maintain the necessary infrastructure and runtime for the application/service.
What is FaaS?
All major cloud computing organizations provide a service that allows you to develop the application software in pieces of code called functions. These functions are individual chunks of code that can be run to perform a task without provisioning servers, databases, or an OS. These are called “functions-as-a-service”. In your application flow, software will run at certain points where application logic needs to be performed. Application logic functions can be triggered and run by an event or request when needed in your application with the cloud service running your code on any necessary servers, databases, or software environments/runtime. These necessary infrastructure components are in stateless containers that only run when your function is and are inaccessible by you. The serverless model has the cloud service manage all infrastructure while you are responsible for only the function code.
How does a serverless FaaS fit into a company’s products and apps?
With serverless FaaS, your application can become faster, less costly, and more scalable. In applications, there may be a need to run software in response to an event or perform a scheduled task. With serverless, FaaS can be used in these instances to efficiently perform these tasks when needed. FaaS simplifies the process of the application because of the ease-of-use and easy integration with other aspects of the application. In the example below, we see an example of serverless with AWS Lambda as the FaaS.
If we have a web application which allows a user to access the application and receive the weather forecast in their area, AWS Lambda can be used as a serverless FaaS to perform the backend application logic. Our user visits the site hosted in S3, clicks the button to get their weather information which makes an API call to API Gateway. This API call triggers the serverless AWS Lambda which will perform the task of retrieving the local weather information from DynamoDB and returns it to the user on the front-end. In this example of a serverless FaaS used in an application, AWS Lambda was triggered by the event of the user clicking the button which made an API call.
4 benefits of a serverless Faas
Serverless computing offers four key benefits to application development.
- Removes the need to provision and manage infrastructure – As stated above, there is no need to provision any servers, containers, databases, or software environments that are necessary to run the application. The infrastructure and the software runtime are abstracted. This saves development time, costs, and business and operational overhead.
- Elasticity and scalability – These are two benefits of cloud computing that are also key benefits in serverless computing. Your application may have different computing demands at various times of the day, week, month, or year. Rather than overprovisioning servers and other infrastructure yourself, cloud services will manage and provision all infrastructure for you and will scale up or down to meet the changing demands of your application. Serverless computing allows your servers and databases to scale according to any increasing demand of your functions.
- Lower computing costs – As serverless computing removes the need to provision and manage infrastructure and is elastic by scaling infrastructure to meet demand, you are met with significantly lower computing costs. With serverless FaaS, you only pay for the infrastructure components you need when your function is running and the demand of your function. There is no need to pay for infrastructure running 24X7 but sitting idle when your function is not running. With serverless, you don’t need to worry about paying for more infrastructure than you need nor the provisioning or management of infrastructure.
- Keep software development the priority – With all the infrastructure needs taken care of for you, you can keep the software development of the application the main priority of your time.
4 limitations of serverless
With every new benefit, there are always drawbacks.
- Rewriting existing legacy apps – When re-platforming existing on-premises legacy apps to the cloud, there may be a need to rewrite certain components of those applications to utilize serverless computing. The modernization of legacy apps could be a time-consuming and tedious rebuilding process.
- Vendor lock-in – Developing apps using serverless computing means coupling the development to the cloud services you are using. For example, utilizing AWS Lambda will require the design and structure of your application to conform with AWS Lambda which could prove difficult to change should you switch to a different cloud provider. Vendor lock-in could create a situation in which you are tied to the cloud provider you are using.
- FaaS cold starts – While a benefit of serverless computing is the lack of managing infrastructure yourself, there is a downside to this. If your serverless function is called sparingly, each call could be prone to frequent cold starts. After a certain period where your function isn’t invoked, the cloud will spin down any servers or related infrastructure used for your function. The first subsequent demand of your function after this period will require the cloud to spin up the server and necessary resources before running your code which could significantly slow down function performance, which is especially important in user-facing applications.
- Costly if invoked at a high rate (24X7) – While FaaS are not overly expensive, extremely high invocation rates could incur a high cost to run function constantly. This could be a significant cost within your application.
Key use cases of serverless
File processing – A user facing application that will take in a file, store it in S3, and send it to AWS Lambda for processing tasks is a classic use case of serverless computing that is event-based
Batch processing – Serverless functions can be used as scheduled jobs for processing batches of data easily when needed
Cloud operations – Serverless can also be used for performing essential tasks such as periodical backups of important data that needs to be stored long-term
IoT – With IoT, many devices are connected to each other and communicate with the cloud, there will be a need for collecting and utilizing data from those devices. With FaaS, you can easily invoke your function to process and store the data used within IoT.
Web applications – With FaaS, you can utilize the functions as components within your application that perform programmatic tasks based off an event or API request. These functions can be the endpoints that perform some backend logic for your application.
Overview of serverless FaaS
Serverless “Functions-as-a-Service” is a cloud computing service that allows developers to focus on developing application/service software without the need to configure, manage, and maintain the necessary infrastructure for the application/service. They are incredibly useful in software development for applications and services and have several benefits including lower computing costs and keeping software development the priority. Utilizing serverless FaaS can benefit your application development process. Contact us to learn how Infinitive can help your application become faster, less costly, and more scalable with serverless Faas.
Sources
https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless
https://www.gartner.com/smarterwithgartner/the-cios-guide-to-serverless-computing
https://www.cloudflare.com/learning/cloud/what-is-vendor-lock-in/
https://lumigo.io/blog/this-is-all-you-need-to-know-about-lambda-cold-starts
https://betterprogramming.pub/7-out-of-the-box-use-cases-for-aws-lambda