Introducing Azure Functions

Posted on 31 March, 2016

Nir MashkowskiPartner Director of Program Management, Azure App Service

Cloud development is evolving

Data is everywhere. It's in the Cloud, on-premises, and is increasingly proliferating across Internet-connected devices. Organizations are working to unlock the value in that data, and are asking their developers to respond with highly-scalable solutions built on ever-compressed timetables. Solutions which often require developers implement on demand or scheduled batch jobs to reconcile transactions, ingest and process data, or react to events in real-time.

These demands are forcing cloud development paradigms to evolve to offer simplified and scalable event-driven solutions. Developers are looking for ways to abstract away common problems and concepts of cloud applications; freeing them to focus on writing code to solve real problems in a high-speed, data-driven world.

Azure Functions summary

Today, Microsoft is announcing Azure Functions. Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in Azure or third party service as well as on-premises systems. Azure Functions allows developers to take action by connecting to data sources or messaging solutions thus making it easy to process and react to events. Developers can leverage Azure Functions to build HTTP-based API endpoints accessible by a wide range of applications, mobile and IoT devices. Azure Functions is scale-based and on-demand, so you pay only for the resources you consume.

In addition to supporting Continuous Deployment and Integration, Azure Functions provides an intuitive, browser-based user interface allowing you to create scheduled or triggered pieces of code implemented in a variety of programming languages.

A wide range of triggers and connectors allows developers react to events in Azure services. Data processed by Azure Functions can persist into Azure data services such as Azure storage, Azure SQL DB and Document DB.

How it works

A robust developer experience

Developers using Azure Functions can implement events in a variety of languages (JavaScript, C#, Python and PHP), as well as scripting options like Bash, Batch and PowerShell. Also, developers can upload and trigger pre-compiled executables. Each Azure Function is provisioned with a Git endpoint allowing for seamless local development and Continuous Integration using services like Visual Studio Team Services, GitHub and BitBucket. Developers can monitor and troubleshoot Azure Functions with logging capabilities included in the Azure Functions experience.

A wide range of triggering options

Azure Functions can be triggered in many ways, including a pre-defined time by leveraging CRON expressions, by changes in Azure Storage Blob containers, changes to Azure Queues, messages from Service Bus, and HTTP triggers. With HTTP support, Functions can react to events emitted in virtually any SaaS products that support Web Hooks. They're all easy to set up and require minimal configuration.

An innovative way of accessing and processing data

Azure Functions make it simpler than ever to not only trigger code based on data in other services, but also to access and process that data. With Functions bindings, developers can simply interact with other data sources and services through their Function without worrying about how the data flows to and from a Function. Bindings make tasks like adding a message to a queue or fetching a Blob as simple as passing JSON to a Function output variable or reading the Blob from a Function input variable. With this capability, developers need to know very little about the underlying services they're interacting with, making it simple to swap out later for a different services.

“Serverless” execution model

One of the core value propositions of PaaS solutions is the abstraction of the operating system layer from the code. The underlying platform provides pre-configured operating system images that don’t require any patching or maintenance and can be auto-scaled based on application load. Azure Functions extends the PaaS concept by providing developers with complete abstraction from the underlying infrastructure through a pay-per-execution billing model that automatically scales based on trigger invocations. More information on Functions pricing is available here.

Open source runtime that runs anywhere

The Functions runtime, templates, UI and underlying WebJobs SDK are all open source projects being developed publically. The Azure Function runtime will be portable so you can run Functions anywhere - on Azure, in your datacenter or other clouds.

Other benefits

Azure Functions allows developers to leverage a large set of developer productivity features, such as deployment slots, easy-auth, and many more. Customers that require fine-grained control over their application containers can run Azure Functions on traditional App Service plans such as App Service Environments (ASEs). Additionally, customers who have applications, APIs, or databases deployed inside their corporate firewall can leverage Azure technologies, such as Hybrid Connections or VNET, to trigger Azure Functions from on-premises resources or persist data from Azure Functions into on-premises systems.

Getting started

To get started, go to the Azure Functions portal and follow the instructions. It starts by asking which scenario you’d like to address.

Once you’ve chosen an option, you’re dropped into the Azure Functions dashboard, where you can write code, configure events, monitor executions, and manage other general settings.

The in-browser code experience makes it easy to write in all the languages that Azure supports. Here you can see JavaScript and the next step in the in browser tutorial.

Configuring and managing your event and bindings is also a simple process using the Events and Data page.

Looking forward

Azure Functions is entering preview today, and will be available to all Azure customers and those using our trial experience. The feature backlog is available on our GitHub page. New features will be released in the coming months, and your feedback is greatly appreciated. Submit your comments on the Azure UserVoice site. Help us transform the way you think about building applications in the cloud by using Azure Functions.