ChatOps, a term credited to GitHub, is an increasingly popular way of automating parts of the software development pipeline. By leveraging the power of modern chat applications like Slack and HipChat, the goal of ChatOps is to:
- Bring attention to tasks that happen without much visibility
- Reduce communication friction between team members
- Contribute to speedy software release cycles
In this article, we will talk more specifically about what ChatOps is (and its required tools), how it can help you, and what challenges you might face during implementation.
What is ChatOps?
DevOps + IM = ChatOps
ChatOps is a collaborative DevOps model based on chat applications or tools that facilitate real-time conversion and task execution between members of development and IT operations teams. You will sometimes see this model talked about as “conversation-driven collaboration or conversation-driven development.”
What You Need to Facilitate a ChatOps Workflow
1. The Chat Application
The chat application (such as Slack or HipChat) is where everything that’s part of the workflow gets tied together and where people can go to see what’s happening. In addition to its communications features, these programs include things like:
- File sharing and storage, so that things are accessible in the future
- Search, so that you and your team can learn from prior experience and not need to reinvent the wheel
- Timestamp and threading, so that everyone understands the flow of events
- The ability to integrate with various third-parties so that these apps can send notifications to the chat app and receive commands
The bot (GitHub’s Hubot is one of the most famous) is what facilitates all of the action occurring in a ChatOps workflow. Its two-way communication features allow you to issue it commands and ask for information. In return, the bot executes tasks (such as issuing commands to your third-party integrations) and provides you with the requested information. In addition, you can select any of the many bots available to extend your workflow functionality even further (for example, you might configure a bot to check-in with your teammates on tasks they’ve completed the previous workday).
3. The Product Integrations
While one of the benefits from a ChatOps workflow is the improved quality of communication (and simultaneously, a decrease in unhelpful communications, such as an email chains to those who are on the team, yet don’t need to be kept in the loop regarding a particular process), the greatest one is the ability to carry out actions, such as starting deployments and running tests, via the chat window. Doing so requires you to integrate your chat app with other software suites (such as Jenkins or Sentry) so that it can receive instructions from your bot.
How ChatOps Can Help You
ChatOps makes the chat app front and center, which means that it is is the hub for many of the processes related to your development pipeline. This has the following benefits.
Everyone Sees Tasks that Once Had Little Visibility
Because your chat app integrates with the tools you use, including those for testing, building, and releasing, you can configure your tools to push messages to the chat app any time activity occurs (regardless of whether you’ve automated the task or someone manually executed the task). This means that there is one place where everyone can go to see what has (or hasn’t) been done. This prevents scenarios like the one where the person assigned to a task forgets to communicate, so that no one knows whether it was completed or not and whether the next action can proceed.
Communication quality improves, while quantity decreases
One ChatOps implementation noticed a 35% decrease in email while maintaining high levels of communication quality. This is because the chat app, which serves as the central part of your ChatOps workflow, makes it easy for people to:
- Easily distribute relevant information to others
- Easily look for information they need
This centralized location for information also means that it’s easy for everyone to get a big picture view of what’s happening. The chat app affixes timestamps to each piece of information. The threading by which the information is presented gives context to everything that happens or is shared. Information isn’t lost in someone’s inbox or computer, which reduces the need for meetings just for information sharing.
Software Release Cycles Shorten
By increasing information transparency, you can shorten your software release cycles. ChatOps implementations complement (and include plenty of) automation, because everyone has a detailed record of what needs to be done, and what has been done. You can answer any questions as to where in the release process you are by referring to your chat app. You can then move the process along by using your integrations to execute tasks that haven’t been automated or require some sort of manual review.
For example, you can issue a command to run a build using your chat app. When the build server finishes, it will push a notification to the chat app that the build was successful. Anyone on your team can see that these things have happened. There’s no ambiguity for the person responsible for the next steps in the release pipeline that he can go ahead with his tasks. Those further down the pipeline are also aware that their contributions will be asked for soon.
ChatOps’ Rough Edge
One thing to keep in mind when implementing ChatOps is the ratio between signal and noise. There can be an overwhelming amount of information pushed to the chat app, so it’s important to implement features that help people navigate through things–a simple search feature is not sufficient. As ChatOps becomes popular, chat apps are adding more and more features conducive to wading through endless information streams, including subthreads in channels and methods (such as cards) that allow people to gather information at a glance. Be sure to implement and enable sufficient features needed for your team to be productive.
ChatOps is the intersection of enterprise instant messaging and DevOps, resulting in a software development model called conversation-driven collaboration or conversation-driven development. At the center is a chat application, such as Slack or HipChat, that serves to unify your team, your tools, and your communications. Surrounding it are your team, the bots that extend the functionality of your workflow, and the communications between teammates and bots. All of this combine to form a quick, efficient flow conducive to quick software releases with a minimum of friction between (and among) your teams. Given the competition in the software market today, anything you can do to improve your software quality and get it out the door quicker benefits your company.
For information on how Rigor can help you implement ChatOps and speed up your development cycles,