조직

Organization initiative는 SaaS 및 Self-Managed형 설치 사이의 기능 동등성 달성에 중점을 둡니다.

그룹 및 프로젝트 통합

Organization 이니셔티브의 하나인 그룹 및 프로젝트 통합은 그룹과 프로젝트 간의 기능 불균형을 해결하는 것입니다. 에픽(Epics)과 같은 일부 기능은 그룹 수준에서만 사용할 수 있습니다. 이슈(Issues)와 같은 다른 기능은 프로젝트 수준에서만 사용할 수 있습니다. 그리고 마일스톤(Milestones)과 같은 기능은 그룹과 프로젝트 양쪽에서 이용할 수 있습니다.

그룹 또는 프로젝트 수준에 기능을 추가하는 요청이 많이 접수됩니다. 하지만, 기능을 다른 수준으로 옮기는 것은 여러 측면에서 문제가 됩니다.

  • 기능을 옮기는 데 엔지니어링 시간이 필요합니다.
  • 기능 가용성의 정신적 모델을 유지하기 위해 사용자 경험(UX) 부담이 필요합니다.
  • 중복된 코드가 생성됩니다.

프로젝트, 그룹 또는 인스턴스에서 기능을 한 수준에서 다른 수준으로 복사하면, 복사본 사이에는 종종 작고 미묘한 차이가 있습니다. 이러한 미묘한 차이로 인해 수정이 필요할 때 추가적인 엔지니어링 시간이 소요되며, 해당 수정을 여러 위치에 복사해야 합니다. 이러한 미묘한 차이로 인해 기능이 서로 다른 위치에서 사용될 때 다른 사용자 경험을 제공할 수 있습니다.

이 문제에 대한 해결책은 그룹과 프로젝트를 단일 개체, namespace로 통합하는 것입니다. 이 솔루션에 대한 작업은 여러 단계로 분할되어 있으며 epic 6473에서 추적됩니다.

그룹 및 프로젝트Namespace와 상호 작용하는 기능을 계획하는 방법

현재, 시스템의 각 프로젝트는 namespaces 테이블에 레코드가 있습니다. 이를 통해 그룹과 프로젝트 간에 공유되는 기능을 만드는 일이 가능합니다. 공유 동작은 관심사(concerns) 매커니즘을 사용하여 추가할 수 있습니다. Namespace 모델이 UserNamespace 메서드에 책임이 있기 때문에, 프로젝트와 그룹에 대한 공유 동작에 Namespace 모델을 사용하는 것은 비권장됩니다.

리소스 기반 기능

리소스 기반 기능을 이전하기 위해 기존 기능을 지원해야 합니다. 이를 위해 두 단계로 완료할 수 있습니다.

단계 1 - 설정

  • namespaces 테이블에 링크 추가
    • 테이블에 열을 추가합니다
    • 예를 들어, 이슈들에서 ‘프로젝트 ID’는 프로젝트 테이블을 가리킵니다. 그러면 namespaces 테이블과의 연결을 설정해야 합니다.
    • 코드를 수정하여 새 레코드가 이미 올바른 데이터를 포함하도록 합니다
    • 백필 작업

단계 2 - 선행 작업

  • 권한 모델과 관련된 성능에 대한 조사
    • 권한이 확인되고 유지되어야 합니다.
  • Phase 1에서 이전하는 기능에 필요한 네임스페이스를 지원하는 다른 모델을 조사합니다.
  • CRUD 서비스 및 API(REST 및 GraphQL)를 수정하여 Phase 1에서 추가한 새 열을 가리키도록합니다.
  • 리소스를 가져올 때 성능을 고려합니다.

새로운 기능 도입은 매우 개별 팀 및 기능에 의존합니다.

설정 관련 기능

현재, NamespaceSettings에 대한 계단식 설정이 가능합니다. ProjectNamespace를 만들면, 이 프레임워크를 사용하여 일부 설정이 프로젝트 수준에서도 적용되도록 할 수 있습니다.

설정을 처리할 때 다음 사항을 고려해야 합니다:

  • join 쿼리에서 사용되지 않거나 해당 쿼리를 수정하지 않아야 합니다.
  • 설정을 업데이트할 때 고려해야 합니다.
  • 프로젝트 네임스페이스로 이동하고 싶다면, Phase 1에서 설명한 것과 유사한 데이터베이스 프로세스를 따라야 합니다.

관련 주제