As part of a new series focussed on knowledge transfer and educating our community, the team at Wrive are providing snippets of information to share with the wider community, for the betterment of the community. The first part of our series focusses on Azure Serverless Compute
Serverless compute staging slots
Last year we deployed a solution for a client in Azure using serverless Azure functions on an App Service Plan. This solution solved a complex business problem for the client and provided integration and data exchange between disparate systems. The entire project took about 6 months to deliver and required multiple iterations of the code, which meant multiple test plans were executed, many times. To uphold our commitment to CI/CD and all the benefits it brings, we needed to ensure we had a robust and clearly defined test and release management process once new code was automatically deployed.
Enter, App Service Plan Slots.
There are a heap of features of App Service Plan slots, of which I wont go into detail on all of them now. The key features are:
Slots allow you to deploy your app to various stages of the application lifecycle that mimic your testing and release architecture.
Slots take away the need for deploying additional App Service Plans, Functions and Storage for development, testing and staging. App Service plans can be expensive to run at high performance and scale (think 8 vCPU, 32 GB RAM) if you require development, testing, staging and production environments. Slots take away the need for this complexity in your infrastructure and REDUCE COST.
Slots allow you to deploy and test in parallel (a true blue/green architecture model)
You can cutover from staging to production slots with ZERO DOWNTIME
You can configure slot specific application configuration settings, or global settings
You can PREVIEW your changes and code and test for performance, load and responsiveness BEFORE deploying to your production slot
Slots work with pipelines and ARM templates to enable you to automate deployment of code to your test and staging environments
Slots can be warmed up, prior to cutover to prod, to ensure you have scaled to meet the current demand on your app, and my favourite part:
Slots allow you to rollback INSTANTLY without downtime in the event that something goes awry.
If you would like to understand more about Azure Functions, Serverless compute and Software Engineering for the native cloud, give us a yell and we will put you in touch with one of our Architects. Microsoft Doco on Slots here