Historically there has been a divide between the Systems Administration (Operation folks) and Software development (Application folks). This divide often results in services being released that only partially meet customer/business requirements and leaves the organization with the perception that operations is often inefficient and ineffective. This riff is not of our own making. In the past it has been caused by a combination of conflicting goals, objectives, processes, and tooling.
Development-centric people tend to believe that change is good. As a matter of fact it’s the thing that they are paid to realize. The business depends on them to be agile to the changing business environment. Because of this correlation, they are often rewarded to create as much change as they can and do it as quickly as possible.
Operational people on the other hand, have institutionalized the belief that change is the nemesis of who they are. The business depends on them to keep the lights on and deliver the services that help them to create the necessary business outcomes their customers rely on. Operations is driven to resist change as it damages stability and reliability of the IT environment. It’s not uncommon to hear in many operational meetings, the statistic that 80% of all downtime is caused by changes which have not been properly assessed.
So what’s the benefit of DevOps? It’s a movement, a train of thought that allows us to remove the barriers to becoming more effective, increasingly nimble and less segregated by organizational structure and objectives, with greater alignment of strategic, tactical and operational goals. In theory this is accomplished by:
- Organizational change, which is the one thing everyone agrees that they hate most. Organizational change is difficult at best and is often resisted when the proper planning and ultimate goals are not properly communicated at all levels.
- Unified processes, the entire development-to-operations lifecycle must be viewed as a single end-to-end process. Distinct practices can be followed for the individual pieces of the processes, with the intention that all of the segments can be aligned and communicated with the intent to form a unified process across multiple functions and divisions.
- Unified tools, all individual tools be must be considered as part of a larger tool chain that spans the entire Development to Operations lifecycle. Tool choice and implementation decisions need to be made in the context of their impact on that end-to-end lifecycle.