The next horizon in cloud computing is here: “Serverless Computing,” which is set to take the benefits of cloud computing to a new level, further reducing IT operational costs, allowing your organization to deploy services faster, and ultimately making you more nimble and responsive to customer requirements.
Despite the name “serverless,” this does not actually involve running code without servers. Instead it means that the business using the system is not responsible for purchasing, renting, or provisioning the servers or virtual machines upon which the code will run. Those resources are transparently allocated at runtime as they become available by the cloud provider via its serverless paradigm.
You can read a great primer on Serverless Computing by my colleague Matt Lancaster here, and also learn about the things to consider before going this route here. I’m excited about Microsoft’s serverless capabilities thanks to Azure Functions and want to share what I’ve learned about this take on the next phase of cloud computing.
With Azure Functions you get a slice of a common virtual machine (VM) that is managed by Azure, for the brief period you need to run your custom functions code. As well as the improved VM cost efficiency you get with the service, I was blown away by how simple it is to quickly drop in small pieces of custom code to do discrete tasks. What's more, Azure Functions easily integrates with other services to form a powerhouse solution.
With Azure Functions, you don’t have to allocate a VM. Nor do you have to create a special run-time environment, or worry about resource, scaling or VM lifetime management. Choose your favorite language, import function libraries using NuGet, and integrate seamlessly with various SaaS services and other Azure services. Either use various triggers or events to invoke your functions, or set them to run on a timed basis. Define input and output bindings for the flow of data and objects in and out of your Azure Functions. Functions can be implemented and deployed using Visual Studio or can be created directly using the Azure Portal blade for Functions App.
Consumption Plan vs App Service Plan
There are two models of allocation for Azure serverless computing: the Consumption Plan and the App Service Plan. Only the consumption-based Azure Functions model is truly serverless, while with the Azure App Service plan you still pay for resources and VMs.
Using the Azure Consumption Plan, we see true serverless computing. In this model, you pay per execution and only for the resources your function consumes, with dynamic scaling available if needed. It is a cloud-based concept where the cloud provider fully manages starting and stopping of a VM upon which a function will run to serve requests. Those requests are billed by an abstract measure of the resources required to satisfy the request, rather than per virtual machine, per hour. Scaling out is something that is automatically managed for you by Azure.
If your workloads are intermittent, or short running in nature, the Consumption Plan makes sense for your Azure Functions. When a functions app becomes idle after a short time (about five minutes as of today), running instances will turn down to zero. Then, when it needs to run again, it can take time to reload, resulting in latency. To avoid this delay, you can either use a regular App Service Plan with always-on enabled for Functions App, or use another mechanism to trigger one of the functions in Functions App once at least every five minutes to keep it running.
Thanks to our years of real world Azure experience, Accenture can help you tap into the benefits of Azure’s serverless cloud functionality. Plus, Avanade, our digital innovation joint venture with Microsoft, is the most experienced Microsoft Azure Cloud services partner, with more Microsoft certified professionals on Azure than any other Microsoft partner.
For more information, refer to Azure Functions.
For more information on choosing the correct service plan for Azure Functions, refer to https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale.
For more information in best practices for Azure functions, refer to tips for improving the performance and reliability of Azure Functions.