From 0b93ae5e50110dbf0c95c6ba6bb8e38c226298fa Mon Sep 17 00:00:00 2001 From: Felixnoo Date: Wed, 2 Mar 2022 10:46:52 +0800 Subject: [PATCH] Add EN Blog: Serverless vs FaaS Signed-off-by: Felixnoo --- content/en/blogs/serverless-vs-faas.md | 96 ++++++++++++++++++ .../en/serverless-vs-faas/serverless-faas.png | Bin 0 -> 29336 bytes 2 files changed, 96 insertions(+) create mode 100644 content/en/blogs/serverless-vs-faas.md create mode 100644 static/images/blogs/en/serverless-vs-faas/serverless-faas.png diff --git a/content/en/blogs/serverless-vs-faas.md b/content/en/blogs/serverless-vs-faas.md new file mode 100644 index 000000000..8cda396ef --- /dev/null +++ b/content/en/blogs/serverless-vs-faas.md @@ -0,0 +1,96 @@ +--- +title: 'Serverless vs. Function-as-a-Service: Which One to Choose?' +tag: 'Serverless, FaaS' +keywords: Serverless, FaaS +description: This article explains the concepts of serverless and FaaS to discuss how to choose the right one for your business. +createTime: '2022-03-02' +author: 'Felix' +snapshot: '/images/blogs/en/serverless-vs-faas/serverless-faas.png' +--- + +The constantly-expanding cloud computing landscape has encompassed many emerging technologies. You’ve probably heard of serverless and Function-as-a-Service (FaaS) if you are a practitioner in the cloud computing field. These two concepts are sometimes used interchangeably. However, we should also be aware of the differences between them so that we can choose the one that better suits our needs. + +In this article, we will take a look at these two technology concepts to figure out how to pick the better one for yourself. + +## What is Serverless + +### Overview + +Serverless is a cloud computing model where cloud providers manage the cloud computing infrastructure required for providing resources according to customer needs. In the context of serverless, servers still exist, but developers don’t have to spend their time and energy on managing these servers. Serverless allows developers to focus on developing serverless applications and implements autoscaling based on the resource consumption by serverless applications. + +### Serverless use cases + +According to [the CNCF serverless whitepaper](https://github.com/cncf/wg-serverless/blob/master/whitepapers/serverless-overview/cncf_serverless_whitepaper_v1.0.pdf), serverless should be considered in many use cases. To list a few: + +- Data processing +- Stream processing at scale +- Parallel or scheduled jobs +- Web applications + +### Advantages + +To put it simply, Serverless has the following advantages: + +- **Maintenance free**: As mentioned above, serverless allows developers to focus on writing code rather than managing infrastructure, which enables developers to optimize their business logic and achieve innovation. +- **Better scalability**: Serverless applications can be automatically scaled according to usage increase or decrease. Therefore, serverless applications can handle both the high and low number of requests with dynamic resources. +- **Cost-effective**: In a serverless context, customers pay for what has been consumed only, starting when a request is made and ending when the corresponding execution finishes. + +### Disadvantages + +Although serverless can be helpful for developers, it also brings some disadvantages. To name a few: + +- **Lack of custom control**: As the infrastructure is managed by cloud providers, customers cannot access the underlying infrastructure for custom configuration. Besides, it is also difficult to do testing or debugging before releasing serverless applications because the serverless environment cannot be reproduced. +- **Performance issues**: Despite the fact that serverless can do autoscaling, some code may be running in a constant manner while certain code is not running because of zero request. The startup time for such idle code may affect the overall performance. +- **Tricky cost**: Serverless is not meant for long-running processes, which means it could cost more to run an application with long-running processes in a serverless infrastructure than in a conventional environment. + +## What is FaaS + +### Overview + +Function-as-a-Service, or FaaS, is a serverless way to run functions in any cloud environment. With the help of FaaS, developers can focus on writing function code without the need to build and maintain the required infrastructure. You can consider building an application in this model as an implementation of the serverless concept. FaaS is mainly used in an event-driven computing context where functions are triggered by a specific event such as message queues, HTTP requests, etc. + +### FaaS use cases + +As the need for [transforming a conventional application into microservices](https://kubesphere.io/blogs/transform-traditional-applications-into-microservices/) is attractive to developers, FaaS suits quite well in such a process where developers divide their monolithic applications into small pieces of code. With FaaS, developers can focus on writing pieces of code that represent separate services to be run as FaaS functions, and a single microservice can be a combination of multiple functions. Therefore, FaaS is especially useful in microservice-based application development. + +### Advantages + +FaaS has its own advantages as follows: + +- **Faster development**: With FaaS, developers can focus on improving business logics and writing function code. Moreover, developers can write only pieces of code for required functional components rather than writing complete applications. +- **Innate scalability**: Code written in the FaaS context is innately scalable. You don’t have to worry about preparing contingency plans for a high number of requests because functions can be easily scaled up or down to meet user demands. +- **Less cost**: With FaaS, you only have to pay when the function is triggered and executed, without the need to spend any money on unnecessary cloud resources. + +### Disadvantages + +The disadvantages of FaaS mainly lie in: + +- **Limited functionality**: The functions in FaaS are small pieces of code used to accomplish simple tasks. If you want to write complex functions, FaaS may not be your best choice. +- **Difficulty in function management**: Since you will be developing small pieces of function code, it could be difficult to manage a large number of functions as your business continues to grow. +- **Data storage**: Functions in FaaS are mainly for running stateless workloads. How to find a way to store the data would be an issue if these functions have to call other stateful workloads. + +## Which One to Choose + +Serverless can be used in a wider range of functionalities, while FaaS focuses on providing an efficient way for the development of functions. As your business continues to grow, you may need to find yourself more tools to manage the functions, whereas this issue could be avoided if you choose other relatively complex serverless solutions with more components. + +Serverless offers more comprehensive solutions, while FaaS brings more flexibility. How to make the choice is always related to your practical needs. Moreover, it is not necessary to draw a line between these two. We can still decide to use them both if that suits our needs. + +### Serverless and FaaS providers + +There are a lot of serverless and FaaS providers available nowadays. For example: + +- AWS Lambda +- Google Cloud Functions +- Azure Functions + +Although many cloud providers have their serverless or FaaS solutions ready for developers, it is possible to face the issue of vendor lock-in after you run your business functions on a single platform. + +### Open-source serverless/FaaS alternatives + +In recent years, many outstanding open-source projects (such as [KEDA](https://keda.sh/), [Dapr](https://dapr.io/), [Cloud Native Buildpacks (CNB)](https://buildpacks.io/), [Tekton](https://tekton.dev/), and [Shipwright](https://shipwright.io/)) have emerged in the cloud-native Serverless-related fields. It is not easy to select the appropriate tools and put them together to build your own serverless solution. + +Thus, [OpenFunction](https://github.com/OpenFunction/OpenFunction/) comes as a cloud-native open-source FaaS platform aiming to let you focus on your business logic without having to maintain the underlying runtime environment and infrastructure. It can be easily deployed to your Kubernetes cluster. You can generate event-driven and dynamically scaling serverless workloads by simply submitting business-related source code in the form of functions. + +## Recap + +Both serverless and FaaS solutions present high value to developers working in the current technology landscape, especially the cloud-native landscape. With all the available serverless/FaaS options, we just need to think about our real needs and find the most appropriate solution in practice. \ No newline at end of file diff --git a/static/images/blogs/en/serverless-vs-faas/serverless-faas.png b/static/images/blogs/en/serverless-vs-faas/serverless-faas.png new file mode 100644 index 0000000000000000000000000000000000000000..da0b1464143fcee74aa71a3d4a00dee889ce176f GIT binary patch literal 29336 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 b`BkU0m+TKmYzen5A-p literal 0 HcmV?d00001