What happened with Azure Functions in 2022? And some wishes for 2023
Tags: azure, functions, serverless
Published: 2022-12-13 10:18:42

The year 2022 is coming to an end and this is a good time to take a look back at one area that I love in Microsoft Azure namely *Azure Functions*. I gathered my thoughts on that and two contradicting impressions came to my mind:

* Quite some improvements and enhancements came to Azure Functions this year.
* Not too much happened around Azure Functions - it was a quiet and the magic happened in other places (like Azure Container Apps).

Sounds weird right? 

The first impression is easy to grasp: in my weekly news about SAP and Microsoft called [myNewsWrap](https://github.com/lechnerc77/myNewsWrap) I have Azure Functions and Serverless as permanent topic and I did not run out of news here. 

But why then that second thought that hit my mind: hey, the (nearly) monthly Azure Functions Update that was streamed on YouTube and hosted by Jeff Hollan (*the Halloween episode was legendary*) did not happen this year. At least, I do not remember one. I am aware that Jeff left Microsoft, but those session were interesting, entertaining and fostered the interaction with the community. Not having them explains my second impression as they really sticked to my mind as highlights in the Azure Functions Community.

So something for the wish list for 2023. But before we come to that let's check the facts. What were the announcements that you should know (at least from my point of view) when you are working with Azure Functions that you hopefully did not miss.

![Azure Functions Logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v91ywf5cnv89be3jlvbr.png)

## Language agnostic features

Basically there is one main *language agnostic* feature namely the [Dynamic concurrency in Azure Functions](https://azure.microsoft.com/updates/generally-available-dynamic-concurrency-in-azure-functions/). This feature is GA and allows you to fine tune your concurrency settings per trigger and find the perfect configuration for your workload. This is an advanced topic, but when you hit the point that you need it, good to know that you can do adjustments in this area.

## Bindings

More action happened on the *extensions/bindings* provided by Azure Functions. Here you go:

* The [Azure Tables extension for Azure Functions](https://azure.microsoft.com/updates/public-preview-azure-tables-extension-for-azure-functions/?WT.mc_id=AZ-MVP-5004195) was announced in 2022. This extension is an update to the existing table extension and supports more features than the previous version.
* [Azure Identity support in the Azure Functions SignalR extension](https://devblogs.microsoft.com/azure-sdk/introducing-azure-identity-support-in-the-azure-functions-signalr-extension-beta/?WT.mc_id=AZ-MVP-5004195) was another announcement. The support for Azure Identity for extensions is a continuous story and SignalR is one example for the evolving support of this feature.
* Another enhancement for JavaScript and Python binding was the [Public preview: JavaScript and Python support in Azure SQL bindings](https://azure.microsoft.com/updates/public-preview-javascript-and-python-support-in-azure-sql-bindings/?WT.mc_id=AZ-MVP-5004195). This makes the story to interact with Azure service via bindings more complete. Be aware that this is only about input and output bindings.
* The [extensions bundles release 3.7.0](https://github.com/Azure/azure-functions-extension-bundles/releases/tag/3.7.0) had a small but important enhancement under the hood that did not have too much talk about it, but makes perfect sense for Azure Functions namely the support of *WebPubSub*.
* Another helpful feature is the general availability of the [retry policy for Event Hubs and timer triggers](https://azure.microsoft.com/updates/generally-available-azure-functions-retry-policy-for-event-hubs-and-timer-triggers/?WT.mc_id=AZ-MVP-5004195).
* And we also saw the [GA launch of Kafka Trigger extension on Azure Functions](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-ga-launch-of-kafka-trigger-extension-on-azure/ba-p/3499015/?WT.mc_id=AZ-MVP-5004195) this year. On the same note the extension was improved in September with [error handling with Apache Kafka extension for Azure Functions and more!!](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/error-handling-with-apache-kafka-extension-for-azure-functions/ba-p/3628936/?WT.mc_id=AZ-MVP-5004195).
* [Azure Functions extension for Event Grid blob trigger](https://azure.microsoft.com/updates/generally-available-azure-functions-extension-for-event-grid-blob-trigger/?WT.mc_id=AZ-MVP-5004195) also became GA this year. The extension can reduce your overall latency, so worth to look at it if you have this scenario in your processes.
* Making the story around bindings for Azure SQL complete the [public preview of Azure SQL Trigger for Azure Functions](https://azure.microsoft.com/updates/public-preview-azure-sql-trigger-for-azure-functions-2/?WT.mc_id=AZ-MVP-5004195) was also announced this year. Not GA yet, but probably landing in 2023.

Of course several updates also landed around the developer experience and tooling. The [updated extension defaults for new Azure Functions projects](https://azure.microsoft.com/updates/generally-available-updated-extension-defaults-for-new-azure-functions-projects/) is worth to highlight especially when you deploy new projects but also for upgrading existing ones.

So quite some updates around bindings from big new features to enhancements of existing ones. Not a bad year for Azure Functions extensions.

Of course also the supported languages got some love this year, so let us take a look at them.

## .NET

First the *primus inter pares* language of Azure Functions, .NET.

First things first, at the time when you read this post, the extended support for .NET 3.1 has ended as announced in the beginning of this year in the blog post [Extended support for Microsoft .NET Core 3.1 will end on 3 December 2022](https://azure.microsoft.com/updates/extended-support-for-microsoft-net-core-31-will-end-on-3-december-2022/?WT.mc_id=AZ-MVP-5004195).

The story line of Azure Functions and .NET pivoted basically around two main topics:

1. The isolated worker model (which is the standard for all non-.NET languages)
2. The official support for .NET 7 as soon as it is released.

Here is the best of around the *isolated worker model*, cumulating in the GA announcement:

* [Public preview: Azure Functions .NET Framework support in the isolated worker model](https://azure.microsoft.com/updates/public-preview-azure-functions-net-framework-support-in-the-isolated-worker-model/?WT.mc_id=AZ-MVP-5004195) - Build
* [Building .NET Serverless applications with isolated model in Azure Functions and Visual Studio 2022](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/building-net-serverless-applications-with-isolated-model-in/ba-p/3598425/?WT.mc_id=AZ-MVP-5004195)
* [What's new in Azure Functions v4 for .NET Developers](https://youtu.be/SKhhNq8ghvM)
* [Announcing general availability for Azure Functions v4 .NET framework support in an isolated process](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-general-availability-for-azure-functions-v4-net/ba-p/3637605/?WT.mc_id=AZ-MVP-5004195)

Be aware that there are some aspects to take into account when moving to version v4 and the isolated model, so I would highly recommend to check out the GA announcement and the links in there. I have also a section with some migration topics later here in this post.

And here we go with the announcements around .NET 7 that became GA  in November:

* [Announcing the .NET 7 support for Azure functions in an isolated process in public preview](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-the-net-7-support-for-azure-functions-in-an-isolated/ba-p/3574316/?WT.mc_id=AZ-MVP-5004195)
* [.NET 7 comes to Azure Functions & Visual Studio 2022](https://devblogs.microsoft.com/dotnet/dotnet-7-comes-to-azure-functions/?WT.mc_id=AZ-MVP-5004195)
* [Announcing the .NET 7 for Azure functions isolated worker process is generally available](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-the-net-7-for-azure-functions-isolated-worker-process/ba-p/3671398/?WT.mc_id=AZ-MVP-5004195)
* [Azure Functions in .NET 7: What You Need to Know in 8 mins!](https://youtu.be/QH6Ps1k2Nfg)

If you want to get some general information about the way forward and the roadmap around .NET then the blog post [.NET on Azure Functions Roadmap Update](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/net-on-azure-functions-roadmap-update/ba-p/3619066/?WT.mc_id=AZ-MVP-5004195) is the right place for you.

## Node.js/TypeScript

In the Node.js and TypeScript area the most important points concerning the version support are the soon deprecated and newly supported releases of Node.js: 

* [Community support for Node 14 LTS is ending on 30 April 2023](https://azure.microsoft.com/updates/community-support-for-node-14-lts-is-ending-on-30-april-2023/?WT.mc_id=AZ-MVP-5004195)
* [Generally available: Node.js 16 in Azure Functions](https://azure.microsoft.com/updates/generally-available-nodejs-16-in-azure-functions-2/?WT.mc_id=AZ-MVP-5004195)
* [Public preview: Node.js 18 in Azure Functions](https://azure.microsoft.com/updates/public-preview-nodejs-18-in-azure-functions/?WT.mc_id=AZ-MVP-5004195)

Quite some improvements have been made under the hood like the ones mentioned [here](https://threadreaderapp.com/thread/1539136509059772416.html)

The [Azure Functions Node.js Roadmap 2022](https://github.com/Azure/azure-functions-nodejs-worker/wiki/Roadmap) made quite some announcements for 2022 like the [new programming model](https://github.com/Azure/azure-functions-nodejs-worker/wiki/Roadmap#new-programming-model), but unfortunately this will not be delivered by Santa Clause in 2022.

One interesting addition to Azure Functions I would alos like to highlight is the [OpenAPI for JavaScript Azure Functions](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/openapi-for-javascript-azure-functions/ba-p/3146739/WT.mc_id=AZ-MVP-5004195).

## PowerShell

The PowerShell ecosystem got two language-specific goodies this year (both GA), namely:

* [Azure Functions support for PowerShell 7.2](https://azure.microsoft.com/updates/generally-available-azure-functions-support-for-powershell-72/?WT.mc_id=AZ-MVP-5004195)
* [PowerShell on Linux OS in Azure Functions](https://azure.microsoft.com/updates/generally-available-powershell-on-linux-os-in-azure-functions/?WT.mc_id=AZ-MVP-5004195)

### Java

One language that at least from my perception did not receive too much attention in the Azure Functions Universe was *Java*. This year things changed a bit by the [public preview of Java 17 Support in Azure Functions](https://azure.microsoft.com/updates/public-preview-java-17-support-in-azure-functions/?WT.mc_id=AZ-MVP-5004195) and by the long-awaited support of Durable Functions with Java. So  you can [create your first durable function in Java (Preview)](https://learn.microsoft.com/azure/azure-functions/durable/quickstart-java/?WT.mc_id=AZ-MVP-5004195).

**UPDATE - 16.12.2023**: Java developers received early Christmas presents:

* [Generally Available: Azure Functions support for Java 17](https://azure.microsoft.com/updates/generally-available-azure-functions-support-for-java-17/?WT.mc_id=AZ-MVP-5004195)
* [Generally Available: Durable Functions support for Java](https://azure.microsoft.com/updates/generally-available-durable-functions-support-for-java/?WT.mc_id=AZ-MVP-5004195)
 
**END OF UPDATE - 16.12.2023**

Besides the languages we also have one very important citizen in Azure Functions town, *Durable Functions*. What happened there? Let's check it out.

### Durable Functions

The team around Durable Functions have been quite busy this year.

Following the story line around identity-based connections, [Durable Functions added identity-based connection support](https://github.com/Azure/azure-functions-durable-extension/pull/2014) with a corresponding announcement [Public preview: Durable functions support for managed identity for Azure Storage](https://azure.microsoft.com/updates/public-preview-durable-functions-support-for-managed-identity-for-azure-storage/?WT.mc_id=AZ-MVP-5004195).

Of course the support of isolated process and .NET 7 was one topic of 2022. You find the details in the following blog posts:

* [Public preview: Durable functions support for isolated .NET worker process](https://azure.microsoft.com/updates/public-preview-durable-functions-support-for-isolated-net-worker-process/?WT.mc_id=AZ-MVP-5004195).
* [Public preview: Durable Functions support for .NET 7.0 isolated model](https://azure.microsoft.com/updates/public-preview-durable-functions-support-for-net-70-isolated-model/?WT.mc_id=AZ-MVP-5004195)

Besides that Durable Functions have been constantly improved and enhanced over the course of the year:

* [Durable Functions v2.6.1 Release](https://github.com/Azure/azure-functions-durable-extension/releases/tag/v2.6.1) - **Attention** here we have a breaking change!
* [Durable Functions v2.7.0](https://github.com/Azure/azure-functions-durable-extension/releases/tag/v2.7.0) - Here we go with identity-based connections and a dependency update.
* [Durable Functions v2.8.0](https://github.com/Azure/azure-functions-durable-extension/releases/tag/v2.8.0) - Preview support for suspending and resuming orchestrators 🎉
* [Durable Functions v2.9.0](https://github.com/Azure/azure-functions-durable-extension/releases/tag/v2.9.0) - **Attention** this one contains an important CVE fix.

When it comes to Node.js we also had two highlights this year:

* [New major release of Durable Functions for Node.js](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/new-major-release-of-durable-functions-for-nodejs/ba-p/3451227?WT.mc_id=DT-MVP-5004195) - I would say the main thing here is the performance gain.
* [Durable Functions for NodeJS 2.1.0](https://github.com/Azure/azure-functions-durable-js/releases/tag/2.1.0) - You can now signal Durable Entities from Node.js!

#### New storage providers

The two new *storage providers* for Durable Functions have been announced a while ago. Up to now they are not GA (which I would have expected to happen this year to be honest), but anyway they have a constant stream of new releases over the course of the year, so check out the release notes:

* [MS SQL Storage Provider](https://github.com/microsoft/durabletask-mssql/releases)
* [Netherite Releases](https://github.com/microsoft/durabletask-netherite/releases)

And there are also some movement to support them in VSCode as described in this issue:

* [VSCode - Support new Durable Functions backends](https://github.com/microsoft/vscode-azurefunctions/issues/2956)

Let's see what 2023 will bring for these two friends.

## It ain't over until ... well, it's migrated

As already mentioned the topic of migrating from AzureFunctions V3 to V4 is a topic, so here are some of the main blog posts I collected over the course of the year:

* [Azure Functions V4 Versus V3](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-functions-v4-versus-v3/ba-p/3276055)
* [Migrate apps from Azure Functions version 3.x to version 4.x](https://learn.microsoft.com/azure/azure-functions/migrate-version-3-version-4?tabs=net7%2Cazure-cli%2Cwindows&pivots=programming-language-csharp)
* [Upgrade from v3 to v4](https://twitter.com/nthonyChu/status/1484640263280553985?s=20)
* [Issues you may meet when upgrading Azure function app to V4](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/issues-you-may-meet-when-upgrading-azure-function-app-to-v4/ba-p/3288983?WT.mc_id=AZ-MVP-5004195)

## Learning

Learning about Azure Functions is always a topic. So here we go with the sessions that crossed my path:

* [Learn Live - Implement Azure Functions](https://youtu.be/AW4K8fpVlUo)
* [Layla Porter - Azure Functions: a guide to getting started - NDC London 2022](https://youtu.be/hy_GWqjia3U)
* [Serverless event-based architectures with Azure Cosmos DB and Azure Functions](https://learn.microsoft.com/azure/cosmos-db/nosql/change-feed-functions)
* [A walkthrough of Durable Entities](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/a-walkthrough-of-durable-entities/ba-p/3616832?WT.mc_id=AZ-MVP-5004195)
* [Serverless September](https://azure.github.io/Cloud-Native/serverless-september/) is over, but it is not gone
* [Building Serverless Go Applications with Azure functions custom handlers](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/building-serverless-go-applications-with-azure-functions-custom/ba-p/3623617?WT.mc_id=AZ-MVP-5004195)
* [A coding pitfall in implementing dependency injection in .NET azure functions](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/a-coding-pitfall-in-implementing-dependency-injection-in-net/ba-p/3411110)
* [AzureFunBytes Episode 65 - Azure Durable Functions For Automation](https://dev.to/azure/azurefunbytes-episode-65-azure-durable-functions-for-automation-with-lbugnion-1p50)

Of course there was much more in countless meetups etc. - Kudos to all who contributed in sharing knowledge and experience.

Last but not least: what would learning Azure Functions be without the community effort initiated by Marc Duiker and his partners in crime. Quite some contributions - kudos to all who contributed here:

* [Azure Functions University: Calling third-party REST APIs (.NET 6)](https://youtu.be/11Qi8A_8cVY)
* [Azure Functions University - Discussions](https://github.com/marcduiker/azure-functions-university/discussions)
* [Azure Functions University - HTTP Lesson (Python)](https://youtu.be/fDnPGeRTwHc)
* [Azure Functions University - Lesson Tips](https://blog.marcduiker.nl/2021/05/19/azfuncuni-lesson-tips.html)
* [Azure Functions University: Deployment Lesson (.NET 6)](https://youtu.be/RgF8bA1-CMo)
* [Azure Functions University: Durable Functions Lesson II (TypeScript)](https://youtu.be/iYij7Mf7_dE)

One further spotlight in that context must be put on the [Serverless Camp](https://www.bitproject.org/serverless) organized by the [Bit Project](https://www.bitproject.org/). A great initiative and  a superb way to learn Serverless. Thanks to all who contributed to this project!

## Wishes for 2023

Citing the Looney Tunes ... *That's all Folks!*. At least for 2022.

Looking back a lot of stuff has happened in 2022 around Azure Functions and (my favorite) Durable Functions. 

But new year, new wishes. So here is my wish list for 2023:  

* I hope the monthly (or at least bi-monthly Azure Functions news on YouTube gets a revival. I loved them especially as a vibrant interaction with community. Keeping my fingers crossed for that one.
* As already mentioned I am hoping to see GA of the new storage backends. But I am greedy here: I would also love to see an evolution of Netherite towards a Kubernetes native implementation (wouldn't that be cool in combination with Azure Arc?).
* Finishing on the new programing model for Node.js that was planned for 2022. According to the road map on [GitHub](https://github.com/Azure/azure-functions-nodejs-worker/wiki/Roadmap) this seems to be a realistic wish.
* Let's shift gears a bit: I also would love to see *Golang* as a first class citizen in the Azure Functions world including Durable Functions. I think this is a perfect match and maybe this is not out of reach when looking at this [interesting tweet](https://twitter.com/cgillum/status/1585491737438351362?s=20&t=Bj82crMHNatvJ3n_EuFWPg).
* Seeing the results and the consequent actions of the [Survey on dev experience](https://twitter.com/AzureFunctions/status/1579879922239406080?s=20&t=YFNgtIun26Dit7HlD1gBYg) - really curious about the outcome of that one.

With these wishes there is one last thing: I wish you, dear reader, a *Merry Christmas* and a *Happy New Year* - see you in 2023!

P.S. Before I forget. There was also an official update published by Microsoft at the beginning of October that I do not want to hide here: [Azure Functions – 2022 update](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-functions-2022-update/ba-p/3648731).

P.P.S Curious what are your wishes around Azure Functions for 2023. happy to read them in the comments below.