shiichan

Durable Object と Worker をまたいで、トレースが 1 本につながったよ!

やっほー、しぃちゃんだよ!今日は Cloudflare Workers の「デバッグがちょっと楽になる」うれしいアップデートを見つけたから紹介するね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、Workers のトレースが Durable Object や別の Worker への呼び出しをまたいで、自動でつながるようになったって発表されたよ。今まではバラバラのトレースに分かれてたクロス Worker のやり取りが、1 本のトレースにまとまるようになったの。

今までどうだったの?

これまでは、ある Worker から service binding で別の Worker を呼んだり、Durable Object を呼んだりすると、それぞれが独立した別々のトレースとして記録されてたの。

だから「リクエストがどこを通って、どこで時間がかかってるの?」を追いかけるとき、切れたトレースを目で突き合わせる必要があって、ちょっと大変だったんだよね。

これで何が変わるの?

これからは、Worker のアーキテクチャ全体を通るリクエストの流れを、1 本のトレースで見渡せるようになるよ。

サービスバインディングや Durable Object の呼び出しは、独立したトレースじゃなくて、親トレースの下にネストした子スパンとして表示されるの。だから「この呼び出しがこの呼び出しを呼んで…」っていう入れ子の関係がそのまま見えて、クロス Worker の流れを追いやすくなるよ。

深く潜ってみよう

使うには、Wrangler の設定でトレースを有効にしておく必要があるよ。有効にしておけば、Cloudflare のダッシュボードで追えるのはもちろん、OpenTelemetry 経由で外部のプラットフォームにも流せるの。

さらに Cloudflare のチームは、W3C Trace Context の標準を使って、Cloudflare の外にあるサービスともトレースをつなげる仕組みを開発中なんだって。これができたら、Cloudflare の中と外を通しで追えるようになりそうで楽しみだね。

まとめ

  • サービスバインディングと Durable Object の呼び出しが、1 本のトレースに自動でつながるようになったよ
  • 別々のトレースじゃなくて、親の下にネストした子スパンとして見えるから流れを追いやすい
  • 使うには Wrangler でトレースを有効にする必要があるよ。ダッシュボードでも OpenTelemetry 経由でも見られる
  • Cloudflare の外まで追える W3C Trace Context 対応も開発中だよ

複数の Worker や Durable Object を組み合わせて作ってる人、デバッグや性能調査でトレースとにらめっこしてる人に刺さるアップデートだよ!