~/talk

How We Reliably Send a Million Messages Per Request

Talkat Replay 2026 · 2026-05-05..05-07· [web-performance]
links:none on file
slides:none on file

A bulk messaging system moves from a queue-of-microservices to Temporal workflows, then hits namespace action limits at ~55,000 requests in a minute (≈900 RPS) with 22,000 failures; fix is to add front-end backpressure plus architectural changes: eliminate per-message child workflows, replace with a single long-running, heartbeating batch activity (progressive batching) to make actions O(runtime), then shard that work across N parallel streaming activities with selectors (sliding window), use continuous new to truncate history, and serialize shared-entity updates via signal-driven workflows.

AI-written summary · about

  1. 0:00Introduction and speaker welcome
  2. 1:51What is Twilio and the problem
  3. 3:58Initial queue-based design issues
  4. 5:23Resource exhaustion incident at Tahoe
  5. 7:48Adding back pressure to Temporal
  6. 8:53First redesign with multiple activities
  7. 10:37Killing per-message child workflows
  8. 12:00Progressive batching in one activity
  9. 14:31Limitations of single-activity approach
  10. 15:35Introducing sliding window pattern
  11. 17:18Full architecture with sliding window
  12. 20:31Shared state and race conditions
  13. 21:59One workflow per entity with signals
  14. 23:01Key lessons and takeaways
  15. 24:04Why use Temporal instead of building yourself
  16. 26:32Three hard-learned operational tips
  17. 27:35Team and closing remarks
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.