How Slack grew from a PHP app into a cellular platform on AWS
Slack is a messaging app for work, used by teams of every size. Its backend is a Hack monolith on HHVM with Java real-time servers, MySQL scaled through Vitess and a Kubernetes platform on AWS, while the desktop client is React and TypeScript inside Electron.
Adds Google Cloud as a second LLM platform for Slack AI.
Why: It brings redundancy and a wider model catalog.
How they built it
From PHP to Hack
Slack launched in 2014 on PHP 5. In 2016 it moved to HHVM because it ran their PHP code faster, and then adopted Hack, which adds a static type system on top. Hack's partial mode let them add types file by file, so refactoring got safer without a big-bang rewrite.
When HHVM 4.0 dropped PHP support, Slack removed all its remaining PHP. The trade-off was losing access to most of the PHP package ecosystem.
From the start Slack stored data in MySQL, sharded by workspace, with the monolith deciding where every query went. That model created hot spots, shard-wide outages and a rigid data model as customers and features grew.
In 2017 Slack started moving to Vitess, which adds flexible sharding, automatic failover and backups on top of MySQL. By late 2020 Vitess served 99% of Slack's MySQL traffic, about 2.3 million queries per second at peak.
Slack's desktop app ran each signed-in workspace as its own Electron process, built on 2012-era jQuery and manually updated HTML templates. Memory grew with every workspace, and large workspaces downloaded far too much data up front.
The 2019 rewrite required every UI component to be built in React, gave each workspace its own Redux store inside a single Electron process, and cut memory use substantially. The desktop codebase had already moved to TypeScript in 2017 to make sure its many pieces fit together.
Slack's job queue ran on Redis until a database slowdown filled Redis memory and caused a major outage. In 2017 they put Kafka in front of Redis as a durable buffer, with two small Go services moving jobs in and out.
After a 2021 incident where one AWS availability zone degraded, Slack spent about 18 months turning its critical services into cells, one per zone, so traffic can be drained from a bad zone without user-visible errors. Services run on Bedrock, an internal Kubernetes platform that cuts service config from hundreds of lines to tens.
Slack AI launched in 2023 on AWS SageMaker, chosen for security, FedRAMP compliance and model control, with LLMs running in an escrow VPC so the model provider never sees customer data.
New models kept reaching Amazon Bedrock first, so in mid-2024 Slack moved there for immediate model access. In early 2026 it added Google Cloud's Vertex AI for redundancy and a wider model catalog.