Well, here we will discuss Azure Functions Best Practices. There are a few suggestions you need to concentrate on while working with the Azure Functions. Suggestions can be in terms of performance, execution, Security, Coding standards that need to be followed, Overall Architecture of your Azure Functions, etc.
Table of Contents
- Build Short Executions Azure Functions
- Implement Dependency Injection in Your Azure Function Project
- It is better to use a separate Storage account for each Azure Function
- Build Asynchronous Azure Functions
- Implement Logs in side Azure Function
- Azure Function Should be Stateless
- Better To Write Defensive Azure Functions
- Reuse External Resource Connections
- Concurrency of Azure Function to be Considered
Build Short Executions Azure Functions
- This is very important in terms of performance. Always try to create or design a function that takes less time to execute. So try avoiding the long-running functions.
- The reason behind this is we know that there is built-in time out for the Azure Function. In the case of long-running applications, there is a chance that it will cross the default time out for the Azure Function. In that case, the Azure Function will throw the time-out exception, and you will not get the proper output for your Azure Function.
- One more risk factor with the long-running Azure Functions is Since the Azure Function will be executed for such a long time, there is a chance that in between, you might face some network errors or service failures, etc, because of the long execution time.
- So, making your Azure function clean, simple, and short is always suggested.
Implement Dependency Injection in Your Azure Function Project
As we all know, Dependency Injection is a very good design pattern that you can implement in your Azure Function project. With the help of the Dependency Injection, you can reduce the dependencies. Your Azure Function code will become more readable, reusable, etc.
It is better to use a separate Storage account for each Azure Function
- While creating an Azure Function, we need a storage account. So the suggestion here is always try to use a separate storage account for each Azure Function. Do not use the same storage account for multiple Azure Functions.
- If you use a separate Azure Storage account for the individual Azure Function, then the performance of your Azure Function will increase simultaneously.
- With this, you can separate your business logic from each other, which helps you in terms of less execution time and more Performance.
Build Asynchronous Azure Functions
Always try to build your Azure Function with asynchronous calls to help avoid blocking calls. Avoid using the .wait() method and. Result property if possible.
Implement Logs in side Azure Function
Try to implement logging for the Exceptions or failures wherever possible. I am not talking here to log the information more. Instead, I am trying to tell you to use the logs for capturing the exceptions wherever possible, which helps you in case of any critical exception that might occur while executing the Azure Function.
Azure Function Should be Stateless
If Possible, Build your Azure Functions to be stateless. If you have to add state information, you can add your state information with your data, But make sure to keep the Azure Function stateless.
Better To Write Defensive Azure Functions
Writing a defensive Azure Function while you are building or Developing your Azure Function is always suggested. When you are telling defensive,, You should write your Azure Function code so that in case of any exception during the execution, it should be capable enough to continue from a previous fail point during the subsequent successful execution.
The exception might be due to the quota limit reached, network-related issues, etc. So, your Azure Function should be able to handle this type of scenario. It would be best to make your Azure Function capable enough to handle these situations.
I know it might look a bit confusing, but let’s consider the scenario where you need to insert 500 records into a table with the help of your Azure Function. After inserting maybe 120 items, you got an exception due to a network issue, and the Function execution stopped then.
So, in this scenario, Ideally, your Azure Function should keep these 120 items in a separate queue, and you should be capable of tracking the 120 items instead of inserting them again from the beginning. You should only insert your remaining 80 items.
Reuse External Resource Connections
Whenever you are working with Azure Functions, you may have many connections to the external resources from your Azure Function. Remember that it is a good practice to reuse the connection to external resources wherever possible.
Concurrency of Azure Function to be Considered
Concurrency needs to be considered while working with the Azure Function to distribute the Workload whenever required to avoid running out of resource situations. This is one of the great options to manage the resources.
You can configure this using the “maxConcurrentRequests” property in the host.Json file. Another thing to consider here is that setting this Concurrency configuration applies to all the Azure Functions inside that particular Azure Function App.
To clarify this, Say You have configured 30 Concurrent requests for your Azure Function App, and you scale out your Azure Function App to 3 instances, then you will get a total of 3 * 30 = 90 concurrent requests.
So, These are a few critical best practices you must remember while working with the Azure Functions.
This Azure article discussed Azure Function Best Practices that you must follow while working with Azure Function. Thanks for reading this article !!!
I am Rajkishore, and I have over 14 years of experience in Microsoft Azure and AWS, with good experience in Azure Functions, Storage, Virtual Machine, Logic Apps, PowerShell Commands, CLI Commands, Machine Learning, AI, Azure Cognitive Services, DevOps, etc. Not only that, I do have good real-time experience in designing and developing cloud-native data integrations on Azure or AWS, etc. I hope you will learn from these practical Azure tutorials. Read more.