David Anderson On Beach
 
 
 
 
 
BlogEntry
Tuesday, November 27, 2007
 

Enterprise Scale Continuous Integration

 

Back in January when I spoke at the OOP conference in Munich, I described how I didn't believe that continuous integration scaled to enterprise level. Indeed, we hadn't managed to make it work. What we were doing was taking a more Lean approach to integration - little and often - and moving to fewer codelines. We were achieving this by implementing latent code patterns that enabled several projects to live in the same environment and avoid the problem of new code accidentally escaping in to the wild when another project was due for release.

This was all very well and given enough time and enough focus on Lean principles we might yet have evolved to a continuous integration approach for the enterprise but it would have taken years.

For the past six months I've been lucky enough to have Troy Magennis on my staff as our Enterprise Architect. Troy brought a wealth of experience in .Net and C# and large scale Microsoft technology projects to our team. Given that we suffer numerous impacts to our productivity with the constant challenge of code line management, integration, build and environment build out and reset, Troy refused to accept that continuous integration wasn't possible, and indeed in his view it was essential to eliminating waste and maintaining a regular flow of valuable software in to our production environments.

So together with one of our architecture team and a toolsmith from our configuration management group, they spent some considerable time and effort tackling the problem of how to build our entire enterprise code base in a continuous fashion. A few weeks ago, they finally achieved it and we now have cruise control reports on the state of our enterprise code base at any given time.

This doesn't mean that our enterprise DEV environment can be pushed to production whenever we choose. At least not without successful implementation of latent code and full regression testing to show that the new code is truly latent, but the result is that we have reduced our code line maintenance to a single line for all major projects in our portfolio plus a branch for sustaining engineering (released on a 2 week cycle).

At my prompting Troy has gathered his thoughts on Does Continuous Integration Scale to Enterprise Projects? what it takes to achieve enterprise scale continuous integration and how to implement it, in a white paper available over on his blog. You can get it in PDF here. The main takeaway from this article isn't a revelation about configuration management or build tools. The key to enterprise scale continuous integration is solid enterprise architecture and enforcement of good software engineering principles of loose coupling and high cohesion across all projects in the portfolio.

Yes, all you agilistas out there! Architecture does matter, if you are to scale agile techniques to the enterprise! Technorati tag: Agile, Software+Engineering, Enterprise+Architecture

     
 
           
hosted by likk.net
Weblog Commenting by HaloScan.com