Help ops to begin a DevOps implementation the right way
DevOps can be difficult to get right, even with lots of experience. For those forging ahead for the first time, however, the hurdles can seem enormous. Stephen Bigelow explains.
The push is on for organizations to make DevOps implementation, with all of its development and deployment advantages, a priority. But rolling out DevOps for the first time can be a serious challenge, especially for operations groups bogged down by traditional IT silos and practices.
DevOps demands changes on the operations side, and leadership must work to prepare operations for any DevOps transition. It's not just a simple matter of adding a particular tool or system to the existing infrastructure. Success requires a closer partnership between developers and operations staff -- particularly the different groups within operations -- to establish the collaboration, team, tools, practices and infrastructure needed to make a DevOps implementation work.
Prepare to collaborate
Effective communication and collaboration are at the heart of successful DevOps deployments. Developers and operations staff (and even varied groups within IT) must interact well together. Collaboration takes trust, inclusion and empowerment -- attributes that can be difficult and time-consuming to establish. Some organizations may develop interaction by creating interteam focus groups to identify and resolve IT challenges.
For example, 10 development teams are competing for two test environments. One collaborative project might bring developers and operations staff together to better understand developer needs and allow for access to additional test environments. As another example, developers who need operations to spin up new software components faster can work across silos to identify the time and resource requirements to accelerate response times, while ensuring compliance with company policies and regulatory concerns.
Such initiatives or special project groupings are invaluable to identify silos and bottlenecks within the organization. For a DevOps implementation to be successful, business and IT leaders must make a commitment to mitigate traditional silos and team structures. Even when it's not practical to eradicate IT silos entirely, leadership can and should ease those barriers.
Collaboration can also involve tools such as Microsoft Teams (part of Office 365 Enterprise), Slack, HipChat and Basecamp. The choice depends on the preferences and needs of the particular business.
Prepare the operations team
Team interaction has a critical role to play in DevOps implementation. Traditional IT silos tend to foster a sense of status quo, discouraging the kinds of cross-team support needed to make DevOps work. IT staff -- particularly the leaders -- must commit to learning and mutual support intended to eliminate barriers and solve problems. Finding those flexible and committed professionals early on pays dividends in a DevOps transition process. Consider moving those individuals to small, cross-disciplinary teams to facilitate pilot DevOps projects. Smaller teams can also work to refine the operations practices and processes used for DevOps and later share that expertise with other IT groups as DevOps implementation expands.
Smaller IT groups will benefit from cross-training. Rather than relying on traditional administration of compute, storage, network and other silos, operations teams benefit if members share roles and tasks. Team members should also cross-train with all the tools that accompany DevOps implementations -- automation, orchestration, code management, configuration management. They should also be well-versed in the back-end systems that bring automation together with developers' routine work. For example, it's not uncommon for both developers and operations staff to use a configuration management tool, such as Puppet or Chef.
The operations team must also radically change the way in which they perceive or value data center resources. IT professionals traditionally see a server as a long-term commitment -- a pet to be looked after and protected along with its unique idiosyncrasies. The move to DevOps abandons this paradigm, treating instances more like cattle, to be identically provisioned, managed and ultimately destroyed in high volumes.
Prepare IT automation and orchestration tools
Although DevOps depends heavily on collaboration and communication, operations also experiences an influx of tools -- Ansible, Puppet, Chef, SaltStack, Ubuntu's Juju, Jenkins, Vagrant and others -- to support new processes. Tools don't guarantee an effective DevOps implementation, but they're essential components of its success. IT staff must be prepared to use them. Some of the most common tools enable automation and orchestration.
DevOps should accelerate software development and deployment, so automation on the operations side is crucial to keep pace with rapid releases on the development side. Automation reduces the human errors and unnecessary troubleshooting that often accompany manual provisioning processes. Automation also helps ensure that resources get provisioned and managed in accordance with business policies and regulatory constraints, such as security. Tools typically provide robust management capabilities with communication and notification features that facilitate collaboration.
Developers often use these tools, too. Developers can provision and configure IT resources for testing, and a shared tool set offers a valuable frame of reference for operations staff.
Operations personnel should also learn and use some of the tools that developers rely on. Examples include Docker for running containers, Kubernetes for container orchestration, Hadoop for distributed cluster computing and GitHub for software repository management. For example, developers frequently deliver release candidates to a software repository (or repo) and rely on operations staff to pull, compile and deploy the correct version from the repo.
Prepare processes and procedures
DevOps flexibility and speed should not be mistaken for an abdication of control. Operations staff and the greater enterprise must prepare for a DevOps implementation by embracing the appropriate balance between dynamic change and compliance/governance.
This means business and IT leaders must plan for everyday DevOps interactions -- particularly when operations must manage, maintain and protect production systems. Considerations include, but are not limited to, backup schedules; release testing and deployment processes, such as red-blue testing; and rollback procedures. The goal is to facilitate software development, yet preserve the integrity and reliability of production applications.
Many companies lay the foundation for a DevOps implementation with simple, low-priority projects as test beds. Organizations can use those low-priority projects to identify skill gaps, streamline tool integrations and refine the practices or policies that best suit DevOps and business needs.
It is common practice to attach metrics or analytics to DevOps. Operations teams analyze event logs and log correlation to reduce the wait for root cause analysis and service restoration.
The operations team should share these metrics with the developers to help improve the quality of subsequent patches or releases. For example, operations can share logged errors that help developers understand issues that made the release unstable.
Prepare cloud integrations
DevOps does not technically require the cloud, but initiatives often benefit from the speed and flexibility native to public, private and hybrid clouds.
Rather than provision costly local data center resources for software release testing, operations staff turn to the public cloud as an alternative deployment option. With DevOps, it's easy to simply spin up cloud infrastructure as desired, execute the required testing and then destroy the cloud deployment with no further cost or obligation to the business. Similarly, some workloads are more cost-effective to run as a production workload in the cloud than on premises, freeing more costly local resources for mission-critical workloads.
Private clouds give a company the flexibility and services of the cloud when it requires the close ownership, control and transparency of a local data center. The operations team can also construct hybrid cloud infrastructure to connect private and public clouds, which allows for a transition between and integration of local and provider resources.
Success with any cloud technology requires yet another suite of skills and expertise in diverse cloud services, APIs and API integration with automation tools -- to allow the DevOps automation to extend to the cloud. Operations staff must be familiar with architecting the wealth of cloud services needed to deploy large, complex workloads. DevOps teams should evaluate microservices applications and use cloud monitoring data for event and performance monitoring.
Stick with DevOps
The transition to DevOps can be a culture shock, and initial attempts to implement a DevOps culture in operations can stumble or fail outright. But the rewards of operational agility and efficiency are often worth the effort. Introduce DevOps changes in phases with small teams, and focus on easy, low-priority projects where IT leaders can manage roadblocks and failure. Learn from the lessons that failure brings, and make the adjustments needed to get operations ready for a DevOps implementation.