My notes from the DevOps Handbook

by Gene Kim, Jez Humble, Patrick Debois, John Willis

59. Use chat rooms and bots to automate and capture organizational knowledge

Chat rooms are also used to trigger automation.

The goal was to put automation tools into the middle of the conversation in their chat rooms, helping create transparency and documentation of their work.

Chat room automation benefits:

Chat rooms inherently record and make all communications public;

Similarly, commits to the source code repository and the commands that trigger production deployments both emit messages to the chat room.

Automate standardized processes in software for re-use

Instead of putting our expertise into Word documents, we need to transform these documented standards and processes, which encompass the sum of our organizational learnings and knowledge, into an executable form that makes them easier to reuse. Put it into a centralized source code repository, making the tool available for everyone to search and use.

Create a single, shared source code repository for our entire organization

A firm-wide, shared source code repository is one of the most powerful mechanisms used to integrate local discoveries across the entire organizations When we update anything in the source code repository (eg. a shared library) it rapidly and automatically propagates to every other service that uses that library, and it is integrated through each team's deployment pipeline.

We put into our shared source code repository not only source code, but also other artifacts that encode knowledge and learning, including:

Consider the real-life example of an organization that runs eighty-one different versions of the Java Struts framework library in production - maintaining all those versions, each with its own quirks and idiosyncrasies, creates significant operational burden and stress.

The single source repository solves much of this problem, as well as having automated tests that allow teams to migrate to new versions safe a confidently.

If we are not able to build everything off a single source tree, we must find another means to maintain known good versions of the libraries and their dependencies. For instance, we may have an organization-wide repository such as Nexus, Artifactory, or a Debian or RPM repository.