I predict that in 2012, DevOps will become the new IT buzzword, joining cloud, web services, Scrum, and many others in the buzzword pantheon. We in the agile community have been bouncing it around a fair bit as of late, and it seems to be gaining steam within the IT community in general.The basic premise behind DevOps is that your development strategy and operations strategy should reflect one another, and you should strive to optimize the whole IT process. This implies that development teams should work closely with your operations staff to smoothly deliver new releases into production, and that your operations staff should work closely with development teams to streamline critical production issues.
Let’s explore DevOps in greater detail using three dimensions critical to DevOps success: process integration, tool integration, and data integration.
There are activities in your development and operations processes that affect transitions between teams, and these activities must reflect the realities of both operations and development. Examples include both the deployment of a solution into a product and the resolution of production problems caused by defects in a solution (which therefore must be fixed and redeployed).
Tool integration occurs when one tool leverages an interface provided by another. Interfaces may be tool specific, such as an API, or more generic (and scaleable) based on an open standard specification such as Open Services for Lifecycle Collaboration. For example, to enable the release of a solution into production, a deployment tool could access production configuration information maintained in an asset management tool. To enable reporting of a problem with an application, a support management system could register the defect report into the work management tool used by your development teams.
Data integration occurs when tools can work with easily with one another’s data. For instance, on the development side a released solution may include quality results, configuration information, and proof of regulatory compliance. In operations usage, statistics are tracked and configuration and installation details are maintained for the solution. Federation of this information enables consistency and accuracy between the development and operations teams through improved data quality, which in turn reduces overall costs and even potential outages.
Agile Development Strategies for DevOps
DevOps has its roots in agile software development when agilists realized that they needed to work effectively with operations staff in order to release often into production. Because of these roots, there are several agile development strategies that enable effective DevOps throughout the agile delivery lifecycle.
Initial Requirements Envisioning
At the beginning of the project, disciplined agile teams invest time identifying the high-level scope in a lightweight, collaborative manner. This includes satisfying common operations requirements, such as backing up and restoring data sources, instrumenting the solution— which refers to adding functionality to the application to log critical actions— so that it can be monitored in real time by operations staff, or architecting the solution in a modular manner to enable easier deployment.
Initial Architecture Envisioning
Disciplined agile teams also identify a viable architectural strategy reflecting the requirements of their stakeholders and your organization’s overall architectural strategy, hence they need to work closely with your enterprise architects and operations staff. The agile team needs to ensure that it is building (or buying) a solution that works well with the existing operational infrastructure and negotiate with operations staff any infrastructural changes (such as deploying new technologies) early in the project. The team must also ensure that operations-oriented requirements are addressed by the architecture from the very start.
Initial Release Planning
As part of release planning, the disciplined agile team works closely with