I have a post covering an example of making significant changes with near-zero downtime:
This is where we start the decline phase in our story. Our temporary procedures existed as a bridge from the old procedures which took
ClientID
and new procedures which will takeProfileID
. With our final versions of procedures, we replace@ClientID
with@ProfileID
in the input parameters and update any conditional logic within filters to useProfileID
instead ofClientID
.The only remaining use of
ClientID
in these procedures is as an output in select statements, as we still need that for the old code; by this time, all of those references areProfileID AS ClientID
. Otherwise, these new procedures are built aroundProfileID
.We still have the original procedures that the application code uses and they reference our now-finalized procedures. These procedures are now transition procedures—we need them right now but as we move application code over to the new procedures, we can deprecate these. But I’m getting ahead of myself a little bit.
Click through for the full story as well as a bunch of pictures which completely understate the vastness of work done.