Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed | - |
このドキュメントは作業中のものであり、セルズの設計のごく初期の状態を表しています。重要な点は文書化されていませんが、将来的には追加される予定です。これはCellsの可能性のあるアーキテクチャの一つであり、どのアプローチを実装するか決める前に、代替案と比較検討するつもりです。この文書化は、このアプローチを選ばなかった理由を文書化できるよう、これを実装しないと決めた場合でも残しておきます。
セルズ探索
Exploreは現在のGitLabでは重要なロールではないかもしれませんが、現在のGitLabは孤立していません。孤立しているからこそ、Exploreやそれに代わるものが必要なのです。
既存のグループとプロジェクトのExploreは、最初は組織にスコープされます。しかし、公開グループやプロジェクト、特にオープンソースプロジェクトの発見をサポートするために、組織を横断するグローバルなExploreが必要です。ユーザーからのフィードバックはこちらと こちらをご覧ください。
1.定義
Explore機能は、ユーザーがグループやプロジェクトを発見するのに役立ちます。未認証ユーザーは公開グループとプロジェクトのみを探索することができ、認証ユーザーは非公開グループと内部プロジェクトを含む、アクセス可能なすべてのグループとプロジェクトを見ることができます。
2.データフロー
3.提案
Explore featureの問題は、セル間通信を解決するという、より広範な傘の下にあります。このトピックはより深い研究が必要です。
以下に、さらなる研究の方向性を示します。
3.1.読み取り専用テーブルミラー
- クラスター共有データベースに
shared_projects
テーブルを作成します。 - このテーブルのモデルは読み取り専用です。挿入/更新/削除は許可されていません。
- このテーブルには、Projects Cell-local テーブルのデータ(またはデータのサブセット)が格納されます。
- 書き込みモデル Project (Cell-local) はローカルのデータベースに書き込みます。主に、Cell-local なものにはこのモデルを使います。
- このデータは
shared_projects
とバックグラウンドジョブで同期されます。 -
shared_projects
のデータは正規化されて保存されるため、Project Explore を表示するために必要な情報はすべて存在します。
- プロジェクトエクスプローラは(現在のところ)インスタンス全体の機能の一部です。
- このセクションでは、
shared_projects
の読み取りモデルを使用してデータを読み取ります。
- このセクションでは、
- ユーザーがプロジェクトをクリックすると、組織を含むセルにリダイレクトされます。
デメリット
- インスタンス全体のデータにアクセスするための明示的なパターンが必要。しかし、これは管理者機能にも役立つかもしれません。
- Project Exploreは現在ほど豊富な機能(さまざまなフィルタリングオプション、プロジェクトでのロールなど)を備えていないかもしれません。
- CQRS管理の複雑さ。
3.2 組織へのスコープ
プロジェクトエクスプローラとグループエクスプローラは、組織にスコープされます。
デメリット
- グループとプロジェクトのグローバルな検出性がありません。
4.評価
既存のグループとプロジェクトのエクスプローラは、最初は組織にスコープされます。現在の Explore 機能の使用状況を考慮すると、これは許容範囲と判断します。既存のすべてのユーザー、グループ、プロジェクトは、最初はデフォルトの組織に属しているため、グループとプロジェクトは、現在と同じように探索可能でアクセス可能です。既存のグループやプロジェクトがデフォルトの組織から別の組織に移動した場合のみ、この問題が顕著になります。これを軽減するための解決策は、イシュー#418228で説明されています。究極的には、Explore はより優れた検索エクスペリエンスに置き換わる可能性があります。
4.1.長所
- 最初のうちは、発見性の欠如は問題になりません。
- 月間でエクスプローラー機能を使用しているユーザーは、全ユーザーのわずか1.5%程度です。
4.2.コンサ
- GitLabが所有するトップレベルのグループは、最初に独自のOrganizationに移され、デフォルトのOrganizationの探索性から切り離されることになります。