In his Behaviorally Speaking series, Bob Aiello discusses hands-on software configuration management best practices within the context of organizational and group behavior.
Agile software development practices are undeniably effective because they place the essential focus on working software along with individuals and interactions. However, even the most successful companies can face challenges when trying to scale agile practices on an enterprise level. DevOps is going through many of the same growing pains.
Many small teams are successful at implementing DevOps, but they may find implementing DevOps best practices on an enterprise level to be very challenging. This article will help you understand how to be successful implementing DevOps in the enterprise.
Shared Principles and Practices
Agile development and DevOps focuses on a number of important principles: individuals and interactions over processes and tools, working software over volumes of documentation, and customer collaboration over just contract negotiation, and responding to change over following a plan. These are all values that are familiar to anyone who adheres to the Agile Manifesto.
DevOps and agile development share a lot more in common than just a set of principles. Agile development usually requires rapid iterative development generally using fixed timebox sprints. Agile development highlights the value of rapid and effective application development practices that are fully automated, repeatable, and traceable. It is no surprise that DevOps has been especially popular in agile environments because it adapts to iterative development.
DevOps focuses on improved communication between development and operations with an equally essential focus on other stakeholders, such as QA. DevOps at scale may require that you consider organizational structure and communicate effectively with many levels of management. You can expect that each organizational unit will want to understand how DevOps will impact them. You may have to navigate some barriers and even organizational and political challenges. There are other key requirements that often come when we consider scaling best practices.
The first consideration is that larger organizations often want to establish a centralized support function, which may be established at the divisional level or could be a centralized corporate wide entity. This may mean that you have to establish a corporate budget and align within the corporate structure and obviously the culture too. You may be required to create corporate policies, mission statement, and also project plans consistent with other efforts, including business and strategic planning.
Even just purchasing tools that are essential for effectively implementing DevOps may require that you adhere to corporate requirements for evaluating and selecting tools. I have seen some of my colleagues become frustrated with these efforts as they felt that they already knew which tools should be implemented while their organization leaders wanted to see a structured tools evaluation with transparency and participation by all stakeholders.
These efforts, including a proof of concept (POC), can be used to spread the word and help overcome resistance to change that often can be seen in larger efforts to implement any best practice, including DevOps.
My suggested approach is to initially pick a pilot project that has high visibility within the organization, such as a trading system, and is one I can handle the right way. In practice, I have often had to juggle day-to-day duties supporting source code management or automated application build, package, and deployment. With a challenging “day-job,” it can be difficult to also have a “star” project to show the value of doing things right from the beginning, but this is exactly how to get started so you can demonstrate the success that the organization can enjoy by adopting DevOps.
Once the pilot project has been shown to be successful, it is time for you to consider rolling out DevOps throughout the enterprise. For DevOps practices to be effective in the enterprise, they must be repeatable, scalable, and fully traceable.
You need to consider establishing a support function to help each of the teams with training (including tools) and ongoing support. The implementation of these practices must adhere to all of the corporate policies and align with the organizational structure and culture. DevOps also must address the requirements of the organization's technology platform. In practical terms, this usually brings me right into the cloud because the resource requirements will likely change and organizations must be able to scale and meet the technology infrastructure demands.
Into the Cloud
Every large organization that I know of has been embracing cloud-based technology and cloud-based development. Implementing DevOps must also include the ability to support the cloud in several important ways. For instance, provisioning servers in the cloud is a very important task that allows DevOps to truly show its value by enabling the rapid setup and implementation of infrastructure as needed. In fact, managing cloud-based development is much more difficult without the improved communication and deployment automation that has become synonomous with DevOps.
DevOps in the enterprise requires some specific organizational skills, including scripting, application development, and systems administration. You need to understand the organizational and structural requirements that are essential in implementing DevOps in the enterprise.
One of the considerations that must be considered is the ability to support business continuity. Events, such as hurricane Sandy that hit the northeastern US coast with unexpected fury, highlight the importance of being able to quickly provision and deploy servers that support a scalable and flexible infrastructure. DevOps is the glue that we need to manage the enterprise infrastructure and support the business goals.