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 firstname.lastname@example.org.
Let's now touch on some additional topics to help you get the most from serverless computing and Azure Functions.
There are several potential use cases for Azure Functions.
First, functions make a great foundation on which to build lightweight microservices. The HTTP trigger and request binding makes it simple to execute function code in response to an incoming web request. Features like proxy support and OAuth authentication make developing APIs straightforward and productive. And in particular, as an ASP.net web API, or Node.js developer, you'll feel right at home as the .NET and Node function templates for HTTP triggers are very similar to code you've been writing already.
Functions are also great for discreet, one-off logic needed to tie together various pieces of a custom devops pipeline. Perhaps you need to refresh a master testing database during an automated test cycle or restart a cloud virtual machine after updated bits are pushed onto it. Most continuous integration and deployment tools provide standard actions you can invoke during a build. But functions are great for filling in any gaps that might exist. The list of possibilities here is virtually endless.
Similar to the above, timer-based jobs that run on a schedule are also a sweet spot for functions. Nightly data imports from Blob storage to an Azure SQL database with custom transformation lodge concluded is one such example. Another might be periodically aggregating log information from a known troublesome app and sending SMS notifications for anomalous observed behavior. Here again, the possibilities are open-ended.
One final use case I particularly like is to invoke functions based on specific event occurrences. These can be infrastructure related, like the creation, removal, or update of an item in Azure storage. It can also be in response to application level events you emit to a well known messaging layer, like Azure service bus or storage queues, as just two possible examples. In this way, functions act as asynchronous and autonomous event handlers in your application domain, which can be a very valuable pattern in cloud-based, event-driven applications.
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.