NATS - メッセージバス

ステータス

Candidate - 承認に向けて検討中

オーナー

[割り当て予定]

説明

NATS は、高スループットのイベントストリーミングと、分散システム間のリアルタイム通信を実現する高性能メッセージバスです。

なぜこれが主要抽象化であるべきか

NATS は、以下を提供するため、GitLab の標準メッセージバスとして検討されています:

  1. 高スループット: 1 秒あたり数百万件のメッセージを処理可能
  2. 低レイテンシ: リアルタイムのイベントストリーミングに最適化
  3. クラウドネイティブ: 分散アーキテクチャに適している

ユースケース

NATS は以下に使用します:

  • 永続化メッセージバス
  • 非常に高スループットのイベントストリーミング
  • リアルタイムのデータ処理パイプライン
  • 低レイテンシを必要とするイベント駆動アーキテクチャ

使用してはいけないケース

以下については NATS を使用しないでください:

  • すべてのデプロイ環境で動作する必要がある GitLab のコア機能
  • Sidekiq で対応可能な標準的なバックグラウンド処理

統合上の考慮事項

Self-Managed の制約

NATS は self-managed の基盤的(コア)機能には適していません。理由:

  • すべての self-managed インスタンスに NATS がデプロイされているとは限らない(まだ)
  • 顧客にとって運用の複雑性が増す

関連する主要抽象化

  • Sidekiq - 標準的なバックグラウンド処理の代替手段
  • PostgreSQL - 永続データストレージとして NATS と併用可能
  • Redis - Sidekiq で使用される。NATS のキャッシング補完にもなり得る