Unified Grid: How We Re-Architected Slack for Our Largest Customers

All software is built atop a core set of assumptions. As new code is added and new use-cases emerge, software can become unmoored from those assumptions. When this happens, a fundamental tension arises between revisiting those foundational assumptions—which usually entails a lot of work—or trying to support new behavior atop the existing architecture. The latter…

Ian Hoffman
13 min readadvanced
--
View Original

Overview

The article discusses the re-architecture of Slack's backend to create the Unified Grid, aimed at improving user experience for large customers by providing a single view of data across multiple workspaces. It details the evolution of Slack's architecture, the challenges faced, and the implementation strategies employed to achieve this significant change.

What You'll Learn

1

How to implement a unified data architecture for multi-workspace applications

2

Why revisiting core architectural assumptions can lead to better performance

3

When to prototype solutions before full-scale implementation

Prerequisites & Requirements

  • Understanding of software architecture principles
  • Experience with API development and integration(optional)

Key Questions Answered

What challenges did Slack face in evolving its architecture?
Slack faced challenges due to its initial workspace-centric architecture, which became problematic as users began to belong to multiple workspaces. This led to issues with context switching and data syncing across workspaces, necessitating a shift to a more unified data architecture.
How did the Unified Grid improve user experience?
The Unified Grid provided a single, unified view of all data accessible to a user across multiple workspaces, reducing context switching and improving performance by allowing data to be loaded in a single API request. This change aimed to enhance the overall user experience for Slack's largest customers.
What was the prototyping approach taken for Unified Grid?
The prototyping approach involved building a proof of concept to validate the Unified Grid's benefits and identify necessary changes. This incremental method allowed Slack to gather feedback and refine the architecture before full-scale implementation.
What specific architectural changes were made to support Unified Grid?
Key architectural changes included migrating to a new sharding scheme that no longer required workspace context for routing queries, enhancing the real-time messaging stack, and updating clients to share org-wide data across all workspaces within the grid.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Key Actionable Insights

1
Consider revisiting your application's core architecture if user needs evolve significantly over time.
As Slack experienced increased user complexity with multiple workspaces, it became clear that their original architecture was insufficient. This insight can help teams recognize when it's time to innovate rather than patch existing systems.
2
Use prototyping to validate architectural changes before full implementation.
Slack's approach of prototyping the Unified Grid allowed them to test assumptions and gather feedback, which is crucial for minimizing risks associated with large-scale changes.
3
Implement a unified data view to enhance user experience in multi-tenant applications.
By providing a single view of data across multiple workspaces, Slack reduced context switching and improved performance, which can be a valuable strategy for similar applications.

Common Pitfalls

1
Avoid making large architectural changes without validating assumptions through prototyping.
Many teams may rush into rewriting systems without understanding the implications. Prototyping helps identify potential issues early and ensures that changes align with user needs.

Related Concepts

Software Architecture Principles
API Development And Integration
User Experience Design In Software