-
In my organization, we have a few applications built on Durable Functions. Some of which are hosted on App Service Plan, a few are in App Service Environment. These applications run on the Azure Storage provider offered out of the box. Recently, the organization has decided to consolidate our applications and have them managed in our existing Azure Kubernetes Service instance. As our orchestration instances are expected to be long running (some in minutes, some spanning to months), we would not only have to ensure the executions that are still in-flight are still able to run to completion, but also to allow new orchestrations to be started in the applications migrated to AKS. Our plan of migration would be to build our Durable Functions applications in Docker containers, stop the instances that are currently running in App Service Plans and App Service Environment, and deploy the application as Kubernetes deployments in the AKS instance with the applications connected to the same Azure Storage Accounts. The switchover is expected to be quick and coordinated. I would like to check if this approach of migration would cause any issue? If yes, what would our other options be? We have an alternative, which is to provision a new set of Azure Storage Accounts to serve the applications in AKS - new executions would be routed to the new applications; the existing applications would be left to continue running in the App Service Plans and App Service Environment to serve the in-flight executions. However, with this approach, we would have to bear the cost of maintaining both sets of applications - the ones in AKS and the ones in App Services. Given that some of the executions are long running, it would be expected that the instances in App Services would have to continue to serve up to months before decommissioning. Advice is greatly appreciated. Thanks! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 3 replies
-
If you are maintaining the same Azure Storage accounts (and I recommend you do) and also not making any changes to your orchestrations in the process, then I think the migration can actually be quite smooth with zero downtime. You can start by deploying new copies of your app to AKS while continuing to run the existing copies in Azure App Service. As long as you're maintaining the same storage account, there shouldn't be any conflicts for the durable orchestrations - it will simply appear that you've scaled out to a larger number of nodes. If everything looks good in the AKS cluster, you can start spinning down the App Service apps so that all durable traffic is being handled by the AKS nodes. EDIT: One other thing I'll mention when migrating away from Azure App Service-based platforms is that there are certain environment variables that you may want to also migrate to your new environment. For example, there is a |
Beta Was this translation helpful? Give feedback.
-
Thanks @cgillum for the response. It is not just a relief, but a great news to us that we can expect a smooth switchover with just deploying the new copies of our applications to AKS, connecting to the same storage - and better, with zero downtime. In some previous chats with the support team on other issues, we were advised that generally sharing storage accounts across multiple applications is discouraged - hence I thought it would be a good idea to get a confirmation here, specifically for the purpose of migration. I'm happy with the approach you suggested. On a side note, I believe this could be a topic that would be brought up quite commonly by users of Durable Functions. I just want to end this with a small suggestion with this topic being documented somewhere, like an FAQ, perhaps? Thanks again for the advice! |
Beta Was this translation helpful? Give feedback.
If you are maintaining the same Azure Storage accounts (and I recommend you do) and also not making any changes to your orchestrations in the process, then I think the migration can actually be quite smooth with zero downtime. You can start by deploying new copies of your app to AKS while continuing to run the existing copies in Azure App Service. As long as you're maintaining the same storage account, there shouldn't be any conflicts for the durable orchestrations - it will simply appear that you've scaled out to a larger number of nodes. If everything looks good in the AKS cluster, you can start spinning down the App Service apps so that all durable traffic is being handled by the AKS n…