Modern Releases

software dev chain

Automation is everywhere nowadays. The driver? More frequent releases. The press for automation really got started with the goal of releasing software every two weeks. Back when you physically copied software onto a set of floppies, you really only wanted to do a release every year or two - it was just too expensive to deal with refreshing physical boxes. As software moved from boxes to servers, it became entirely reasonable to ask, "why not update the software more often?"

This started with the software developers. They started using tools like JUnit and NUnit to get immediate feedback on the quality of their software. This wasn't that hard - more of a cultural shift than a technical shift, but if you are used to getting an error back from a compiler getting an error back from your test suite is just another safety net.

Next affected were the quality assurance staff. The developers started to point out how effective they were using things like JUnit/NUnit, and started asking the QA team to do the same thing. This led to a shift toward automation (the Software Developer in Test, or SDET), and a lot of soul searching on the part of manual testers that never wanted to learn how to code. Interestingly enough, web testing (e.g. using tools like Selenium) in many cases can be as hard as "regular" development.

Finally, we are getting to the last piece of the puzzle. The world of IT/Ops traditionally has revolved around keeping systems secure, up and running in production. For traditional packaged software (think back to those retail boxes) this is an entirely reasonable scope. Put in the context of a development organization that wants to ship new software every two weeks, and all of the sudden manually installing and patching starts to look a lot less attractive.

Just like the QA team, the IT/Ops team has two choices. They can either push back and fight the process ("automation is bad"), or they can evolve and adapt. The same way the QA field wound up adopting a new role to describe this evolution (SDET), the IT/Ops world is also adding a new role, "Devops."

There are a number of great new tools in this space, including Puppet, and Chef. Tools like these, in conjunction with virtualization and public/private clouds, are the only way to scale up the new applications and infrastructure in a cost effective manner.

Many companies have taken these advances in development, testing, and operations and used it to achieve a constant flow of stress-free releases. The more business owners become aware of the option of continual, high quality releases... modern releases... the more they will demand it.

Further reading: