While developers have previously communicated on a different platform from the one they were working on, ChatOps has now been able to offer real-time communication on the same interface. Meaning that the transparency of workflows increases, and chat history can serve as a data source for audits.
Imagine the following situation: Alice and Bob are developers, they are also responsible for the operation of their own applications. Alice and Bob are in a chat room having the following conversation:
- MonitoringBot> WARNING! AweSomeApp in the PROD environment is using 83% of the CPU and the value is increasing.
- Alice> @Bob, have you seen that prod with awesome moans?
- Bob> @Alice, yes, I’ve seen it. I have looked at the log and I think I know what’s wrong. I’m adding a fix
- GitBot> Bob has submitted a modification request to the AweSomeApp repository, ID: cef1e68
- Alice> Yeah, I see. I think that’ll be really good …
- Alice> @GitBot cef1e68 has been accepted
- GitBot> Alice has accepted Bob’s request for change with cef1e68. The change has been saved
- CIBot> AweSomeApp build # 43 STARTING. change: cef1e68
- CIBot> AweSomeApp build # 43 SUCCESSFUL! change: cef1e68
- Bob> @DeployBot installed the AweSomeApp # 43 build for the PROD environment.
- DeployBot> AweSomeApp # 43 installation is SUCCESSFUL in the PROD environment.
- MonitoringBot> AweSomeApp Status: NORMAL
- Alice> We are done 🙂 @Bob, coffee?
Alice and Bob are happy with their coffee at the end of their work. They were overwhelmed by the difficulty of the problem. Apart from their professionalism and expertise, their secret is that they are working in a ChatOps environment: the source code manager, installer, and monitoring software have all been linked to the chat platform.
What is ChatOps? It is a method of collaborative communication in software development and operation which works alongside the implementation of relevant activities for chat clients and chatbots.
In a ChatOps setup, the primary communication channel is like an instant messaging app, commonly known as a chat program. These platforms have been used by developers and operators for quite a long time. What might seem novel is the fact that these chat platforms are used for professional activities and the automated, artificial chatbots are involved in the party.
With the popularity of this kind of platform, companies have made it possible for these chat applications to be programmed. Some of such platforms include, but are not limited to:
This opened up the opportunity for software tools that support development and operation to send messages to the chat program or to receive messages from them and thus to execute the received instructions.This means, more or less, that people can discuss work related issues with their colleagues on the same platform as their development and operational activities that are taking place.
ChatOps can be done in many ways. Any connection of “bots” that can be seen in the example can be used to automate regularly repetitive workflows, thus reducing the faults and time shortages due to human execution. The fact that things are done on the same communication platform greatly increases the transparency of workflows and leads to a kind of self-documenting feature. If all aspects of the operation can be integrated into the chat platform, chat history could serve as a data source for audits
This is a modern approach that can help the users of the platform, but at the same time it has its disadvantages.
It should not be ignored that there is a certain amount of time and work that is needed for the integration of chatbots, and we should not dismiss the fact that such integration needs not only to be developed but also to be maintained. As always, a healthy balance must be sought between collaborative integration and manual work, but its extent is determined by the project and its environment. Nevertheless, it is worth exploring open-source solutions and reusing community-developed and maintained software.
Furthermore, security is an important aspect. At first, it seems great that everyone is able to see everything and everyone knows how to give commands to all kinds of bots, but this might not always be desirable. Are you sure you want to allow all chat participants to give instructions to those bots that have access to production systems? Must a bot have access to all systems? The answer is not definitely yes. Security as a system design aspect needs to be a priority when developing the ChatOps concept.