What is Microsoft Azure Functions and how does it compare to Azure Automation?

As Microsoft Azure continues to be developed and more automation options become available; Azure Automation, Logic Apps, ARM (Azure Resource Manager) and Azure Functions to name a few, the question is quickly turning from ‘how do I automate with Azure?’ to ‘what automation type do I use in Azure?’. Across our next few blogs we will seek to delve into the options available and look to define how they stack up against Azure Automation.

What are Azure Functions?

Azure Functions are a Serverless compute, Platform as a Service (PaaS), component that provides an event-driven compute-on-demand programming model. Like Azure Automation and Logic Apps it can help you automate and orchestrate tasks, business processes, and workflows.

Azure Functions are small code components that execute in the cloud, they are aimed primarily at developers rather than automation engineers. That doesn’t mean that you can’t exploit them as part of an automation solution, just expect a steep learning curve unless you are familiar with writing code in one of the supported languages.

Azure Functions are event driven. The initial event that invokes the function can come from a variety of sources for example a HTTP trigger, the creation of a file in a blob store or event subscription from event hub. Typically, these are not events that have been directly created by an end user, instead the Azure Function is a sub component within a larger data flow.

What are the benefits?

Like Azure Automation, the upfront costs for Azure Functions are typically quite low due to the cheap running costs of Microsoft Azure, and the Pay-per-use pricing model for Azure Functions.

Azure Functions offer a choice of languages (C#, F#, or JavaScript) with a longer list of experimental language support (including PowerShell, and Batch files). The development model is flexible and functions runtime is Open-source.

Azure functions can be integrated with Azure Services and software-as-a-service (SaaS) offerings see Integrations.

Disadvantages?

Like Azure Automation and Logic Apps, Azure Functions facilitate serverless workloads, however Azure Functions is a serverless compute service, rather then serverless workflow.  Azure functions are better exploited as a low-level component, rather than managing the overall flow of an Orchestrated solution. For example the best practices for Azure Functions recommends avoiding large, long running functions.

With the focus on developers and the writing code, rather than the visual approach of Graphical Azure Automation Runbooks or logic apps, there will be a high development effort to build, support and deploy an Azure Function solution.

What is Azure Automation

Azure Automation is a cloud service that provides a cost effective, utility priced Automation as a Service platform that allows you to automate all those error prone, time consuming IT tasks, improving efficiency and lowering your operational costs.

Azure Automation is compatible with multiple vendors, multiple cloud platforms and on-premise systems and is based on PowerShell so has a huge reach of integration opportunities.

Benefits

As Azure Automation is a Cloud Service deployment is simple and speedy and can be setup worldwide at the click of a button.

Azure Automation has a very low upfront cost, as it is charged on a pay-as-you-go model, where costs are only incurred whilst automation is executing and as Microsoft provide you with the first 500 minutes free this significantly minimises your initial outlay to achieve automation benefits.

With over 300 PowerShell Integration Modules available there are a lot of options when it comes to integration covering both Microsoft products and services and other companies’ services.   Increasingly vendors are releasing PowerShell modules for their existing platforms as well.

Not only does Azure Automation leverage the existing PowerShell Modules but it also offers different programming options to further extend the usability options;

Graphical             Based on Windows PowerShell and created and edited completely graphically

PowerShell         Text runbook based on Windows PowerShell script.

Python                  Text runbook based on Python, which extends automation to include Mac OS X, Linux, and Unix

Disadvantages

In an event driven code execution use case, Azure Automation does not have the same level of programming language support and maybe incur more overhead than using a Function App.

What are the differences between Azure Functions and Azure Automation?

Both Azure Functions and Azure Automation capabilities overlap along with other Azure technologies such as Logic Apps which we have reviewed in previous blogs.

When looking at which route to go down, the choice you make will typically depend on the scope of use cases your looking to implement.   Are you looking to provision and manage virtual or physical infrastructure? Or automatically fulfil User Service Requests?  Or automate a complex decision based manual process where you can stop and then resume following a time delay or external input?  If so you want to be looking towards Azure Automation.

If, on the other hand, you are looking to automate a single component, or an action using an event driven approach and have the necessary development skills then Azure Functions will help you get the job done.

Comparison

Considering a hybrid approach, using Azure Automation for the high-level processing and overall management, with Azure Functions to carry out some of the low-level tasks may make sense, but obviously with any hybrid approach adding additional technologies will increase complexity.

From a suitability of automation point of view, Azure Functions and Azure Automation currently provide platforms for very different automation tasks; one is better suited to IT infrastructure and service automation whilst the other is aimed at developers building serverless capabilities.

Logic Apps, Azure Automation Runbooks, Azure Service Bus and Azure Function Apps all contribute to the broad automation capability available from the Azure Cloud.

Graphical

PowerShell

Python

Based on Windows PowerShell and created and edited completely graphically

Text runbook based on Windows PowerShell script

Text runbook based on Python, which extends automation to include Mac OS X, Linux, and Unix

For more information on the advantages and disadvantages of Azure Automation, check out our recent blog post here or if you’d like to see what we offer on Azure take a look at our Runbook Suite, which covers all of our Microsoft Azure Automation products and services.