DevOps: Where Does CM Fit In?
I saw this graphical representation of DevOps the other day and wondered to myself where CM fits into this picture. Are we—or were we—even considered when this graphic was created?
Do we fit in the technology operations realm, are we part of the quality assurance role, or do we fit in the development/software engineering arena? I think to answer this we need a clear definition of DevOps, if that is possible. Since DevOps is a relatively young concept, I have yet to find a good definition, so I will put forth several:
Wikipedia defines DevOps as “a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) professionals. DevOps is a response to the interdependence of software development and IT operations. It aims to help an organization rapidly produce software products and services”
The Agile Admin Website defines DevOps as “a new term describing what has also been called 'agile system administration' or 'agile operations' joined together with the values of agile collaboration between development and operations staff.”
SearchCloudComputing simply defines DevOps as "the blending of tasks performed by a company's application development and systems operations teams.”
No matter which definition you choose, or even if you just make one up for yourself, DevOps still needs configuration management. But I fear that configuration management will be sacrificed in the name of efficiency.
With more agile approaches to development and operations, configuration management is sometimes seen as incompatible with agile and even an impediment to progress. This view is mainly due to misconceptions on all sides—dev and ops. I think this can lead to the fallacy that somehow we can replace teams or parts of teams when DevOps is implemented.
By this I mean, if DevOps truly takes hold, we should not be losing operations or development personnel to the new efficiencies gained from the combination of duties. The biggest change will come in how we do our jobs, and how the development and operations teams interact and collaborate.
Pini Cohen, a senior analyst and vice president at Israel-based STKI (formerly META Group), posted on Slideshare a presentation called “Teaching IT One Trick or Two.” He mentions a “wall of confusion” existing between development and operations that I believe should more aptly be called a “wall of mistrust.” This wall of mistrust has been going on as long as there has been a separation of development and operations.
Cohen states that operations sees change as the enemy; development sees bad code, untested applications, and shoddy work as the enemy. Operations teams want to protect the working environment; development introduces instability in those environments. And the wall of mistrust between development and operations grows higher. As more development groups move to an agile approach, they could potentially introduce chaos into the work environment if they implement agile incorrectly.
I believe that CM has a role in making sure that operations and development are on the same page. CM determines whether there will be success or failure. CM bridges the gap between development and operations by providing continuity in the transition between the two teams. This continuity is important in creating the stability that operations teams desire.
Development needs to clean up its act and produce applications that have been unit- and system-tested on a consistent basis before throwing them at CM workers, operations, and QA/QC staff. This will finally tear down the “wall of mistrust” once and for all—and only then can we make real progress.
Now this doesn’t mean that operations and CM don’t have their own issues to contend with, but all sides must come together if we are to have the seamless integration and optimization that DevOps can provide.