PRESENT CHALLENGES (Self-Pity):
In the public sector, employment statistics loom large. Among the AdvantageCS software development team, deployment statistics are a far bigger concern. Throughout all the years I’ve worked with Advantage, tools and techniques for installing and upgrading the software have been a constant, if unheralded, focus. Ever since the cutover to .NET, though, there has been a distinct upward trend in the attention we pay to smoothly and successfully installing our software on clients' servers and integrating it with their customizations.
In this post I will recap recent developments and describe coming attractions.
Before getting into that, though, permit me to indulge in just a bit of self-pity about what a challenge we face. When I think about the behemoths of software delivery – the Facebooks, Amazons and Googles of the world – my first thought is to be staggered by the software deployment challenges they face. Millions of users, hundreds of servers, multitudes of languages, dozens of development teams – all must be considered when rolling out a new version of Netflix or Facebook. They occasionally stumble, but for the most part they have mastered the tricks of successfully rolling out new versions of their software.
But here at AdvantageCS, although we deal with much smaller numbers, we have upgrade challenges of our own. <Insert sad violin music here>. The upgrade ‘jump’ for our clients is not usually one revision to the next but across years of revisions. We are currently upgrading one client across six years of changes. Each client’s installation is customized in various ways and those customizations and interfaces must be upgraded as well. The hardware is not under our control. Gigabytes or even terabytes of data must be upgraded. And we do not generally have the security of backup servers in case of failure.
ACCOMPLISHMENTS TO DATE (Self-Esteem):
These challenges of upgrading Advantage are in tension with our desire to streamline the process of delivering new and better software at an accelerating pace. In conjunction with our 2012 transition to the .NET platform, we have put a lot of work into improving our deployment methodology. Some of the steps we have taken include:
• We built a new utility, AdvDeploy, to automate installation of new releases
• We made new releases available for download on our website
• A simple process request can download and install new releases
• All base software changes are now configured in a central source code repository at AdvantageCS
• We encompassed all the aspects of deployment (extensibility, security, translation, etc.) into a comprehensive installation process
• A suite of automated tests run against every build that is available for download
• Manual regression testing is performed daily against one of the available releases
• Our deployment utility distinguishes between new versions that require a change to the database schema vs. those that can be installed while users, processes and API’s continue to run
• Our upgrade utility dynamically multi-streams upgrades across a number of queues. Where possible, it also optimizes consecutive revision-specific upgrades of a table into a single operation.
• We improved the logging of deployment activity to make the process more robust and supportable
• The upgrade process now has better handling for replicated tables
A lot has changed.
FUTURE DIRECTIONS (Self-Promotion):
Deployment and upgrade enhancements are proving so helpful that we just have to do more.
In our next release, we will introduce what we have internally dubbed ‘quantum upgrades.' For large tables with millions of rows of historical data, we can slowly pre-upgrade the data over several days while a client's production area is still up and running. We believe this will reduce the downtime for upgrades – dramatically in some cases. Caveat: adequate disk space is required.
We plan to introduce an option for monthly (or near-monthly) releases later this year. It’s an ambitious goal. But we want our clients to be able to receive software improvements as quickly as possible. And we want to limit the need to create custom software configurations – although we will continue to make that option available. We also recognize that the ability to efficiently roll out new software is critically important for a future in the cloud.
Stay tuned for news about on-site automated testing capabilities. These changes will go hand-in-hand with faster deployments so that our clients' testing efforts can be focused on new functionality and new test cases rather than re-running regression tests.