InfoGrab DocsInfoGrab Docs

Enterprise Edition 기능 구현 가이드라인

GitLab EE(Enterprise Edition) 기능을 CE(Community Edition)와 분리하여 구현하는 방법과 SaaS 전용 기능, Dedicated 인스턴스 기능, 백엔드/프론트엔드 코드 분리 패턴을 설명합니다.

코드를 ee/ 에 배치 : 모든 Enterprise Edition(EE) 코드는 ee/ 최상위 디렉터리 안에 넣으세요. 나머지 코드는 Community Edition(CE) 파일과 최대한 가깝게 유지해야 합니다. 테스트 작성 : 다른 코드와 마찬가지로, EE 기능은 회귀를 방지하기 위해 충분한 테스트 커버리지를 가져야 합니다. 모든 ee/ 코드는 ee/ 에 대응하는 테스트가 있어야 합니다. 문서 작성 : doc/ 디렉터리에 문서를 추가하세요. 기능을 설명하고, 해당되는 경우 스크린샷을 포함하세요. 기능이 적용되는 에디션 을 명시하세요. www-gitlab-com 프로젝트에 MR 제출 : 새로운 기능을 EE 기능 목록 에 추가하세요. 개발 환경에서의 런타임 모드 # EE 언라이선스 : 메인 리포지터리 에서 GDK를 일반적으로 설치했을 때 기본 상태입니다. EE 라이선스 : GDK에 유효한 라이선스를 추가 했을 때입니다. GitLab.com : SaaS를 시뮬레이션 할 때입니다. CE : 위의 상태 중 어느 것이든, CE를 시뮬레이션 할 때입니다. 기능 구현 의사결정 흐름 # 다음 다이어그램은 CE/EE/SaaS/Dedicated 레이어에 걸쳐 기능을 어디서 어떻게 구현할지 결정하는 방법을 보여줍니다: %%{init: { "fontFamily": "GitLab Sans" }}%% flowchart TD accTitle: Feature implementation decision flow accDescr: Diagram showing how to decide where and how to implement features across CE/EE/SaaS/Dedicated layers A[Developer wants to implement a feature] --> B{What type of feature?} B -->|CE Feature| C[Implement in main codebase] B -->|EE Licensed Feature| D[EE Feature Path] B -->|SaaS-only Feature| E[SaaS Feature Path] B -->|Dedicated Feature| F[Dedicated Feature Path] C --> C1[Place code in app/, lib/, etc.] C --> C2[Write tests in spec/] C --> C3[No license checks needed] D --> D1{New or extending existing?} D1 -->|New EE Feature| D2[Place in ee/ directory] D1 -->|Extending CE| D3[Create EE module with prepend_mod] D2 --> D4[Add to ee/app/models/gitlab_subscriptions/features.rb] D3 --> D4 D4 --> D5{Which plan?} D5 -->|Premium| D6[Add to PREMIUM_FEATURES] D5 -