Mark Needham

Thoughts on Software Development

Can we always release to production incrementally?

with 4 comments

Jez recently linked to a post written by Timothy Fitz about a year ago where he talks about the way his team use continuous delivery which means that every change made to the code base goes into production immediately as long as it passes their test suite.

I’ve become fairly convinced recently that it should always be possible to deploy to production frequently but we recently came across a situation where it seemed like doing that wouldn’t make much sense.

The project involved replacing an existing website but rebranding it at the same time. One of the key goals of the project was to create a consistent brand across the whole site.

Therefore it seemed that if we chose to incrementally deploy to production then we’d need to spend some time updating the old website so that the look and feel was the same across both versions of the site.

The overall time to finish the project would therefore be higher and the value that we’d get from actually get from putting something into production early probably wouldn’t justify the extra effort that it’d take to do so.

In this situation the most effective strategy seems to be to still deploy as frequently as possible to a production like environment internally but only deploy to live when the whole thing is done.

If we’re replacing the backend of an old system and the end user won’t see anything different then an incremental deployment approach is certainly worthwhile but when brand consistency is the most important thing I’m not sure that it still makes sense.

As always I’d be keen to hear if anyone’s done anything similar and if there are any ways around this.

Written by Mark Needham

August 16th, 2010 at 4:22 am

Posted in DevOps

Tagged with

  • http://codeassassin.com Jason Stangroome

    Hi Mark,

    I am a strong believer that there can be business value in performing maintenance (albeit minor) on an old/legacy system so that it can better coexist with a new system and allow you to deploy to production sooner and more regularly.

    One just needs to consider the cost of the extra work versus delivering new features to users immediately instead of weeks or months later.

    Every time I’ve worked on a project this way it has worked well.

    Regards,

    Jason

  • http://updyke.com/ Dustin

    Hi Mark-

    We recently had this very same issue with rebranding a massive site and a need to do the initial roll out in a big bang manner.

    Having the luxury of not doing an in place upgrade, we simply built everything on a new system, and with some host file mojo, were able to test and run everything as if it were live for weeks during the run up to release.

    While this was effective in getting our own work done, and getting sign off from internal stake holders, it never mitigated our fears of the general public roll out, so we did spend a lot of extra effort getting people who would use the software to have a look at it and gather their feedback, adjusting where it made sense.

    In the end, it was a lot of extra effort, particularly in such a large organization. I couldn’t imagine trying to do something like this as an in place upgrade.

    Dustin

  • Pingback: Tweets that mention Can we always release to production incrementally? at Mark Needham -- Topsy.com

  • http://arnon.me Arnon Rotem-Gal-Oz

    We had a situation where we made a significant change to the architecture (in an incremental way) so that in the some of the interim stages the new system performed much slower than the live system.
    I guess we could have deployed the two versions in parallel but that would have meant double the computing power so it made more sense only to only deploy to the staging environment until the change was complete
    So yeah continuous deployment is desirable but I don’t think the costs are always justifiable

    Arnon