As software development becomes more complex and iterative, rather than monolithic, IT ops teams need a methodology to help manage CI/CD successfully.
Approaches such as Agile have been successful, but DevOps has become more popular over the past few years. One approach that has garnered a reasonable following, however, is Scrum, which is often associated with an Agile approach.
What is Scrum?
Named after a move in the British ball game Rugby, Scrum first appeared in a paper written by Hirotaka Takeuchi and Ikujiro Nonaka in 1986. The name choice emphasizes that Scrum is a team-focused approach, with Scrum team members called Scrum Masters.
Agile focuses on four core values:
- Individuals and interactions -- with a focus on processes and tools
- Working software -- in preference to comprehensive documentation
- Customer collaboration -- rather than contract negotiation
- Response to change -- rather than follow a restrictive plan
Scrum applies a framework around Agile's core values while also ensuring that other areas of an IT environment are not discarded completely.
The idea behind Scrum is to take a problem -- the customer's request -- and break it down into discrete, smaller tasks that individuals or small IT ops teams can solve. Business and customer problems make up a product backlog that is then analyzed through a rapid sprint planning session and broken down into a sprint backlog.
Scrum teams hold daily scrums to break backlogs down into tasks. At the next daily scrum, teams review the tasks to see if the required progress is complete. If so, the code becomes available as an incremental update and a sprint review carries the feedback to sprint and product backlogs. Decisions are then made on what new tasks go into the sprint backlog. As the sprint backlog depletes, the product backlog can bring in new tasks, or remain empty.
Daily scrum meetings should focus on progress and needs, rather than technical issues. Customers can -- and should -- be involved to provide direct and timely input for any requirement changes.
The DevOps approach
Much of this might sound familiar to DevOps practitioners, though. DevOps breaks down large requirements into smaller packages of work and moves them to provisioned operational software -- a few steps further than Scrum does.
However, many DevOps developers might not look at their approach with the same granularity that Scrum does. In many cases, DevOps is a process flow aid: It moves code through the development process, puts in place a provisioning capability to move code through to the operations environment and enables feedback loops between the operations and development environments.
DevOps also tends to pay less attention to the customer. Many DevOps practitioners request requirement statements from the customer, and then use DevOps to fulfill that, which is more similar to Waterfall-style approaches.
DevOps vs. Scrum
DevOps identifies automation opportunities to improve overall efficiencies in code development and provisioning through reducing friction in processes: It does not work as an end-to-end environment to manage everything from customer requirement to running code.
With Scrum, IT ops teams must learn a new way to approach problems, with a focus on project methodologies rather than code mechanics. The difference between Scrum and DevOps is Scrum defines how to solve problems, whereas DevOps provides the means to solve those problems.
Therefore, DevOps and Scrum can come together. Scrum focuses on development and provides a deep but granular approach to manage rapid development. It does not move code into operations -- it indicates that such code is ready for provisioning.
Meanwhile, DevOps spans the two environments but generally does not provide the task-level capabilities of Scrum.
Note the "generally" here. There is no reason why DevOps tools cannot come with Scrum capabilities built in. For example, Microsoft Azure Boards is an environment that brings together GitHub repositories with Agile approaches, such as Scrum or Kanban, to provide a console to monitor progress, known bugs, upcoming features and backlogs. In addition, Atlassian provides high levels of automation in DevOps environments through its Open DevOps and Jira product line that encompasses Agile approaches within a highly functional DevOps tool set.
Scrum -- or any Agile approach -- and DevOps are not mutually exclusive. Do not bring the two in and run them in separate environments. DevOps practitioners should look to how Scrum can be interwoven within DevOps tools. This leads to better feedback loops at the early stages of the DevOps process, maintains constant interactions with customers and ties downstream feedback loops from the DevOps system into Scrum meetings and discussions.