Creating serverless applications is a multi-step process. One of the critical steps in this process is packaging the serverless functions you want to deploy into your FaaS (Function as a Service) platform of choice. Before a function can be deployed it needs two types of dependencies: direct function dependencies and runtime dependencies.
Let’s examine these two types. Direct function dependencies– These are objects that are part of the function process itself and include: Runtime function dependencies– This is data related to the runtime aspects of your function. It is not directly required by the function but configures or references the external environment in which the function will run.
For example: Event message structure and routing setup Environment variables Runtime binaries such as OS-level libraries External services such as databases, etc. External services such as databases, etc. For a function service to run, all dependencies, direct and runtime, need to be packaged and uploaded to the serverless platform.
Today, however, there is no common spec for packaging functions. Serverless package formats are vendor-specific and are highly dependent on the type of environment in which your functions are going to run. This means that, for the most part, your serverless applications are locked-down to a single provider, even if your function code itself abstracts provider-specific details.
Source: cncf.io