Serverless in Context
Getting the Most From Azure Functions
*** A newer, updated version of this course is available here. ***
An Introduction to Azure Functions
Serverless Computing has emerged as a capable and low-friction means to execute custom logic in the public cloud. Whether you're using Amazon Lambda, Google Cloud Functions, or Azure Functions, you have a wide variety of target languages, ecosystem integrations, and deployment mechanisms to choose from. All this while leaving the heavy lifting of server provisioning and maintenance to the experts, which gives you plenty of time to focus on your differentiated application functionality.
In this "Introduction to Azure Functions" course, you’ll learn how to build Azure Function applications in the cloud. You'll discover the core feature set of Functions and see how to integrate with a variety of sibling Azure services. You'll explore Function topics like security, monitoring, deployment, and testing best practices. You'll also learn about ideal Functions use cases and the pricing model. Finally, you'll learn about how we've arrived at the serverless computing model, and where serverless is likely to go in the future. By the end of this course, you’ll have a solid foundation to continue exploring Functions on your own, and incorporating Azure Functions capability into your work.
An Introduction to Azure Functions: What You'll Learn
|Lecture||What you'll learn|
|Intro||What to expect from this course|
|Serverless Computing In Context||Understanding what serverless computing is, and how we got here|
|Core Features||A high-level overview of what Azure Functions is, and its basic capabilities|
|Creating Your First Function||A demo of creating your first function in the Azure portal|
|Security||A review of security features in Azure Functions|
|Using API Key Management||A demo of configuring an Azure Function to require API key use|
|HTTP Proxies||A discussion of lightweight HTTP Proxy support|
|Proxying Azure Blob Storage||A demo of using Functions' HTTP Proxy support to front Azure blob storage|
|Triggers and Bindings||Event-based triggering of functions and declarative binding of inputs and outputs|
|Triggering on Queues and Binding to DocumentDB||A demo of Triggering with Azure Queues and Binding Function Output to DocumentDB|
|Testing and Debugging||Tools and techniques for working with Functions during the development cycle|
|Deployment||Options for deploying Azure Function apps into production|
|Deploying From a Local Git Repo||A demo of deploying a complete Azure Function app to the cloud, from a local Git repository|
|Monitoring||Tools for monitoring Azure Functions during dev, test, and release|
|Use Cases||A discussion of ideal use cases for serverless compute and Azure Functions|
|Pricing||A review of how Functions are priced, and a demo of determining price using the Azure Pricing Calculator|
|Serverless in the Future||A short discussion on the future of serverless in the cloud|
|Summary||Course wrap up|
If you have thoughts or suggestions for this course, please contact Cloud Academy at email@example.com.
Azure functions have two pricing models to choose from. This choice is made when you create the application container in which one or more functions will live. It cannot be changed after this time.
The first model is a legacy of functions reliance on the Azure App Service as a foundation. The App Service plan provides dedicated VM resources on which your function app will reside and execute. This plan works well for function apps that will execute continuously or at least very frequently, and/or in situations where you have existing, under-utilized App Service VMs on which you could deploy a new function app. The cost of this plan is a function of both the size of VM you choose, and the number of VMs used, if your application is scaled out.
The second model is a consumption-based plan which isolates your application from underlying VM cost. What you pay is a function of the number of invocations and the average amount of RAM used across the total execution time for all functions in a function app. This is a metric known as gigabyte seconds. In this model Azure will detect the need to scale out execution across multiple VMs as request load demands. In addition, multiple simultaneous function invocations will run in parallel to optimize provisioned capacity. This model fully abstracts the underlying infrastructure and let's you focus exclusively on your desired business logic.
Okay, so once we arrive at the pricing calculator, can click on the Add Items button. We'll navigate to compute, and then functions. Click on the estimate.
Once we get to the Functions window you can specify the average memory size. I'll just pick one, something just south of a gigabyte. We'll pick an average execution time of one second, and just to make this interesting we'll pick oh, three million or so executions in a given month. You can see that you get a certain amount of execution capacity for free in a given month, so anything beyond that is what you are paying for. And you can see with this configuration we'll be charged just south of 30 dollars US per month.
So, the nice thing about this calculator is that you can use this to compare and contrast the cost associated with running your functions using the Consumption Plan versus the App Service Plan. So, if I wanted to click on App Service real quick, I can look at that as well, and you know, if I just kinda have a standard configuration here, and I'll just say it's the standard App Service tier, maybe an S2 configuration, something like that. You can already see that even with just a single instance, and I'm running at 744 hours per month which is essentially the entire month, you can already see that I'm at almost 150 dollars US per month, which is five times as much as what my Consumption Plan was going to cost me. So, this allows you to kind of play with the numbers a little bit and decide which option is ideal for you.
Again, the Consumption Plan is very useful if your functions will only be running intermittently, and not continuously or very frequently throughout a given month. So again, this calculator will let you make those determinations.
About the Author
Josh Lane is a Microsoft Azure MVP and Azure Trainer and Researcher at Cloud Academy. He’s spent almost twenty years architecting and building enterprise software for companies around the world, in industries as diverse as financial services, insurance, energy, education, and telecom. He loves the challenges that come with designing, building, and running software at scale. Away from the keyboard you'll find him crashing his mountain bike, drumming quasi-rythmically, spending time outdoors with his wife and daughters, or drinking good beer with good friends.