Engineering
How we shipped realtime without a rewrite
A streaming layer, a cache we trust, and a very boring migration plan.

Jonah Belknap
Platform Engineer
8 min read

Realtime is usually sold as a rewrite. We did not have a rewrite in us, so we looked for the smallest set of changes that would make the product feel live.
A streaming layer, not a new product
We put a streaming layer in front of the warehouse and taught the canvas to read from either source. Cold queries still go to the warehouse. Everything from the last hour comes from the stream.
The boring migration
Dual writes for six weeks, a read switch behind a flag, and a rollback we tested more often than we used. Nothing about it was clever, which is why it worked.


