Guidance on partial/hotfix deployments

Topics: General Questions, Server Deployment, Tips and Tricks
Aug 19, 2014 at 3:58 PM
I'm looking for some guidance or best practices for doing partial or hotfix deployments with the BTDF.

To give a bit of background, we have an existing solution that has a number of partners sending data into the system using different methods and requiring different mappings to an internal schema. For organizational reasons, each partner has their own project containing any artifacts specific to them. When one the partners changes how they're sending (usually without warning) we need to quickly fix the problem then deploy the changes without disturbing the other partners. Currently we do this by GAC'ing or refreshing the DLL in the management console, but we're hoping there's a better method using the BTDF.

Any ideas?

Sep 12, 2014 at 5:26 AM
The Deployment Framework's core model is application-centric, so it doesn't specifically address hot-patching a running system. I've tried to reduce downtime by doing as much as possible without touching running host instances, saving the restart until the very end of the process. Making sure that DeployPdbsToGac is set to False is part of that effort, with some related code changes starting in v5.5.

The Quick Deploy option from Visual Studio is now also available in server deploys in the Start menu, which is largely a quick re-GAC of everything and host instance(s) restart.

Packaging-wise though, the only model is the entire app packaged as an MSI. There is no built-in facility for packaging patches/subsets of the app.

Sep 12, 2014 at 10:23 AM
hi Tom,
This effectively means that the application as such is deleted compulsorily and recreated with the new assemblies. Is this understanding correct?
Sep 15, 2014 at 4:30 AM
In the standard model, yes. The typical undeploy-uninstall-install-deploy cycle is a full application delete and create.

However, if you are changing something very contained and with no side effects, for example a map or orchestration change that does not change schemas or the orchestration's interfaces, then you can build that change into a new MSI, and without undeploying, uninstall the existing MSI and install the new one. Then run the Quick Deploy (of course on all servers in the group) command to re-GAC and restart host instances. If you are very careful and deliberate, there are such ways to do patches without a full redeploy.