Automation is an essential part of agile software development; in fact, you could even say the team’s success depends on it. Automation becomes even more significant for a team embarking on a continuous delivery journey.
We at Klipfolio take automation very seriously. As our development manifesto points out, we do our best to automate anything that can be automated.
Bots play a significant role in our automation strategy. We use them for a variety of tasks, including reducing the manual steps in our development and customer support processes; reporting on the state of features and bugs (the pipeline status); reporting on failures in builds or tests; deploying the release to production; and monitoring and self-repairing the production system.
This post explores why bots - and in particular chatbots - are essential. It also provides examples of how we at Klipfolio use them.
What are bots?
A bot is software that performs a task on the user’s behalf. (Wikipedia gives a good general definition.) Bots can act completely on their own, or act only when given direction, or be somewhere in between.
Chatbots are computer programs that mimic conversations with people using simple command line-like interfaces or, in more advanced forms, natural language processing.
As Anatoly Khorozov said: "We are indeed witnessing an explosive growth in the popularity of chatbots." Use of chatbots is growing; they are the new apps.
Automation through software and scripting has always been part of the game. But recently, with the increased use of messaging apps like Slack, chatbots are becoming the interface for executing repetitive scripts.
Bots used at Klipfolio are able to print detailed status information about servers, clusters or entire services on demand. They can also restart services and clusters, run maintenance scripts, or simply report on background processes. In addition, they are used to post-process or combine the data that is extracted from various services - for instance our task tracking tool and our version control tool.
Improvements in machine learning and natural-language-processing APIs, tooling, and libraries have improved the smarts of the bots and made it easier to communicate with them.
As a result, there’s more and more reason to use them.
Why bots are important for agile teams
A fast-moving agile development environment uses a lot of different tools to help it accomplish its goals as fast and efficiently as possible. The number of these tools and processes increases as the team adopts continuous delivery and a DevOps culture.
However, the scope of these processes will naturally increase as the team grows. This can lead to reduced productivity and perhaps even team disatisfaction. Automation is essential to maintaining a high level of productivity, and bots are an excellent option to help people automate daunting yet necessary tasks and focus on high-value intellectual activities instead.
Bots offer very tangible advantages:
- They are fun to use
- They offer consistent interface
- They’re accessible
- They reduce overall costs
- They reduce risks
- They make for a happier team
They’re fun and easy to use
This is a real advantage. People like using tools through a chat interface, and we’ve experienced extremely high adoption rates with new tooling features because of this.
They offer a consistent and centralized interface
Anyone in a team of developers can add a new tool and create a chatbot command if they think the team would benefit. Because of the centralized and simple interface, the entire team doesn’t need to remember a new location and learn how to use a new tool to take advantage of a critical functionality.
They are accessible from anywhere
Since the interface is a chat tool the team already uses - Slack, for example - and since tools like that are accessible on public networks and via smartphone apps, team members don’t need to be in the office or on the private network to be able to use the chatbot. This makes them super handy.
Have you ever fixed a server while you were out for a team lunch without panicking and reducing the quality of service for your customers? We have, thanks to @Devopstimusprime, our DevOps chatbot.
They increase efficiency and cut costs
This is particularly true for the DevOps world. Bots create efficiencies by, for example, taking over monitoring and healing tasks that take place off-hours. And for tasks like deployments to the production servers, bots can reduce the need for direct human involvement.
They cut the risk of human error
Because they take over some tasks that people would otherwise perform, there’s less chance for a mistake. After all, computers are much better at doing repetitive and prescribed tasks like deploying a new release to hundreds of servers.
They make for a happier team
Increased team happiness is often a result of the way bots can allow team members to avoid repetitive and mundane tasks so that they can focus instead on intellectual work, how they can take over some off-hours tasks, and how they can simply be fun to use.
How Klipfolio began using bots
Our chatbot journey started as a side project. After a few late nights in a row, we wanted to be able to print a status report that showed our application health. The idea was to speed up triage of network issues when supporting the app during off-hours, preferably from a phone without a VPN connection.
Soon, the various status commands were in constant use as a first step to gathering information when we saw performance issues, even during the day.
The commands grew to include the ability to fix the most common issues experienced with the network, and from there they evolved into a complex framework of automated self-healing logic which simply reports its actions through chat.
It wasn’t long before a few more bots found their way into our daily workflow. For example, we now have a bot to help us navigate the complex procedures of our development process. With a few simple commands, developers can crosslink their Github pull requests to our ticketing system, print informative reports about the state of our outstanding issues, or see what features will be included in the next release cycle.
What are the main bots Klipfolio uses?
AthenaThis is a bot that helps our customer success team quickly get information they need about our customers, including their account information. This information is extracted from Salesforce API, which will let our customer success team get details needed to respond more quickly to customers.
BumblebeeIt’s a bot that can be used either via Slack or CLI and can interact with Youtrack (our issue tracking tool), Github (our version control tool) and Klipfolio API (our dashboarding tool). This bot’s job is to make the developer’s life easier. It does things like report on our deployment pipeline and provide a handy list of code review for developers.
DevopstimusprimeThis is a monitoring bot with capabilities to do health checks and healing on our production infrastructure. It autonomously monitors our infrastructure and takes action when needed. The bot reports its actions for future reviews. It can also be used on demand to get health check reports on various parts of the system and restart the services as needed.
ReleaseBotAs its name suggests, this bot helps us with the releases. We use it to deploy the releases to production and report the results back to Slack. Its job is to simplify and automate the release process as much as possible and take the human error out of the equation.
Bots can significantly improve team efficiency, as well as a team’s ability to respond to emergencies. They save time and money, are fun to build and use, and in that respect can have a positive impact on team morale.
With all the frameworks that exist, it’s not very hard to implement a bot. If you’ve not already done so, we suggest you give bots a try - for yourself and for your team.
Ali Pourshahid, PhD, is Director, Software Development, at Klipfolio. He can be reached at @ali_pourshahid
Ryan Gallant is Senior Devops Engineer at Klipfolio. He can be reached at @ryanisroot
Blogs on related topics: