Chapter 38. Skyscrapers Aren't Scalable

Michael Nygard wrote Release It! Design and Deploy Production-Ready Software (Pragmatic Bookshelf), which won a Jolt Productivity award in 2008. His other writings can be found at http://www.michaelnygard.com/blog.

Michael Nygard
image with no caption

WE OFTEN HEAR SOFTWARE ENGINEERING COMPARED to building skyscrapers, dams, or roads. It's true in some important aspects.

The hardest part of civil engineering isn't designing a building that will stand up once it is finished, but figuring out the construction process. The construction process has to go from a bare site to a finished building. In the interim, every worker must be able to apply his trade, and the unfinished structure has to stand up the whole time. We can take a lesson from that when it comes to deploying large integrated systems. ("Integrated" includes virtually every enterprise and web application!) Traditional "big bang" deployments are like stacking up a pile of beams and girders, throwing them into the air, and expecting them to stick together in the shape of a building.

Instead, we should plan to deploy one component at a time. Whether this is a replacement or a greenfield project, this has two large benefits.

First, when we deploy software, we are exposing ourselves to the accumulated technical risk embodied in the code. By deploying one component at a time, we spread technical risk out over a longer ...

Get 97 Things Every Software Architect Should Know now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.