Cells ADR 001: Cloudflare Workers を用いたルーティング技術

背景

https://gitlab.com/groups/gitlab-org/-/epics/11002 において、最初に 複数のオプション をブレインストーミングし、上位 2 つの技術である Cloudflare WorkerIstio を調査しました。

私たちは Cloudflare Worker の PoC を支持し、複数のルーティングルールを持つように Cell 1.0 proposal で PoC を拡張しました。これらの PoC は、https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142397 で承認された routing service blueprint の検証に役立ち、また request bufferingroutes learning を却下するに至りました。

決定

承認された routing service blueprint に従い、JavaScript/TypeScript で書かれた Cloudflare Workers を使用してリクエストを正しい cell にルーティングします。

Cloudflare Workers は、優先度の低い要件である self-managed を除き、私たちの requirements をすべて満たします。

Cloudflare Workers の詳細な分析は https://gitlab.com/gitlab-org/gitlab/-/issues/433471#results で読むことができます。

結果

  • すべての self-managed 顧客をサポートしないことを承知の上で技術スタックを選択することになります。
  • Cloudflare へのベンダーロックインがより強くなりますが、私たちはすでに彼らに大きく依存しています。
  • GCP の外、新しいプラットフォーム上でコンピュートを実行することになりますが、私たちはすでに Cloudflare を使用しています。
  • 決定が変わった場合に Routing Service を書き直す必要があるかもしれません。 Routing Service は非常に小さくシンプル(最大 1000 行のコード)になると見込まれているため、これは大きなリスクではないと考えています。

代替案