Today, serverless computing is a hot topic. Specifically, Azure Functions were designed as a serverless architecture that allows the application development process to be quick, painless, and less costly.
Traditionally, application development required complex IT infrastructure which made for a slightly complicated, expensive, and time-consuming affair.
In this article, we’re going to get into the topic of Azure Functions, including what it is, how it works, and what you can use it for—and what you can’t use it for.
What Exactly Are Azure Functions?
Azure Functions (from Microsoft Azure) is a cloud-based serverless service that allows running event-triggered code in a scalable way without providing or managing infrastructure. It enables the capability to run a script or piece of code in response to a variety of events and doesn’t need to run continuously.
For example, let’s say you’re a web developer. You want to send out emails or notifications after finishing processing a specific step in e-commerce order – New, Paid, Processing, Packed, Sent for delivery, Delivered to your customer base. Rather than building an entire system with your own infrastructure, you can simply use Azure Functions.
You just write your code with designed actions and deploy it to Azure cloud. Azure Functions will run only when it will be triggered by your e-commerce system, automatically scaling to current needs e.g. Black Friday. You will be charged only for the number of invocations and the time of their execution. That means you pay only when you are processing your orders. What’s more, you don’t need to anticipate what traffic could be generated by the next promotion and pay for servers that won’t be used in whole capacity most of the time.
Some of the most common use cases include sending emails, starting a backup, file processing, report generating, order processing, and scheduling tasks such as notifications, messages, database cleanup, and IoT data processing. But, we’ll get to that stuff later.
Generally speaking, Azure Functions are better suited for parts of your app that can be executed as separate processes, often run multiple times in parallel, triggered by specific events that could require rapid scaling from time to time.
When to Use Azure Functions
Keeping in mind that Azure Functions is a lightweight serverless service, meaning it has its own specific uses. That also means you can’t replace an entire website simply by the use of Azure Functions.
Here are the most common use cases:
- Reminders and notifications
- Scheduled tasks and messages
- File processing
- Data or data streams processing
- Running background backup tasks
- Computing backend calculations
- Lightweight Web APIs and Proof of Concepts, MVPs
Having said that, it’s important to take note of when you can’t use them. Not all applications can or should be using Azure Functions as it’s an app that uses triggers. Once an event has been triggered, the task is executed in the background.
So, here’s what to keep in mind:
- Azure Functions are NOT a replacement for Web APIs. Web applications tend to use Web APIs as the middleman to bunch together data and business logic-related tasks, where Azure Functions receives input, runs its logic, and provides output. Although they could be a great extension for Web APIs in specific use cases.
- Azure Functions are NOT designed to carry out multiple tasks. The service was designed to perform one thing or as few things in the shortest time possible.
- Azure Functions is NOT recommended for infrequent, time-sensitive tasks. Cold starts – container spins up for the first time to complete a new request – there is a slight delay in normal response time that could stack across many functions and negatively impact responsiveness experience in your App.
- Azure Functions are not suited for running long and computationally intensive tasks. Since Azure Functions are a compute-on-demand service, attempting to replace any APIs with multiple Azure functions could result in severely increased costs in terms of development, maintenance, and computations.
Essentially, Azure Functions were designed to accelerate the application development process. With the serverless architecture, you can quit worrying about the infrastructure challenges and focus on creating code, but of course, it has its limitations and costs.