In this guide, we will compare Serverless Computing versus Function As A Service (FaaS). We will be discussing some of the similarities as well as some of the differences between the two options.
In the early 2000s, when building a web application or service, a full team was needed to develop, deploy, configure, and maintain the software. Many companies performed all of these tasks in house. The decisions they often faced included:
- Determining the development language to use
- Deciding on the platform for the software
- Identifying the timeline involved in the deployment
- Configuring the scalability of the software
- Determining the server type
- Selecting the server’s configurations
- Deploying the server and correcting any conflicts
These were just a few of the factors that were involved in how the application was going to perform. As time went on, new companies grew to help alleviate many of these concerns. Still, other needs were not met and needed to be addressed to ensure a stable and robust application.
Over the last decade, Cloud Computing has emerged to help alleviate many of the previous issues seen in development, deployment, and maintaining applications. Because Cloud Servers are virtualized, they are created, managed, and disposed of in a more efficient manner. This also eliminated the need to wait for physical hardware to be deployed. Unfortunately, even if a traditional dedicated server is exchanged for a cloud server or a service like an AWS EC2 instance, the same tasks of server management and configuration still apply.
This is where serverless computing comes in. Serverless is the next step in Cloud Computing. This means that servers are simply hidden from the picture. In serverless computing, this separation of server and application is managed by using a platform. The responsibility of the platform or serverless provider is to manage all the needs and configurations for your application. These platforms manage the configuration of your server behind the scenes. This is how in serverless computing, one is able to just focus on the application or code itself being built or deployed.
Consider Liquid Web’s Managed WordPress platform. When a WordPress application is deployed, instead of spinning up a server, downloading WordPress, or setting up a database, all you do is pick a name for your site, fill out a few other details such as the username and password for the application and hit the create button. In the background, all of the services that are needed to run WordPress are installed automatically by the platform. Now that you have a working WordPress install that’s ready to go, there is no need to do anything else but start working within the application.
Microservices are a modern architecture for building and deploying a complex application using serverless computing. Most cloud platforms that practice serverless computing are focused more on the developer and development teams, but the focus with serverless architecture is on the application itself.
Because we can run an entire web application on a serverless platform, we can have the core application, along with the database and any other needed services attached to our app, and all running on the same distributed environment. FaaS (functions as a service) take the abstraction of servers one step further. FaaS allows you the ability to deploy software much easier as it concentrates on the services themselves as opposed to the server platform. Unlike serverless computing, FaaS provides the ability to skip the worry of server setup and configuration. FaaS (Functions as a Service) also affords us the ability to forego the application installation and configuration as well!
With FaaS, you concentrate on just a single function or piece of code that would run a larger application that would be triggered by an outside prompt. These functions need to be small and do one thing, like the microservices mentioned earlier. In a microservice methodology, every service is in charge or responsible for doing only one thing. The same is true for functions as a service; each function is in charge of a single task.
A good example of a FaaS service is Amazon’s lambda. A simple use for a FaaS function may be resizing an image in your AWS S3 bucket. All that would be needed is set up a few permissions, identify a trigger, and write the code that resizes the image. If we didn’t use lambda’s FaaS functionality, a full application would be needed to complete this same task.
Now that we have discussed the technology a bit, let’s look at some advantages and disadvantages of each. Let’s start with serverless computing.
- There is no server configuration needed when deploying an application.
- Most serverless computing services or systems are easy to scale. Thus they can offer more flexibility if an application needs to expand or contract.
- Serverless is typically less costly than using a traditional server-based hosting method. This is due to the flexibility of the platform management behind the scenes.
- A disadvantage of using serverless computing is the loss of server control. When using this option, some providers will not allow access to the server or allow server specifications to be altered.
- In some cases, serverless can be more expensive depending on the type and number of calls being made. The API pricing can be much higher if using the API gateway extensively.
Now let’s look at some advantages and disadvantages for FaaS (functions as a service).
- Efficiency: There is no need to write an entire application if you are looking to accomplish one small task.
- Low Cost: In a FaaS system, the small piece of code only runs when it is triggered, so you only pay for what you use.
- Speed: As demand increases, it is easier to build out and replicate a single function versus replicating an entire application.
- Scalability: Again as demand increases, it is easier to scale a single function as opposed to an entire app.
- The functions need to be small and only complete one task.
- Managing a large number of functions can be tricky.
Let’s go over some scenarios when serverless computing would be a good choice to use instead of FaaS.
Say you need to deploy an extensive eCommerce application. It would be easier to build and deploy just one application that did all of the work of laying out products, managing the cart, and configuring the payment system. When you deploy a system as complex as this with so many moving parts, it becomes much more manageable to keep all the logic within a single deployable application.
In this case serverless would be the way to go. Even if your eCommerce store grows, the serverless computing service will scale your application to accommodate the need. Additionally, your application will always be running and ready to take on new orders. Other examples would be if you need to run a large blog or a mission-critical database. So any application that is complex in nature and large it’s best to choose this option.
So when would it be a good choice to use a FaaS approach?
Functions as a service are good for data processing and real-time actions. Let’s say daily sales data is needed to help manage inventory. Every time a customer buys an item, it gets added to a database table. A FaaS function would be a good candidate to trigger a function within that database table, process the data of what was bought and either display it to a manager or even trigger another function to order more of that product. FaaS is a good choice for anything that requires real-time processing that can be packaged into a single code function.
Both serverless and FaaS are excellent cloud computing tools that can be used together or separately to fulfill the need for a given task or product.
More FaaS info coming soon and how it can benefit you!
Care to find out more about FaaS or Serverless computing?
Our Solutions and Support Teams are standing by with intimate knowledge of these and other web hosting technologies that can be utilized to improve your business processes especially those discussed in this article. If you would like to learn more about the information outlined above, give us a call today at 800.580.4985, or open a chat or ticket with us right now!