Welcome to this demo on Oracle Functions, our managed serverless offering. To get started, click on the "Services" navigation menu here, and click on "Developer Services" and then under that you'll see link for "Functions", so click on that. This would bring up the co-creating Oracle Function. First thing you have to do is you need to create what is called an application. In Oracle Functions, an application is a logical grouping of functions. When you define an application, you specify the subnets in which to run the functions, and you also specify whether to enable logging for the functions in the application. Let me go ahead and create this application here and I would say this is my first app, and as you can see here, it picked a VCN which I have been using in other demos, and it's picking up private and public subnet and [inaudible] Public Subnet, and I can also do remote things like tagging and logging and all that as we can see later. I'll click "Create" here and this now creates my application. Now we need to write what these things are called as functions, and it's a best practice to group multiple functions in a single application for better efficiency and performance, that's why you create application first, and then you create many functions still in there. What are these functions? Functions are small but powerful blocks of code and generally do one simple thing. The whole notion of microservices, they perform one single task. Now these functions are stored as docker images in a specified docker registry, article Container Registry. I've already created one, I'll show you and these functions are involved in response to a CLI command or a signed HTTP request. Let's proceed and create some functions here. Now before we get started, one thing which we have done to make things much seamless, is we have indicated the function CLI with the Cloud Shell and then we'll be using that to run this demo. You could also do it as a local setup because in the background it uses Docker images, so Containers. You could actually set it up on your local machine and you can go forth from there and we can see all these instructions to follow. In this particular demo, I'm going to use Cloud Shell because it's just so much easier. First thing I need to do is bring up my Cloud Shell and right here it's asking me to set some context. Let me just, the context and see what it is. Now I'm the sanjose region, so I'm going to use this particular region as my context and then it's also having the sandbox compartment. That's the compartment which we have been using, let me just specify that as well, and you can see now that I give the ocid and now I'm in the sandbox compartment. It's asking me to update the context with the location of the registry we want to use, and this registry, I have already created. I'll show you really quickly. It's called fn and it's part of my tendency in the US for sanjose region and now it's updated here. Now it's asking me to generate an Auth Token and login to the registry using the Auth Token as my password. Let me just click here, "Open this link in a new tab". I already have one Auth Token but let me generate another one, and this is the Auth Token it generates. Then we copy it. Come back here and I need to login to the Registry with the Auth Token as my password. Let me just click this command here. I just clicked the command, now it's going to ask for the password. We can get the password from here, and put the password and you will see that my login has succeeded now if I list my apps, I should be able to look at the app. We just created my first app, and this should show up here. As you can see here, my first app is shown here. After this what we need to do is we need to create, deploy and invoke your function. What does that all mean? When you deploy a function, the Oracle Functions for service, using the Fn CLA, the one which we have been using, the function is built as a Docker image and is pushed to a specified Docker registry. When the function is invoked for the first time, Oracle functions service pulls the functions Docker image from the specified Docker registry, runs it as a docker container and executes the function, meaning executes the code which is there. If there are sub-sequential requests on the same function, Oracle Functions directs those requests to the same container, and as you can guess after here being idle, the Docker container is removed and you just paperback location, the function is running. Now this is a boilerplate, it is straight forward function, but you get an idea. Let me just share the screen. We create this boilerplate function and then we need to get to this particular directory which as you can guess, function has support for multiple runtimes. In this one, we are using a Java runtime. You could use Python or something else. Now we're going to deploy our function. As you can see here, now when we deploy, the function is built as a Docker image and pushed to the specified Docker resist chambers. This all gets done, I'll show you the Docker registry, I can just show you right now. If I come here and I click on "Registry", you can see my Container Registry and this I created beforehand and you can see that this is my Registry which I have been using for this particular demo. It's building the function as a Docker image and it's pushing to the specified end of registry. Let's just build it up for seconds and it should be done. As you can see here, my function deployment is complete and we said the Function is build as a Docker image and goes to the specified Docker registry, and now I need to involve this function. Let me just type the command for doing that and if the location was successful, you will see probably it prints out Hello World or something. As we discussed earlier, when function is invoked for the first time, the servers Oracle function, pulls the functions Docker image from the specified Docker Registry then it goes to the Docker container and then executes the function. Let's give it a few seconds, and see what output it comes back with. As you can see here, it took a few seconds and now it printed the Hello World message here. Now I understand it's really basic, but just gives you a quick flavor of how you could create, deploy and invoke your function, which are basically these small but powerful blocks of code that generally do one simple thing, as part of this whole microservices architecture. I hope you've found this useful. Thanks for your time.