October's Denver Drupal meetup was focused on "DevOps," with a presentation by Ned McClain from Applied Trust. Ned had given a similar presentation at the Boulder meetup last month, and kindly agreed to make the trek to Denver for those of us who missed the first one. Ned started by talking about changing approaches to development, quickly explaining the difference between the traditional "waterfall" approach with bigger release cycles, and the "agile" approach with smaller release cycles. While developers like faster change, operations people want stability. DevOps is the process of reconciling change and stability to get the best of both.
So how do we do that? With tools! Ned talked about tools in 4 areas: configuration, monitoring, testing, and deployment. For configuration, cloud hosting services generally allow re-applying server configurations on multiple instances, so you don't have to re-create the configuration every time you create a new server. Tools like Puppet and Chef also help manage configurations. As a simpler first step toward more automated server configuration, Ned also suggested putting Apache's .conf files into version control like Git.
For monitoring, Nagios and Icinga are two branches of what was once the same product, now split into proprietary (Nagios) and open source (Icinga). Both watch your sites and create logs and pretty graphs of how quickly they respond. If you've ever had a site crash, these tools can help you figure out what happened, or even take action before disaster strikes.
For testing, Selenium is a good browser-based tool, and of course the SimpleTest module helps with server-side testing. SimpleTest is used on Drupal.org for automated testing of patches, so you've probably seen it if not used it. For both tools, you simply define some actions and the expected results (e.g. load this page, expect this text on the page), and the tools will tell you whenever something unexpected happens.
Finally, Ned covered deployment tools. I particularly enjoyed his description of this problem as "tough as a honey badger." Both Drush and Git help smooth deployment, but ideally we could automate the whole process. Pantheon is starting to solve the Drupal deployment problem by established a standard process for hosted sites. If that process works for you, Pantheon makes deployment incredibly simple. If you need something a little more custom, Jenkins allows you to define specific steps in your deployment process, optionally with variable input, and run those steps whenever you want. For example, if your deployment generally involves copying files from one server to another, you might set the two servers as variables, standardize which files to copy, and then just enter the site names any time you want to repeat this process.
Jenkins is great, but it's not quite Drupally enough for Ned, so he made an alternative: the Job module. Currently a sandbox project, the Job module uses familiar Drupal tools like Webform and Rules to define deployment steps. So it's like Jenkins, but even easier to use for Drupal people. Awesome!
All of these tools require some initial investment to learn and configure, of course, but the idea of DevOps is this will save much more time in the future. If you're interested in this area, Ned also pointed to the new DevOps group on groups.drupal.org.
After the presentations, we did open question and answer, including an informal poll on how everyone feels about the Rules module (result: most people liked it, some ambivalent, zero haters). Finally, a few of us braved the rain and headed to Rackhouse to socialize. If you're looking for more Colorado Drupal, plans are in the works for another open office night next Tuesday, this time in Fort Collins. We'll start organizing carpools on groups.drupal.org as soon as the location reservation is confirmed.