Building a viral Imax ticketing app that never crashes

Building a viral Imax ticketing app that never crashes

构建一款永不宕机的病毒式 IMAX 订票应用

When 150,000 tickets went on sale for The Odyssey in 70mm IMAX, they sold out almost instantly. But plans change, cancellations happen, and good seats randomly open up at odd hours. To solve this, Andrew Baker from Temporal built IMAXXING: a service that monitors every 70mm IMAX showing across the US and alerts subscribers the moment great seats become available.

当 15 万张 70mm IMAX 版《奥德赛》(The Odyssey)电影票开售时,它们几乎瞬间售罄。但计划总赶不上变化,退票时有发生,好座位往往会在奇怪的时间点随机放出。为了解决这个问题,来自 Temporal 的 Andrew Baker 开发了 IMAXXING:这是一项监控全美所有 70mm IMAX 场次的服务,一旦有优质座位放出,它会立即通知订阅用户。

What started as a fun weekend project quickly scaled, now over 9,000 users. I sat down with Andrew to break down the architecture: how durable execution keeps long-running workflows alive, how to debounce alerts so you don’t spam users, and how serverless workers on Google Cloud Run handle sudden spikes in demand without overprovisioning.

这个最初只是一个有趣的周末项目,很快就扩展到了超过 9,000 名用户。我与 Andrew 坐下来深入探讨了其架构:持久化执行(durable execution)如何保持长运行工作流的存活,如何对提醒进行去抖动(debounce)处理以避免骚扰用户,以及 Google Cloud Run 上的无服务器工作节点(serverless workers)如何在不进行过度配置的情况下处理突发的流量高峰。

What’s in the video: 视频内容包括:

  • Durable execution 101: How Temporal allows you to rewind history to the point of failure.

  • 持久化执行基础: Temporal 如何让你将历史记录回溯到故障发生点。

  • The Entity Workflow pattern: Why there is one persistent workflow per user subscription and separate monitoring workflows per showing across the country.

  • 实体工作流模式: 为什么每个用户订阅对应一个持久工作流,而全国每个场次对应独立监控工作流。

  • Signals & smart debouncing: How showing workflows send signals to wake up subscription workflows, and how a 60-second in-workflow timer batches multiple theater alerts into a single digest—without consuming active CPU while sleeping.

  • 信号与智能去抖动: 场次工作流如何发送信号唤醒订阅工作流,以及工作流内部的 60 秒计时器如何将多个影院的提醒合并为一条摘要——且在休眠期间不消耗 CPU 资源。

  • Serverless workers on Cloud Run: How running Temporal workers as serverless containers lets compute autoscale directly with task queue depth rather than generic CPU metrics.

  • Cloud Run 上的无服务器工作节点: 将 Temporal 工作节点作为无服务器容器运行,如何让计算资源直接根据任务队列深度而非通用的 CPU 指标进行自动扩缩容。

  • AI agents for ops: How modern coding agents paired with Terraform and the gcloud CLI accelerated the deployment and operational dashboard setup.

  • 运维 AI 智能体: 现代编码智能体如何结合 Terraform 和 gcloud CLI 加速部署及运维仪表板的搭建。

The point that stuck with me is how durable execution fundamentally changes how you think about long-lived state and retries. Instead of building complex cron jobs, custom retry databases, and alert queues, the workflow state itself is the queue and the timer.

最让我印象深刻的一点是,持久化执行从根本上改变了你对长生命周期状态和重试机制的思考方式。你不再需要构建复杂的定时任务(cron jobs)、自定义重试数据库和提醒队列,工作流状态本身就是队列和计时器。

Have you experimented with entity workflows or running workflow workers on serverless infrastructure? How do you handle debouncing and noisy downstream APIs in your own apps?

你是否尝试过实体工作流,或者在无服务器基础设施上运行工作流节点?在你的应用中,你是如何处理去抖动和嘈杂的下游 API 的?