Hi. In this module, we'll cover the function service concepts. What is a functions application? Functions application is a collection of functions. It is attached to the customer's Virtual Cloud Network, which is VCN and subnet. This is used for network egress. Application is also a unit of workload isolation. You can enable, disable logs, function traces, and set common environment variables or function configuration. What is a function? A function is a container image that is stored in a container registry. Metadata. Metadata contains the image location, the function memory, function timeout, and any configuration parameters on environment variables required for the functions execution. Fn CLI is a command line tool that is used to manage functions. It has various commands that help you build, package function code as a container image and then push the image to a container registry. It also has commands to generate boilerplate function code or languages such as Java, Python, Node, Go, and Ruby. What is the fn init command? The fn init command generates boilerplate hello world function. You can provide the runtime as a parameter. You can select runtime as Java or Node or Python or Go or Ruby or Docker. In this example, we have given Java as the runtime language. You can see the generated boilerplate Java hello world function. Let's look at the fn deploy command. The fn deploy builds the container image using a multi-stage Docker build. It pushes the container image to a registry, in this case, the OCI Container Registry or OCIR. Then it creates or updates the function metadata but it keeps a pointer to the function image in OCIR. Let's look at the function configurations. As a user, you have control on the function memory. You can select one of 128 MBs, 256 MB, 512 MB, or one GB for your function memory. The next parameter that you can configure is the function timeout. Today, Oracle function supports a maximum of five minutes or function timeout. The other configuration parameters that you can specify are environment variables, which you can define at the function or the application level. Then within your function code, you can access these parameters at runtime. The function service will ensure that the values are sent into your functions and they're available for you to consume. Examples of environment variables are database username, password, secrets which are used to access REST APIs, and so on and so forth. The other configuration is the function service limit. Today there are three service limits. One is the number of functions, the number of applications, and the overall function concurrent execution memory. All three limits are soft limits. You can easily raise a service request from within the OCI console to get these limits increased. Moving onto functions observability. There are key three pillars; metrics, logs, and traces. The function service supports all three. First, the function metrics. The function service collects metrics and sends it to the OCI monitoring service. You can easily view metrics in the OCI console. Function service integrates with OCI logging and sends your function logs to the OCI logging service by default. To generate logs, you need to have print statements, or log statements inside your function code. You can also send logs to a third party service using sys log endpoints within the function service. Function service can also generate and send traces to the application performance monitoring service in OCI. We have a troubleshooting guide in our service docs that has the list of error codes with the description and the resolution steps to help you troubleshoot functions. Using other services from functions. A function can use other services in OCI like objects, storage, secrets, compute, network, and several others or it can access services on the public internet. Functions supports finding access control. You can use functions resource principles to control what your functions can access. For example, if a function needs access to read an object storage bucket, you can put the function in a dynamic group and create a policy to allow that dynamic group to read files from that object storage bucket. Functions can access any service in OCI using a private subnet and the service gateway. Similarly to access a public service, you can have an Internet gateway in your VCN and subnet configuration.