Introduction
Let's imagine that you are developing a complex application with many functions in one cloud provider. It may not be feasible to move to another cloud provider, even if the new one is cheaper, faster, or more secure. This situation of vendor dependency is known as vendor lock-in in the industry, and it is a very critical decision factor in the long run. Fortunately, serverless frameworks are a simple and efficient solution to vendor lock-in.
In the previous chapter, all three major cloud providers and their serverless products were discussed. These products were compared based on their programming language support, trigger capabilities, and cost structure. However, there is still one unseen critical difference between all three products: operations. Creating functions, deploying them to cloud providers, and their management are all different for each cloud provider. In other words, you cannot use the same function in AWS Lambda, Google Cloud Functions, and Azure Functions. Various changes are required so that we can fulfil the requirements of cloud providers and their runtime.
Serverless frameworks are open source, cloud-agnostic platforms for running serverless applications. The first difference between the cloud provider and serverless products is that their serverless frameworks are open source and public. They are free to install on the cloud or on on-premise systems and operate on their own. The second characteristic is that serverless frameworks are cloud agnostic. This means that it is possible to run the same serverless functions on different cloud providers or your own systems. In other words, the cloud provider where the functions will be executed is just a configuration parameter in serverless frameworks. All cloud providers are equalized behind a shared API so that cloud-agnostic functions can be developed and deployed by serverless frameworks.
Cloud serverless platforms such as AWS Lambda increased the hype of serverless architectures and empowered their adoption in the industry. In the previous chapter, the evolution of cloud technology offerings over the years and significant cloud serverless platforms were discussed in depth. In this chapter, we will discuss open source serverless frameworks and talk about their featured characteristics and functionalities. There are many popular and upcoming serverless frameworks on the market. However, we will focus on two prominent frameworks with differences in terms of priorities and architecture. In this chapter, a container-native serverless framework, namely Fn, will be presented. Following that, a more comprehensive framework with multiple cloud provider support, namely, the Serverless Framework, will be discussed in depth. Although both frameworks create a cloud-agnostic and open source environment for running serverless applications, their differences in terms of implementation and developer experience will be illustrated.