How to implement DevOps successfully
DevOps is a model for improving the way software is developed, released and continually enhanced throughout its productive life.
While Agile has been instrumental in product development teams regaining the trust of their business colleagues, it has unintentionally left IT operations behind. DevOps is the final piece of the Agile puzzle, extending the high-frequency releases of Agile development teams to the production environment.
But DevOps is constantly evolving, driven by a diverse community of practitioners. Its less formalised nature (compared to other IT frameworks such as ITIL, Prince and TOGAF) can lead to confusion as teams try to apply the key principles and figure out where to start. Having implemented DevOps for clients all over the world, we see three areas where organisations can get started:
Process – Adopt Lean practices
By focusing on processes between teams, organisations can move more quickly from development to production operations, improving feedback at each stage in the process. We find the best way to do this is to use Lean practices to find and remove inefficiencies. In fact, it’s where we’ve started with clients across industries as diverse as retail, financial services and manufacturing. This means:
- Visualising work with a Kanban board so teams can see how they fit into the wider system and how much work is coming their way.
- Forming cross functional teams to improve communication and smooth the flow of work through the system.
- Limiting the amount of work in progress and having teams pull work from the previous stage when they have capacity, rather than it being pushed to them. This also lets teams set limits that maintain a sustainable pace and leave room for continual improvement.
- Reducing the size of batches so they move through the system more quickly, making it possible to get quick feedback and reduce risk to the live service.
By implementing these steps, teams will naturally experiment and improve the process of developing software and releasing it to production.
Technology – Improve technology and automation
Introducing DevOps tools (such as database or configuration management) to automate more of the release process can improve quality and speed up the cycle of developing, testing and releasing software. Having introduced many tools at clients in the public sector, financial services and utilities, we’ve found some great approaches in the booming DevOps tools market, including:
- Adopting continuous integration to merge working code changes into a shared repository on a real-time, hourly or daily basis supported by new working practices and tools such as Travis or Jenkins.
- Automating testing throughout development to identify bugs earlier when they’re easier to fix.
- Using cloud services to help operations and development teams collaborate and create ‘self-service’ capabilities that largely automate frequently repeated tasks.
- Embedding tools such as Jira and ServiceNow that make it easier to share information about work in progress, upcoming work, system state and service. incidents.
- Developing new applications or refactoring legacy applications around a microservices architecture to de-couple dependencies, enabling rapid change and improving resilience.
People – Adapt culture
People are vital to DevOps - organisations must bring together development and operations teams, instilling the right leadership behaviours and building knowledge, understanding and empathy. In our experience of adapting cultures for DevOps, however, it’s notoriously difficult to change how people think, work through organisational politics and overcome fear. Some of the approaches we’ve found to address the people challenge are:
- Training people in Lean and Agile to increase their understanding of key concepts and approaches.
- Ensuring change leaders come from all levels of the organisation, not just the top.
- Creating value and belief statements based on insights gleaned from employee focus groups.
- Physically or structurally moving operations staff and development teams together.
- Investing in developing the skills needed for people to work effectively in cross-functional teams.
- Updating job descriptions to reflect the changes as development and operations teams work more closely on both production and non-production environments.
So, where should you start? The answer, unsurprisingly, is “it depends”. Ultimately the DevOps journey will need organisations to tackle all these areas to gain the full benefit.
But we’ve seen organisations start getting benefits by focusing on one approach, using the learnings from that to inform how they tackle the other aspects. For example, one client focused on creating a small cross-functional team to address a particular project need. This team adopted several approaches from the ‘Process’ section above and as they became proficient in those practices, they looked at tools to help them automate and improve further. The success of starting small created the momentum for the organisation to think about all the areas above and move onto a wider adoption.
When choosing which to focus on first, think about what you’re trying to achieve. Do you want to improve the speed of delivery? Your ability to experiment with customer preferences rapidly? The stability and resilience of the production service during change? Security? By working out what your aims are, you can find the path to take to begin your journey.