These days, it’s tough to find a tech outfit that does not use Slack as their primary communication and collaboration tool. One of the main reasons for this is that Slack so much more than just a messaging application — you can do almost anything you want with it using a variety of integrations and applications.
Tight collaboration and efficient communication is a key tenet of practicing DevOps, and Slack can help you implement a collaboration and conversation-driven development model using a variety of different development apps and integrations.
We thought we’d share with our readers some of the apps we found especially useful at Logz.io.
Slack apps are listed in the Slack App directory and can be easily be installed (you will need to be signed into your workspace before). While the Development category holds most of the DevOps-related apps, other goodies can be found in the Communication and Product Management categories.
This app is a must for any development team that uses Slack for communication. The integration offered by this app powers team collaboration by displaying new code commits, pull requests sent, and other repository activity.
At Logz.io, we rely on the app to mainly notify developers on pull requests that are opened and closed. Notifications appear in Slack with all the relevant information about the pull requests — who opened/closed it, a link to the pull request itself and documentation when available.
ChatOps is far from being a new thing in the world of DevOps, but messaging applications such as Slack have contributed to a huge growth in adoption over the past few years by offering clients and chat bots that help connect teams and tools into a persistent chat channel.
At Logz.io, we use Hubot — Slack’s scrippable open source chat bot — to connect and interact with our environment, and the different components in it, within our Slack workspace. Based on Hubot, we created Pandora, that allows us to enhance cross-team collaboration. We can invoke Pandora to take down instances, perform monitoring and initiate self-healing of production issues.
Staying up to date in real time about service outages is crucial for any DevOps team.
Logz.io for example, relies on various AWS services that have direct impact on user experience. AWS services have RSS feeds that can be tapped into to get notified on specific outages. Another example is PagerDuty — if this service is down we need to know about it on time to move to manual alerting and monitoring.
This app allows you to subscribe to an RSS feed and receive notifications in Slack. Feeds are fetched periodically, and new posts are posted to the Slack channel you configure. Feeds can also be managed from within Slack channels.
Another extremely useful integration, the JIRA Server Alerts app notifies your team about new issues opened and changes made to existing issues.
Notifications will include a brief message on what exactly took place — e.g. Peter Smith changed Bug DEV-7093 from “Backlog” to “Done” — and a short overview of the issue that includes the assignee and the creator in case of a change in status and the creator, priority, and description in case of a new issue. Of course, all notifications will link you directly to the relevant issue in JIRA.
We use Jenkins for implementing Continuous Integration, and use the Jenkins CI Slack app to get notified on builds being pushed into the different environments. For example, you can get notified on completed builds or get the status of a specific build. Another useful way of using this integration is to get notified when an important branch gets broken and requires immediate attention.
By the way, teams using Travis CI or Circle CI can use similar integrations for the same exact purpose.
Reduce the noise
While Slack apps add great functionality to an already feature-rich tool, there are some tips to keep in mind. DevOps teams are in charge of a growing amount of tools producing a large amount of signals. The last thing you want to do is raise the already high signal-noise ratio.
- Keep it simple – try not to overcrowd your Slack workspace with too many applications. Make sure you only install the apps you really need.
- Avoid alerting overkill – getting alerted by PagerDuty in Slack, in addition to email and phone can result in a very annoyed engineer.
- Divide and conquer – split the integrations into channels, so each team member can choose what channel/integration to use.
- Avoid a single point of failure – Slack apps are great, but try and make sure you can continue working even if an integration fails.
- Try and avoid unnecessary mentions of users in automated processes. Do not invoke @here or @channel unless absolutely necessary for the obvious reasons.
Building your own integration
At the end of the day, your team has very specific needs, and if you can’t find the integration you’re looking for, try writing your own Slack app.
Slack has some good documentation that will help you with the process. An app we wrote, for example, allows Logz.io users to send Kibana visualizations and dashboards to their team members using Slack’s webhook integration.