조직
조직 이니셔티브는 SaaS 및 자가 관리 설치 간의 기능 일치를 달성하는 데 초점을 맞추고 있습니다.
그룹 및 프로젝트 통합
조직 이니셔티브의 한 측면은 그룹과 프로젝트를 통합하여 기능 간의 불일치를 해소하는 것입니다. 일부 기능, 예를 들어 에픽,은 그룹 수준에서만 사용할 수 있습니다. 일부 기능, 예를 들어 이슈,은 프로젝트 수준에서만 사용할 수 있습니다. 마일스톤과 같은 다른 기능은 그룹과 프로젝트 모두에서 사용할 수 있습니다.
우리는 그룹 또는 프로젝트 수준에 기능을 추가해 달라는 요청을 많이 받습니다. 기능을 서로 다른 수준으로 이동하는 것은 여러 측면에서 문제가 발생합니다:
- 기능을 이동하는 데 엔지니어링 시간이 필요합니다.
- 기능 가용성에 대한 멘탈 모델을 유지하는 데 UX 오버헤드가 필요합니다.
- 중복 코드가 생성됩니다.
기능이 한 수준(프로젝트, 그룹 또는 인스턴스)에서 다른 수준으로 복사될 때, 복사본 간에 종종 작은, 미세한 차이가 있습니다. 이러한 뉘앙스는 수정이 필요할 때 추가적인 엔지니어링 시간을 초래합니다. 수정이 여러 위치에 복사되어야 하기 때문입니다. 이러한 뉘앙스는 기능이 다양한 곳에서 사용될 때 서로 다른 사용자 경험을 만듭니다.
이 문제의 해결책은 그룹과 프로젝트를 하나의 엔티티인 namespace
로 통합하는 것입니다. 이 솔루션에 대한 작업은 여러 단계로 나뉘어 있으며 에픽 6473에서 추적되고 있습니다.
그룹 및 프로젝트Namespace와 상호 작용하는 기능을 계획하는 방법
현재 시스템의 모든 프로젝트에는 namespaces
테이블에 기록이 있습니다. 이는 그룹과 프로젝트 간에 공유되는 기능을 생성하기 위한 공통 인터페이스를 사용할 수 있게 합니다. 공유된 동작은 concerns 메커니즘을 사용하여 추가할 수 있습니다. Namespace
모델이 UserNamespace
메서드로도 책임을 지기 때문에, 프로젝트와 그룹에 대한 공유된 동작을 위해 Namespace
모델을 사용하는 것은 권장되지 않습니다.
리소스 기반 기능
리소스 기반 기능을 마이그레이션하기 위해 기존 기능이 지원되어야 합니다. 이는 두 단계로 달성할 수 있습니다.
1단계 - 설정
- namespaces 테이블에 링크
- 테이블에 열 추가
- 예를 들어, 이슈에서
project id
가 프로젝트 테이블을 가리킵니다.namespaces
테이블에 대한 링크를 설정해야 합니다. - 모든 새로운 기록이 올바른 데이터를 가지고 있도록 코드를 수정합니다.
- 백필
2단계 - 전제 작업
- 권한 모델과 관련된 성능 문제를 조사합니다.
- 권한을 확인하고 유지해야 합니다.
- 1단계에서 마이그레이션한 기능에 의존하는 기능을 지원하기 위해 다른 모델이 무엇인지 조사해야 합니다.
- 1단계에서 추가한 새로운 열을 가리키도록 CRUD 서비스 및 API(REST 및 GraphQL)를 조정합니다.
- 리소스를 가져올 때 성능을 고려합니다.
새로운 기능을 도입하는 것은 각 팀과 기능에 매우 의존적입니다.
설정 관련 기능
현재 NamespaceSettings
에 대한 계단식 설정을 사용할 수 있습니다. ProjectNamespace
를 생성함으로써 이 프레임워크를 사용하여 일부 설정이 프로젝트 수준에서도 적용되도록 할 수 있습니다.
설정 작업을 할 때는 다음 사항을 확인해야 합니다:
-
join
쿼리에서 사용되지 않도록 하거나 해당 쿼리를 수정하지 않아야 합니다. - 설정 업데이트가 고려해야 합니다.
- 프로젝트에서 프로젝트 네임스페이스로 이동하고자 하는 경우, 1단계에서 설명한 것과 유사한 데이터베이스 프로세스를 따라야 합니다.
관련 주제
- 그룹 및 프로젝트 통합 아키텍처 문서
- 조직 사용자 문서