DevOps 101 - Management
In my previous article on the history of DevOps, I outlined the following pillars of the DevOps methodology
- Communication and information sharing
The First Pillar
In this article I'll touch on the first pillar of DevOps: Management. Dictionary.com's definition for the term "management" gives a good direction to focus on to cover this topic.
"Management : The act or manner of managing; handling, direction, or control"
Managing is a bit ambiguous, but handling, direction, and control are right on target with regards to DevOps. DevOps is a set of tools and methodologies to help Developers and IT Operations work together to push software updates through the system faster and more reliably.
If you think about it, DevOps is very similar to an airline company. The goal of an airline company is to get a person from point "A" to point "B" faster and more reliably. Much like the developer and IT teams try to get software from the developers workstation to the application server hosting the application for your user base.
The Three Managements
Many of the concepts involved in DevOps come from three types of management processes: Software Configuration Management, Enterprise Systems Management, and Software Application Release Management.
Software Configuration Management
Software configuration management (SCM) is the task of handling and controlling changes in software by utilizing revision control and the use of code stability baselines. Revision control gives a view into who changed what and when and can also help with determining how to replicate configurations across servers. SCM provides identification, control, auditing, build and process management, teamwork, and defect tracking.
There are literally hundreds of free and commercially available software solutions to help with revision control. Wikipedia has a nice list under "List of revision control software".
Enterprise Systems Management
Once the organization has control of the software, it must be able to control the administration of the servers and distributed systems used to build and deploy the software. Systems management includes taking software and hardware inventories, monitoring and metrics, anti-virus and anti-malware software, system and network capacity and utilization monitoring, storage, and security. These tasks fall into the following management functions
- Fault - troubleshooting, logging, and recovery
- Configuration - hardware and software inventory, provisioning, and software deployment
- Account - billing and statistics
- Performance - software metering and event/metric monitoring
- Security - identity and policy management.
As with the software configuration tools, there are more options here than I can list. I'll refer you to another Wikipedia listing on systems management systems.
Application Release Management
Release management is the process giving direction to software releases from development, to test, and finally through to final software release. Release managers are key to this process and they typically handle being a facilitator between business units, a gatekeeper to builds and systems, and being a coordinator of source locations, projects, and release process teams.
The advent of Agile software development has brought on a much higher frequency of releases which have led to increased dependency on the release management teams to track and execute on complex release processes. Release teams have used methodologies such as Information Technology Infrastructure Library (ITIL) to help achieve these needs.
The list of tools in the release management space is not as broad as it's configuration and systems management counterparts. Popular solutions includes ones from Distelli, Chef , Puppet Labs, and Octopus Deploy.
Management is just one component in the DevOps "stack". In the next article I'll be discussing how Integration fits into the DevOps puzzle.