조직

조직 이니셔티브는 SaaS 및 Self-Managed 설치 간의 기능 동등성 달성에 중점을 두고 있습니다.

그룹 및 프로젝트 통합

조직 이니셔티브 중 하나는 그룹 및 프로젝트를 통합하여 그들 간의 기능 차이를 해소하는 것입니다. 에픽(Epics)과 같은 일부 기능은 그룹 수준에서만 사용할 수 있습니다. 이슈(Issues)와 같은 일부 기능은 프로젝트 수준에서만 사용할 수 있습니다. 다른 기능들은 마일스톤(Milestones)과 같이 그룹 및 프로젝트 모두에서 사용할 수 있습니다.

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

  • 기능을 이동하는 데 엔지니어링 시간이 필요합니다.
  • 기능 사용 가능성의 추상적 모델을 유지하기 위해 UX 오버헤드가 필요합니다.
  • 중복 된 코드가 생성됩니다.

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

이 문제에 대한 해결책은 그룹과 프로젝트를 단일 엔터티, 네임스페이스로 통합하는 것입니다. 이 솔루션에 대한 작업은 여러 단계로 나뉘어 있으며, 에픽 6473에서 추적됩니다.

그룹 및 프로젝트 네임스페이스와 상호 작용하는 기능의 계획 방법

현재, 시스템의 각 프로젝트에는 네임스페이스 테이블에 레코드가 있습니다. 이를 통해 그룹과 프로젝트 사이에서 공유되는 기능을 만들 수 있습니다. 공유 동작은 관심사(concerns) 매커니즘을 사용하여 추가할 수 있습니다. 그리고 네임스페이스 모델은 UserNamespace 메서드를 담당하기 때문에 프로젝트 및 그룹을 위한 공유 동작을 위해 네임스페이스 모델을 사용하지 않는 것이 권장됩니다.

리소스 기반 기능

리소스 기반 기능을 마이그레이션하려면 기존 기능을 지원해야 합니다. 이는 두 단계로 수행될 수 있습니다.

1단계 - 설정

  • 네임스페이스 테이블에 링크 설정
    • 테이블에 열 추가
    • 예를 들어, 이슈(Issues)에서 프로젝트 ID가 프로젝트 테이블을 가리킵니다. 네임스페이스 테이블과의 연결을 설정해야 합니다.
    • 새 레코드에 이미 올바른 데이터가 있는지 코드 수정
    • 후단 처리(Backfill)

2단계 - 전제 작업

  • 권한 모델 및 관련 성능 문제 조사
    • 권한은 확인되고 유지되어야 합니다.
  • 1단계에서 마이그레이션할 기능에 따라 다른 모델이 지원되어야 하는지 조사
  • 네임스페이스에 의존하는 기능을 위한 CRUD 서비스 및 API(RESt 및 GraphQL)를 1단계에서 추가한 새 열을 가리킬 수 있도록 수정
  • 리소스 검색 시 성능을 고려하세요.

새로운 기능 도입은 각 팀 및 기능에 매우 의존적입니다.

설정 관련 기능

현재, ‘네임스페이스 설정’에 대한 계층적 설정이 가능합니다. ProjectNamespace를 생성함으로써, 이 프레임워크를 사용하여 프로젝트 수준에서 일부 설정이 적용되는지 확인할 수 있습니다.

설정을 작업할 때, 다음 사항을 고려해야 합니다:

  • join 쿼리에 사용되지 않거나 해당 쿼리를 수정하지 않아야 합니다.
  • 설정 업데이트가 고려되어야 합니다.
  • 프로젝트 네임스페이스로 이동하려는 경우, 1단계에 설명된 것과 유사한 데이터베이스 프로세스를 따라야 합니다.

관련 주제