In this section we will look at Azure Functions.
What is it?
Azure Functions is Microsofts major offering in the Serverless area. It allows you to write some code and then push it to the functions platform and have that code execute without needing to setup any underlying infrastructure.
The huge benefit to customers for Azure Functions is that the time to value for a piece of code is significantly reduced. Its possible to solve a problem in minutes and have the code in production.
Some of the common features include:
- Bindings which allow the function a simpler way to connect to data sources
- Bindings which allow the configuration of how the function is triggered
- Ability to code direct in the browser or work in the usual developer tooling experiences with full CI/CD experiences
- The biggest strength of Azure Functions is the ability to deploy simple bits of code and to plug them together in a rapid way. In todays drive for Digital Transformation, Azure Functions are one of the technologies you can adopt which will allow you to work and deliver solutions using behaviours that will be very complimentary to Digital Transformation.
- At this time Microsoft is investing heavily in Functions
I dont think there are many weaknesses of Azure Functions but below are some to call out:
- At this time the Host v1 and v2 roadmaps are in transition. I think if you are using functions you need to keep an eye on this roadmap and support for the various flavours of .net to ensure your aligned to this strategy
I think one of the most interesting challenges with Azure Functions is that the product is changing probably at one of the most rapid rates on Azure. If you look at the change log on the link below there have been 6 releases to the functions runtime in the last 6 weeks.
I think for some companies this rapid pace of change will introduce some caution but this risk can be mitigated by good development practices.
Dependancy management for Azure Functions should be simple as the Functions runtime abstracts the underlying
Functions can be developed in many languages and have support for hosting on:
Azure App Service Plans
Azure IoT Edge
The cost model for functions depends on the hosting option you choose. The consumption plan lets you pay per execution and per execution time which is the cheapest option for smaller users and great for burst scenarios.
The dedicated resources option also allows you to pay based on the resources your functions use.
One of the dangers with Functions is I have seen some implementations where developers went over the top engineering loads of functions to achieve a very decoupled architecture but they had actually just developed their own version of Logic Apps. I think you will need to ensure your team are clear on where to use what and understand how to use the technologies together.
That said Logic Apps + Functions is a very competting use case
Azure Data Factory has recently introduced support for being able to use Azure Functions to be able to call out from a pipeline to have a function execute some code. Using the two technologies together can help a lot.
- Serverless Tips by Kent Weare and Steef Jan Wiggers is an execllent resource for real world tips for Functions - https://www.serverlessnotes.com/docs/serverless-tips-overview
Azure Functions Live - Youtube Channel
The Functions team publish regular videos allowing you to keep up to speed with their latest happenings.
Integration Monday Videos
Explore more on Logging with ILogger in Azure Function