Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed | - |
이 문서는 진행 중인 작업이며 Cells 디자인의 매우 초기 단계를 나타냅니다. 중요한 측면은 문서화되지 않았지만, 향후 추가할 예정입니다. 이는 Cells의 한 가능한 아키텍처이며, 이를 구현할 접근 방법을 결정하기 전에 대안과 대조할 계획입니다. 이 접근 방법을 선택하지 않기로 결정한 경우, 선택한 이유를 문서화하기 위해 이 문서는 유지될 것입니다.
Cells: Explore
현재 GitLab의 기능으로는 Explore이 크게 중요한 역할을 하지 않을 수 있지만, 현재의 GitLab은 고립되어 있지 않습니다. 고립이라는 것이 Explore 또는 어떤 적합한 대체품이 필요한 이유입니다.
기존의 그룹 및 프로젝트 탐색은 초기에는 조직으로 범위가 설정될 것입니다. 그러나 공개 그룹 및 프로젝트의 발견 가능성을 지원하기 위해 조직 간에 횡단하는 전역 탐색이 필요합니다. 특히 오픈 소스 프로젝트의 발견을 위한 맥락에서 특히 중요합니다. 사용자 피드백은 여기와 여기에서 확인할 수 있습니다.
1. 정의
탐색 기능은 사용자가 그룹 및 프로젝트를 발견하는 데 도움을 줍니다. 인증되지 않은 사용자는 공개 그룹 및 프로젝트만 탐색할 수 있으며, 인증된 사용자는 액세스할 수 있는 모든 그룹 및 프로젝트를 볼 수 있습니다. 이에는 비공개 및 내부 그룹 및 프로젝트도 포함됩니다.
2. 데이터 흐름
3. 제안
탐색 기능 문제는 셀 간 통신 해결의 전반적인 유산 아래에 있습니다. 이 주제는 더 심층적인 연구가 필요합니다.
추가 조사를 위한 가능한 방향은 아래와 같습니다.
3.1. 읽기 전용 테이블 미러
- 공유 클러스터 전역 데이터베이스에
shared_projects
테이블을 생성합니다. - 이 테이블의 모델은 읽기 전용입니다. 삽입/업데이트/삭제가 허용되지 않습니다.
- 테이블은 프로젝트 셀 지역 테이블에서 데이터(또는 일부 데이터)를 채웁니다.
- 셀 지역 모델인 프로젝트(즉, Cell-local)은 로컬 데이터베이스에 기록합니다. 주로 이 모델을 셀 지역에서 사용합니다.
- 이 데이터는 변경 사항이 있는 경우 백그라운드 작업을 통해
shared_projects
로 동기화됩니다. -
shared_projects
의 데이터는 표시할 프로젝트 탐색에 필요한 모든 정보가 정규화되어 저장됩니다.
- 프로젝트 탐색(현재)은 인스턴스 전체 기능의 일부이며, 어떠한 조직/그룹에 속한 것이 아니기 때문에 데이터 모델의 읽기 모델을 사용하여 데이터를 읽을 것입니다.
- 사용자가 프로젝트를 클릭하면 해당 프로젝트가 포함된 셀로 리디렉션됩니다.
단점:
- 인스턴스 전역 데이터에 액세스하는 명확한 패턴이 있어야 합니다. 그러나 이는 관리 기능에 유용할 수도 있습니다.
- 프로젝트 탐색이 오늘날보다 풍부한 기능을 갖추지 못할 수 있습니다(다양한 필터링 옵션, 프로젝트에 대한 역할 등).
- CQRS를 관리하는 데 추가 복잡성이 있습니다.
3.2. 조직으로 범위 설정된 탐색
프로젝트 탐색 및 그룹 탐색은 조직으로 범위가 설정됩니다.
단점:
- 그룹 및 프로젝트의 전역 발견 기능이 없습니다.
4. 평가
기존의 그룹 및 프로젝트 탐색은 초기에는 조직으로 범위가 설정될 것입니다. 탐색 기능의 현재 사용을 고려하면, 이는 우리가 수용 가능하다고 판단합니다. 모든 기존 사용자, 그룹 및 프로젝트가 초기에는 기본 조직의 일부이므로 그룹 및 프로젝트는 현재와 같이 탐색 가능하고 접근 가능할 것입니다. 기존 그룹 및 프로젝트가 기본 조직에서 다른 조직으로 이동할 때에만 이것이 눈에 띄는 문제가 될 것입니다. 이에 대한 완화 방안은 이슈 #418228에서 논의됩니다. 궁극적으로, Explore는 전체적으로 더 나은 검색 경험으로 대체될 수 있습니다.
4.1. 장점
- 초기에 발견 능력의 부재는 문제가 되지 않을 것입니다.
- 월별 기존 사용자의 약 1.5%만 Explore 기능을 사용하고 있습니다.
4.2. 단점
- GitLab 소유의 최상위 그룹은 그들 자신의 조직으로 이동되며 기본 조직의 탐색 가능성에서 분리될 것입니다.