How do you build a DevOps pipeline? From a DevOps practitioner's standpoint, many of the components are obvious: you need tools like a continuous integration server, a test automation framework, an automated deployment platform, and a production monitoring tool. These are the tools that help you move and manage code across your continuous delivery pipeline.
How to build better support and understanding around your company's proprietary codebase. Download now (pdf)
But dealing with code effectively is only part of the challenge of DevOps. There is another requirement that is easy to overlook when setting up a DevOps pipeline: knowledge management. Without a solution in place for communicating and managing the information that your team needs to work with code, your overall DevOps strategy will fail.
After all, since continuous delivery and seamless collaboration are core goals of DevOps, it's only by managing knowledge effectively that you can realize the DevOp's full promise.
Let's take a look at what it means to build knowledge into DevOps.
Knowledge and DevOps
First, let me define what I mean by knowledge within the context of DevOps.
Knowledge refers to everything that someone inside your organization might need to know in order to play a role in your DevOps delivery chain. This includes information such as how to configure your software environments and how to deploy your tools—the type of data you'd typically find in documentation.
However, DevOps knowledge includes other types of information that are harder to integrate into a conventional documentation database. It's things like who is responsible for performing which tasks, which workloads your organization prioritizes (for example, if you are short on resources, which applications should get priority), and what your plans for future deployments or expansion entail.
This knowledge isn't strictly technical; it has social and cultural elements, and it's critical for keeping your DevOps pipeline flowing smoothly.
Integrating knowledge into DevOps
How do you ensure that all of your organization's knowledge is included in your DevOps pipeline? Consider the following strategies and solutions.
Think beyond documentation
Conventional documentation databases (such as Linux man pages) are good for recording nitty-gritty technical details, like which command-line flags do what for a certain tool.
But documentation databases are not a holistic solution for building knowledge into your overall DevOps practice. They're not designed to record social or cultural information and lack collaborative elements. They are also not particularly easy to search through, especially if you're looking for information about a broad topic (like which workloads to prioritize) rather than how to configure or work with a specific tool.
Focus on collaboration
To build on my earlier point about collaboration, any solutions that you leverage to build knowledge into your DevOps practices should allow your team members to collaborate. In other words, your team should be able to communicate and ask questions as they share knowledge. Knowledge should not be treated as a static entity.
Instant messaging tools and forums are one way to implement collaborative knowledge sharing, but be wary of their drawbacks. Instant messages lack permanency, and it can be difficult to collaborate on and follow conventional forums once threads grow more than several messages long.
A better solution is one that lets your DevOps teams ask questions and share answers in a format where the best answers are always at the top and easy to find even months or years after the discussion took place.
Bring different teams together
Doing DevOps effectively requires combining many different types of knowledge and expertise. Developers need to be able to share information effectively with the QA team, the IT team, and possibly even non-technical staff such as marketers (who might help sell the software that your DevOps team delivers) and lawyers (who need to be consulted for compliance-related issues).
Your DevOps knowledge management practices must therefore make it easy for all of these groups to record and share information. They must not require special expertise to use, and they should make information easy for someone from any of your teams to find. For these reasons, technical knowledge-sharing and collaboration tools like Git (which is great if you're a developer, but harder to use for most other people) are often not a good knowledge-management solution for DevOps.
Make knowledge continuous
Continuity -- meaning the constant flow of code and information -- is a key element of DevOps. Anything that interrupts continuity undercuts the speed and agility of your DevOps process.
Therefore, your knowledge sharing and collaboration tools must be continuous too. They must allow your team to keep knowledge up-to-date (after all, the priorities or best practices which you choose to follow today could change tomorrow) and to communicate quickly when issues arise. Tools that are difficult to update, or that only certain team members have the skills to use, don't assure continuous knowledge sharing.
Effective knowledge management is just as critical for doing DevOps as effective code management. Although traditional knowledge management tools are often poorly suited for the fast-changing, continuous world of DevOps, tools that make it easy for anyone on your team to collaborate constantly and efficiently will help fill this gap, allowing you to build knowledge into all of your DevOps practices.
See how Stack Overflow for Teams can transform collaboration within your organization. Learn more