See exceptions in your Slack integrations channel, annihilate them like a champPosted Jul 31, 2015 | 4 min. (682 words)
We were stoked to see this tweet recently from @gnat who stumbled upon one of the killer features of Raygun:
In which our hero discovers the miracle that is raygun.io-Slack integration.
— Nat Torkington (@gnat) July 27, 2015
Like all good software tools, Raygun is dogfooded internally to ensure the service nails the use cases for everyday software development. I can confirm that the Slack integration is pretty sweet, and is a critical part of our workflow. If you haven’t heard of it, Slack is a popular team chat service with rich support for messaging and team collaboration, which importantly allows third-party services your team uses (like Raygun) to post messages directly into your chat channels.
In this post I’ll be highlighting how we use this to streamline our development workflow and ensure the entire team is aware of exceptions when they occur, immediately.
A wild exception appears
Say you’re in the implementation phase, debugging locally. An exception is no big deal as you’ve got your debugger attached and the stack appears right in front of you:
The same applies during staging and testing, where your web server or mobile apps can output the stacktrace for your team to use. This completely falls down in production though, when exceptions like the one above fall into a black hole in a log file somewhere. You might have notifications set up using another service (which is also invaluable as a failsafe), but someone still has to find the offending machine or VM, remote in, diagnose the error, and begin work on a fix.
Tough call at 1am. And even when the heroic late-night fix is applied and your system is stable again, the cause and knowledge of the incident may remain with the one who had to triage it.
A much safer and more scalable approach is to have notifications sent to a team chat service like Slack, where exceptions are immediately visible to all. With all key services your devs, DBAs and QA integrated into one app, such as build servers, deployment services etc, team members have one centralized places they know to visit to get a constant stream of live updates for what actions are being applied to the system.
We’ve also got our source control (GitHub), build server (TeamCity) and deployment app (Octopus) all sending webhooks into Slack whenever someone takes an action. It winds up looking something like this:
Those are all from our development channel, where work-in-progress actions are recorded. With the ability to assign different webhooks to different channels, you can have your staging/beta environments send their events to a separate place from the mission-critical Production rooms. That way, if a message occurs in there, anyone watching knows it’s critical and to immediately click through to check out the stack trace, and alert the person with the most knowledge and chance of fixing it.
All of this takes place alongside discussions about the notifications as they occur – for instance, someone can @mention the person responsible, have a convo to decide on the best course of action, add a comment in Raygun, perhaps create an issue in GitHub, then develop, test, merge and deploy a fix, all while the whole team watches. Instant feedback, quality control and context for the entire team.
The real-time stream of webhooks as presented in the Slack channels becomes an invaluable timeline of events, which members can use to catch up on things they missed if they were away for a few hours/days while work continued.
Get started with Raygun and Slack
You only need two things to get the above slack integration working – a Slack account and a Raygun account. You can start you free 14 day trial here and then link it with your Slack channels using the easy integration inside the app. Documentation for this is available here, but there’s only a couple of steps involved so it should Just Work.
Got any questions about how Raygun and Slack can work together to help your team build great software? Let us know in the comment form below!