Saturday, June 18, 2011

Differential software updates

Image: Suat Eman /
Large applications often lead to lengthy updates. Managing deployment granularity at the component level can help to reduce the size of the updates but shifts the problem to tracking which components have changed and must be updated.

We need a mechanism that keeps track of every deployed file changes (as they really are on the target server) so that only modified files get updated.

KwateeSDCM generates a deployment descriptor for every package that it deploys. Among other things, this descriptor contains an MD5 hash of each and every file that was installed with the package. During during the upgrade process, SDCM retrieves the deployment descriptor and checks each MD5 hash against that of the new file version about to be deployed. Only changed or new files will be included into an ad-hoc differential archive which is then deployed on top of the existing package.

More importantly, the differential update capability means that there is no need to manage component-level deployment. The reason these spits are made is usually to avoid re-installing large libraries that almost never change during minor application releases. The problem lies in keeping track of the dependencies because "almost never change" is not the same as "never change" and so it is easy to overlook a necessary re-deployment of a library that was unwittingly modified by a code change side-effect.

With KwateeSDCM, you include everything: libraries, executables and support files into a single package as it is conceptually meant to be. No matter how large the full package is, SDCM will optimize the deployment for you at no risk.

A 40M web application that requires a hotfix due to a .jsp file bug fix will generate a differential update that weighs only a few kilobytes!

No comments:

Post a Comment