Agile's core principles may have been originally intended at the software development, but the concept of DevOps has shown that agile's benefits can be experienced by a much larger audience. Collaboration between these two departments benefits just as much as anyone.
Today’s competitive landscape has pushed the need to be agile, and accelerated the pace of business system changes, while making the need for control in IT greater than ever. Today’s IT Operations organizations are experiencing anxiety, as they deal with an overwhelming amount of changes being “thrown over the wall” to their counterparts in Development . These changes need to be accepted and deployed, while frequently IT is unaware of the background, content and impact. At the same time Operations introduces changes from their side – on the infrastructure - that can impact the application layer, leaving developers both unaware and not cognizant of the impact these changes have on further development and testing. So, while IT Operations is actually charged with maintaining stability of the working environment, the introduction of any these types of changes creates risk. The emerging DevOps discipline can show its real value in this arena, bringing these two parts of the organization together.
Change Drives DevOps
One of the main drivers for DevOps is change. Some years back, for application updates you may of had one change a month, then you spent a few weeks stabilizing the application in production, Going back and forth from operations to development and back. This was considered a necessary evil. But if you have 10 changes per day, it becomes difficult. If you have hundreds per day it is impossible. Organizations feel the need to increase speed and be able to react instantly to changing business requirements.
Today, we are talking about continuous integration and agile development practices leading to daily changes. Systems are growing, and are moving out of the traditional datacenter environment, going into cloud and so on. Disconnect between Development and Operations becomes intolerable. How can the operations manager face daily changes, and then also expect to support a working system? With this level of dynamics taking place, the system isn't stable and no one has time to deal with this type of issue. Naturally, as agile change becomes a regular part of the life of IT, this situation requires special treatment, and the changes need special care. The best way to handle these changes is by having its own team, DevOps. They canescort the change throughout its lifecycle - from inception to deployment as well as follow the changes that Operations makes to the infrastructure communicating the impact to Development.
IT Without DevOps is a Disconnected Organization
Changes turn into hot potatoes passed between the arms of the organization. Of course, with a hot potato the risk is always that someone will drop it. For the Operations side, there might be other priorities, that come before requests from the Development organization, service managers, release managers or others who decide to deploy. First of all, who then determines the priorities of changes and related actions?
- Operations doesn’t know anything about a change, never participated in the definition of the change, and doesn't really know what it is, except for a set of instructions. It can be implemented. It could fail,without an understanding about the change and its implications. If it fails, the reasons won’t be apparent to Operations , and this is a problem.
- At the same time, Operations sends their feedback over to Development and to QA, saying which changes didn't deploy properly, and this feedback should be reflected in the architecture view, the application code and in the QA environments.
- Development can claim that they tested it and performed QA, and saw that it works fine in their test environment. As far as Development is concerned, the application works without implications from the change. They can say to Operations, ‘It’s a problem with your infrastructure, or with the way you deployed it.’
Then the typical finger pointing starts, with both sides saying, ‘Not my problem, it’s your problem,’ wasting a lot of time in the release process.
A Set Of Tools to Support DevOps
The three things that need to happen for DevOps to be effective are:
- Ability to define the change in terms of its’ scope and bill-of-material
- Ability to follow the change throughout its lifecycle
- Ability to efficiently share change status and other information and related issues with all the involved parties
Critical to all these areas is automation. It will allow Operations and Development to work together to produce a process that is not error prone.
So that this will not be just a one way process but also a closed loop, information needs to come from development to operations, and go back. In terms of tools, you need a single point of view, a common set of tools creating a common language and enabling an organization to work together. The DevOps team can see this as part of their job, not just as throwing information back over the proverbial wall. When you increase collaboration and all the resources are collaborating then you can ensure that issues are addressed or avoided, rather than just to try and defend a position.
Currently, there is no foundation designed to support DevOps. DevOps needs to build up its organization, processes and supporting technology. A DevOpsorganization could be dedicated or virtual. Processes should be collaboration based. Tools are a must to automate the processes and support the organization.
DevOps Impact on IT Operations: Insight into Change
Today IT Ops is just the intermediary for implementing a change from development into production. DevOps elevates IT Ops to be an integral part of the process. They are able to understand what the change is, assess the impact of the change and plan accordingly. Based on this knowledge they are able to validate what they are doing, and what to validate against. All the unplanned changes, extra-process changes, can be integrated and brought back into the process, closing the change loop.
DevOps Impact on Application Releases: Increase Frequency and Maintain Quality
Accelerated frequency of releases is taking place right now. Yet, often, the pace is increased at the expense of quality. DevOps practices, tools and organizational structure will help to maintain this momentum, increasing the frequency of releases and changes, while maintaining quality. This is important for environment stability, maintaining an optimal balance between control of changes and speed of release - less failures and no need for stabilization periods.
New Platforms Demand a DevOps Discipline
The Cloud provides an opportunity for developers and their customers to drive things on their own, with the ability to provision services and execute them– automatically, with minimum Operations involvement. This means Operations needs even more control and visibility of the environment, in order to support it. They need to know that the change has happened, and they need a connection to the engineering team and the tools to follow the evolution of these environments, which are not always modified by IT Ops directly.
Application changes also impact virtualization, a major technology used as a step towards the cloud. Virtualization makes change transition and deployment processes much more efficient. For example, if you have developed and tested something inside the virtual machine, you don't need to package the change and pass it to the production team, rather, you just give them the virtual image and it is ramped up on the server. The transition process becomes very easy and Operations involvement becomes even lower than before. However, for IT Ops, this becomes a black box to manage. They do not know what is inside images they are using, and so when something happens they are helpless with no visibility.
On the other hand, Operations might have their own standards for base images, complicating the process. How will Development be aware of Operations’ templates of standard images so they can develop based on them? How can they ensure that changes required in the base images make it back to production? So in terms of virtualization, the same link between Development and Operations is very important, but the approach is more about image management and visibility into images, rather than just looking after changes, as happens in physical environments.
Change Is Good
Complexity and dynamics of business applications and IT environments will only grow, increasing risk associated with changes. There's a lot of talk nowadays about DevOps, making Operations personnel and requirements involved earlier in the application life cycle and Development more actively involved in the release and deployment process. Change is an essential part of IT life and right now the change lifecycle has a major gap in it that DevOps can help close.