Tuesday, July 31, 2007

The "bulletproof" deployment

Nothing can slow down a developer's rise up the corporate hierarchy faster than a botched up deployment that negatively affects customers, clients, and the internal staff.

Though it is impossible to dress your deployment in a vest that is 100% bulletproof, there are several things that can be done to ensure that the majority of your deployments will come out unscathed.

1. The first and most important thing that can be done to make the deployment go smoothly, is to bulletproof the code. One of the practices that has made this easier is called Test Driven Development (TDD). This technique involves writing your unit tests before writing the code and using those tests to ensure that the software functionality works as intended. A friend recently brought an article to my attention that shows how much of a impact this type of development can make on a project. The results show a staggering 50% reduction in bugs when using TDD. You can view the document at
http://maximilien.org/publications/papers/2003/Maximilien+Williams03.pdf.

2. Keep a list of any problems that come up during the actual deployments or in the application after the deployments. Use that list to perform last minute testing on future deployments for both the deployment environment and the software functionality. Try to put as many of these tests into automated functionality tests (Smoke Tests) as possible.

3. Keep a check list of activities that need to be performed to prepare for deployments. Some of these activities may include creating "release" builds, updating web references of dependant software solutions, and notifying any enterprise integration partners of the upcoming release.

4. Implement a code freeze with as much time as is needed to really pound on any areas of the application that have changes, as well as do an overview of all other functionality. Have as many people as possible beat on the system and document any issues that arise. Have one person in charge of determining what issues should be fixed for the release and what issues should be logged for a fix in a future release.

5. Finally, after the deployment is finished, have several people access the application and run through various high level tests, which hit the most used functionality.

Good night and happy deploying!

No comments:

Post a Comment