Let's consider what our goals should be in deploying or upgrading an application. Put another way, how do we measure success? One might be tempted to say that how well the application performs is equivalent to how well the deployment went. However, that would be misleading. At this stage, we don't concern ourselves anymore with functional design, programming, or testing. We are operating on the assumption that we have a fully functional application that needs to be deployed. Whether it works as expected may or may not still be our problem, but it has nothing to do with the deployment itself.
How then, you may ask, will we determine whether the deployment went well? What shall we strive for in coming up with a deployment plan? As you may have guessed, I have a couple of ideas on the topic.
First, a deployment should happen quickly. If you have been deploying applications manually, you will be surprised as to how much of that activity can be automated if only it is planned...