Slack Engineering Icon

Slack Engineering

The Slack engineering blog.
slack.engineering • 3 Stories
All Sources

Slack Engineering Icon Slack Engineering

When a rewrite isn’t: rebuilding Slack on the desktop

The Ship of Theseus is a thought experiment that considers whether an object that has had each of its pieces replaced one-by-one over time is still the same object when all is said and done. If every piece of wood in a ship has been replaced, is it the same ship? If every piece of JavaScript in an app has been replaced, is it the same app? We sure hoped so, because this seemed like the best course of action. Fascinating look behind the scenes at both the process of rewriting a massively used application and the particular architectural choices made along the way. The approach used was at once incremental and all-encompassing, rewriting a piece at a time into a gradually growing “modern” section of the application that utilized React and Redux. And the results? 50% reduction of memory use and 33% improvement in load time… not too shabby.

read more

Slack Engineering Icon Slack Engineering

Keep webpack Fast: A Field Guide for Better Build Performance

Slack chose webpack as their build tool, but it wasn’t fast enough. Our build took minutes, not seconds: a far cry from the sub-second concatenation we were used to. Slack’s web teams deploy up to 100 times on any given work day, so we felt this increase acutely. Let’s just say they went to work and came up with several techniques to speed up the build process. webpack is a fantastic, versatile, tool that does not need to cost the earth. These techniques have helped us reduce our median build time from 170 to 17 seconds and, while they have done much to improve the deployment experience for our engineers, they are by no means a complete work.

read more

Slack Engineering Icon Slack Engineering

Scaling Slack’s Job Queue

You’ll definitely want to read this if you’d like to know how Slack handles their job queue. Robustly handling billions of tasks in milliseconds using Kafka and Redis. On our busiest days, the system processes over 1.4 billion jobs at a peak rate of 33,000 per second. Job execution times range from a few milliseconds to (in some cases) several minutes. Also, check out The Changelog #278 — we talked about blockchains and databases at OSCON, including a conversation with Tague Griffith on Redis.

read more

0:00 / 0:00