Function as a Service or FAAS we do love our abbreviations. FAAS is a set of functions that are short lived and single responsibility and have the ability to scale well. The big part of Functions as a service is they are part of serverless, this doesn't mean there isn't a server it just means the server is not your problem.
Some of the properties of Function as a service are
- Short lived functions - AWS Lambda has a timeout of 1 second.
- Single Responsibility - A Function should only do 1 thing.
- Event Driven - A function can respond to a HTTP Trigger like a Webhook, a schedule and timer or a Service bus message.
- Scale easily with traffic spikes
This is the first post in a series on FAAS in general but starting with Azure Functions.
Azure functions are Microsofts FAAS offering and what we will start to explore.
With Azure Functions you can write functions in C#, F#, Node.js, Python, PHP, Batch, Bash and an executable. Functions have full support for Nuget and NPM. Easily integrate to other Azure services.
Azure functions have two price plans, app service plan so it would be tied to your existing plans or consumption and you only pay for what you use.
With Functions you pay per second X number of executions.
Lets get creating some azure functions. Open the Azure Portal
Click on New and in the market place type in Function App (it's filed under Compute in the marketplace if you just want to click it)
Once you select this we can create our first function app. This isn't the functions it's a host for our functions. Think of it like setting up an Azure App Service.
Now we create our function app. We give it a name, select the Resource Group and Subscription as we do with most things in Azure.
Hosting Plan we have two choices,
- Consumption Plan
- App Service Plan
With an App service plan our function is tied to the currently running app services.
Consumption plan is just what it sounds like you pay for what you use. Per Second per request. I won't go into the details here if you go to the Azure Pricing Calculator you can find out more.
All Azure functions need a storage account and they can be integrated to Application Insights.
Hit create and deploy our new Azure Function.
Next we need to add the menu item to the side bar on our portal. It's not there by default.
Click "More Services" on the bottom of the side bar
Search for "Azure Functions" and click the Star to add it onto the side bar and then you can move it where you want.
Once our Function app has deployed we can start creating functions.
Let's create a quick function and see it all in action.
Along side functions Hit the plus to create a function
For your first Function you will see the Azure Function quick start panel.
We'll create a web hook Function, this is a HTTP Trigger function, I'll cover the triggers in another post.
Create this function.
Ok we now have a function, our screen in the portal is in 3 sections
- We our editor which by default is loading the code for our function.
- Below this we have our logging output.
- Next to this on the left we have "Files" and "Test"
The file "run.csx" is our code. Azure functions are scripts. In this case I have a csharp script.
Select "Test" on the left side to open the test panel.
This makes a POST request and sends a request body with "Name": "Azure" this is the default test.
Below that you can select Run and the output will show "Hello Azure"
You can also test it from an API testing tool like postman (for more on postman and api testing check out my post API Testing with Postman)
Click on "</> Get Function URL"
Copy this url and open Postman or any API testing tool
Set the web method to POST and enter the URL from the function.
Select Body and go to RAW, set the application content type to "JSON(Application/json)"
And then enter the RAW body of
Click send and then we will get a response of "Hello James"
That's it you have created your first function.
This is the first post in a series on FAAS, focusing at first on Azure Functions.
Over the course of these posts we will cover
- Different triggers.
- Passing more information.
- Nuget Packages.
- Working with Visual Studio.
- Connecting to other services including SQL and Azure tables.