NATS - メッセージバス
ステータス Candidate - 承認に向けて検討中
オーナー [割り当て予定]
説明 NATS は、高スループットのイベントストリーミングと、分散システム間のリアルタイム通信を実現する高性能メッ …
主要抽象化(Key Abstractions、別名 Key Primitives)は、GitLab のエンジニアリング組織全体で使用が承認された基盤技術、パターン、コンポーネントです。主要抽象化が一度承認されると、エンジニアはその機能を必要とする実装を行う際に、必ずこれを使用しなければなりません。
必要な機能がカタログに無い場合、チームは Architecture Board と協議すべきです。
Architecture Board は、主要抽象化のカタログをレビューしスチュワードする、軽量で非公式に構成されたグループです。このグループは、GitLab のエンジニアリング組織全体で技術的一貫性を保ちながら、アーキテクチャの意思決定が協調的に行われることを保証します。
ボードは、コラボレーションと迅速なイテレーションを優先しつつ、基盤となる技術的意思決定の適切な監督を確保する、軽量で非公式なアプローチで運営されています。これは Architecture Board のスタートポイントを表しています。組織のニーズが進化するにつれて、ボードの構造、スコープ、プロセスは拡張・公式化される可能性があります。
architecture/abstractions ディレクトリの CODEOWNERS で管理されますArchitecture Board は以下をレビュー・承認します:
主要抽象化は、以下のいずれかの状態にあります:
すべての graduated 主要抽象化には、指定されたオーナーが必要です。
| 抽象化 | カテゴリ | 説明 | オーナー |
|---|---|---|---|
| PostgreSQL | データ&ストレージ | OLTP データベース | TBD |
| 抽象化 | カテゴリ | 説明 | 備考 |
|---|---|---|---|
| Siphon | データ&ストレージ | データ取り込みと変換 | |
| ClickHouse | データ&ストレージ | 分析 / OLAP クエリ | |
| Redis | データ&ストレージ | キャッシュとグローバルロック | |
| Object Storage | データ&ストレージ | バイナリと大容量ファイルのストレージ | |
| Elasticsearch/OpenSearch | データ&ストレージ | 自然言語検索 | |
| GitLab Zoekt | データ&ストレージ | コード検索 | |
| NATS | メッセージング&処理 | 高スループットのイベントストリーミング向けメッセージバス | 非常に高いスループットと永続化メッセージに使用します。 |
| Sidekiq | メッセージング&処理 | バックグラウンド処理 | バックグラウンドジョブのデフォルト選択肢。 |
| Active Context | 検索&AI | セマンティック検索(埋め込み) | |
| Ruby, Go, Python, Rust | 言語&フレームワーク | LabKit サポート付きバックエンド言語 | |
| VueJS, JavaScript, TypeScript | 言語&フレームワーク | フロントエンド技術 | |
| gRPC, REST | 言語&フレームワーク | 通信プロトコル | |
| RAFT | 分散システム | コンセンサスアルゴリズム | |
| GitLab Zoekt | 分散システム | ステートフルサービスのパターン | |
| Secrets Storage | セキュリティ | セキュアなシークレット管理 | 適切なデータベース暗号化を含む(初期化ベクトルの再利用を回避) |
| JSON Schema | セキュリティ | データ検証 | |
| OpenMetrics | 可観測性 | メトリクス収集 | Prometheus 互換 |
| OpenTelemetry | 可観測性 | 分散トレーシング | LabKit 経由で構成 |
| Rate Limiter | アーキテクチャパターン | リクエストレート制限 | 可能な限り LabKit 経由で実装 |
| Circuit Breaker | アーキテクチャパターン | フォールトトレランスパターン | 可能な限り LabKit 経由で実装 |
| UBI-9 | インフラストラクチャ | サポートされる Cloud Native GitLab イメージ |
以下の技術は 使用すべきではありません:
新しい主要抽象化を提案する、または候補を graduated ステータスに昇格させるには: