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