How Agile Principles Relate to System Administration
Agile methodologies are commonly associated with development methods today, however as system operations becomes more complex, the concepts from agile development are now becoming vital for managing complex server networks. As discussed in a previous article, system administration and software development are similar to the point that a new field – DevOps – has emerged as a way for administrators to keep systems in sync regardless of whether their server cluster contains tens, hundreds or even thousands of servers.
What is Agile
Although agile principles are not mandatory for proper DevOps integration, the emphasis on rapid change is a helpful skill for virtually any system administrator. The agile methodology is clearly spelled out within the Manifesto of Agile Development. In general the focus of these ideals revolve around professionals constantly embracing change and being ready to handle even the largest curveballs.
As it relates to system administration, agile development is focused on deploying system updates in a timely manner while keeping the quality of the deployment at a high level.
What is Scrum
Below is a high level overview of the components which go into a typical Scrum workflow – one of the most common methodologies in use today.
Agile comes in many forms, but the one of the most popular methodologies is Scrum. This involves building a small cross functional team to work together on a product rather than having functions spread across the organization. The primary roles of Scrum teams include:
- Product owner: This is the business person who determines what features are greenlight and when.
- Scrum master: The project manager
- Team: Typically five to seven developers writing code
- Testers, security and other support roles: The extent of this work varies based on the project.
In larger settings there might be additional roles such as legal, customers, management and others, however the above are the primary components of any project.
During this phase, all required features are brainstormed and added to a master list known as a “product backlog.” This file should contain all details relevant to your system tasks. The backlog is then broken down into smaller chunks such as release backlogs (features for specific stages) and sprint backlogs (tasks for a sprint). Sprint backlogs are a work breakdown of tasks to be completed.
At this stage, the developers and operations staff help to create the backlog while the product owner focuses on prioritizing each task.
This is when tasks are boxed into compartments which must end by the termination of the sprint. At the conclusion of the sprint, features should be ready to deploy.
During the sprint there are daily “standups” – fifteen minute status meetings where everyone reports on their accomplishments and explains any roadblocks they are facing. These face to face meetings help to keep staff accountable while the short timeframe keeps them from cutting too much into employee schedules.
As staff make progress against the backlog, they log their changes on a burndown chart. This allows you to see whether you are on track to meet all required benchmarks. Keep in mind that this chart isn’t meant to be a straight line because teams never move at a steady pace and projects always have different dynamics.
Implementing Agile Principles
For system administration, the best way to implement agile principles in the datacenter is to focus on using command line scripts to automate common deployment tasks across systems. By using tools such as Chef and Puppet system administrators can turn common tasks into modular code which can be mixed and matched as needed.
With this approach, system administrators can focus on ensuring machines are operating efficiently while developers can focus on creating complex scripts to improve operations.
Proactive Planning Goes a Long Way
Although agile methods can be daunting at first for professionals working in traditional settings, by embracing them, the long term payoff can be significant. Keep in mind that proper implementation of agile principles requires a significant adjustment in the way your teams work together. Rushing into agile principles is a recipe for disaster as it will cause your team to work in an unnatural way.
Ultimately before shifting your company to agile methods, you will need to ensure that your development and operations teams can work together efficiently and that they are able to work with rapid iterations.