NATS - メッセージバス
ステータス
Candidate - 承認に向けて検討中
オーナー
[割り当て予定]
説明
NATS は、高スループットのイベントストリーミングと、分散システム間のリアルタイム通信を実現する高性能メッセージバスです。
なぜこれが主要抽象化であるべきか
NATS は、以下を提供するため、GitLab の標準メッセージバスとして検討されています:
- 高スループット: 1 秒あたり数百万件のメッセージを処理可能
- 低レイテンシ: リアルタイムのイベントストリーミングに最適化
- クラウドネイティブ: 分散アーキテクチャに適している
ユースケース
NATS は以下に使用します:
- 永続化メッセージバス
- 非常に高スループットのイベントストリーミング
- リアルタイムのデータ処理パイプライン
- 低レイテンシを必要とするイベント駆動アーキテクチャ
使用してはいけないケース
以下については NATS を使用しないでください:
- すべてのデプロイ環境で動作する必要がある GitLab のコア機能
- Sidekiq で対応可能な標準的なバックグラウンド処理
統合上の考慮事項
Self-Managed の制約
NATS は self-managed の基盤的(コア)機能には適していません。理由:
- すべての self-managed インスタンスに NATS がデプロイされているとは限らない(まだ)
- 顧客にとって運用の複雑性が増す
関連する主要抽象化
- Sidekiq - 標準的なバックグラウンド処理の代替手段
- PostgreSQL - 永続データストレージとして NATS と併用可能
- Redis - Sidekiq で使用される。NATS のキャッシング補完にもなり得る
