This blog was originally published on March 30, 2016 on the CloudBees blog. here.
This is the sixth blog in the Field Notes from a DevOps Cultural Anthropologist series. This blog describes ChatOps, the collaboration model that makes distributed teams not only possible, but highly functional. I have been in the continuous delivery and DevOps industry for nine years and have made a number of observations during that time. I have seen strategies succeed – and fail. My goal is to try to help you be one of the successes! I’d love to hear your comments and experiences with continuous delivery and DevOps.
In my third blog, I introduced the DNA of DevOps, it is as follows:
Team of coordinated specialists
Oriented to a common goal
Servant leader providing coordination and communication
Empathetic in dealings with others
Trust in the rest of the team
Dedication to the common goal
Selflessness, adherence to the greater good
Determination and resiliency in the face of difficulty
Honesty with the leader and the rest of the team
Commitment to the mission
According to my DevOps DNA, the servant leader is in charge of providing team-based coordination and communication. For a distributed team this is often done using call bridges, online meetings such as Google Hangout and a chat system. Modern chat systems such as HipChat or Slack have APIs and interface with bots (artificial intelligence robots that take action based on what is said in the chat room) and other software tools. This new form of communication is called ChatOps, and it is revolutionizing and empowering DevOps for distributed and non-distributed teams alike.
“ChatOps is the collaboration model that connects people, tools, process and automation into a transparent workflow. This flow connects the work needed, the work happening, and the work done in a persistent location staffed by people, bots and related tools” . It provides file sharing, search, screen sharing, security and more. There are Jenkins modules for both HipChat and Slack. Different build states such as success or aborted are sent to the chat channel providing a programmatic view into the Jenkins build stages.
I am a senior DevOps consultant at CloudBees in the Professional Services department. I use ChatOps in my engagements to stay organized and capture all the questions, issues and information said or mentioned throughout the engagement. The night before I report to a client, I create a private Slack channel and a private Trello board. One of my responsibilities as a consultant is to have a ten-minute meeting at the end of each day and go over what was done that day, what needs to be done the following day and any problems encountered. At the end of the week, it is my responsibility to generate a report on the week’s activities. I am often working with a distributed team. Remote team members have access to the Slack chat channel, and it gives them a voice and allows them to participate at a much deeper level than just the call bridge, which we often have open throughout the engagement. I use the Slack channel as a way to capture what and for how long we were working on a task. I chat to the Slack channel that I am “Starting: the install of CloudBees Jenkins Platform - Enterprise Edition” and then when done I report to the channel that we are “Stopping: the install of CloudBees Jenkins Platform - Enterprise Edition.” Using chat for this purpose gives me a timestamped log of my and the rest of the client team’s activities throughout the engagement.
Slack interoperates with several tools, including Trello, the web-based project management application. The communication is bi-directional. Slack messages can be imported into Trello, and Trello’s cards can be sent to a Slack channel. This is a very powerful feature of both tools. I can use the Slack channel to communicate with the client team and log our activities, and then I can send actionable items over to Trello for organization and a visual heads-up display as to how the consulting engagement is progressing. The combination of the two tools into a single ChatOps workflow is incredibly powerful. It allows me to be organized and concentrate on the most important aspects of the engagement, the client and their issues.
Saying ChatOps facilitates DevOps is not a strong enough statement. ChatOps is an accelerant to DevOps; the way gasoline is an accelerant to fire. ChatOps firmly fits into my categories of DevOps DNA. It enables a team of coordinated specialists. It orients everyone on the team towards a common goal. It allows the servant leader to provide team coordination and communication. It builds trust in the team, since everything is captured and visible in the chat tool. It helps organize the team towards common goals, both future and current. It rewards honesty with the leader and rest of the team through self-policing. And it facilitates commitment to the mission by leveraging a real time heads-up display of the DevOps environment.
ChatOps is powerful, and is emblematic of the DNA of DevOps, but it is also fun. There are funny giphy.com integrations in both HipChat and Slack. Team members during moments of downtime can share a joke, some good news or an annoyance with a particular scripting language. It is both the watercooler and the breakroom. ChatOps is fundamentally human, and provides a high value form of communication. It makes one’s life in the DevOps trenches easier and more prepared. It is my recommendation to use ChatOps and to explore all that it has to offer. It will make your team much more efficient, especially if you are on a distributed one.
Thomas McGonagle Senior DevOps Consultant, Global Services CloudBees