InfoGrab DocsInfoGrab Docs

애플리케이션 제한 개발

GitLab 기여자가 애플리케이션 제한을 추가하기 위한 개발 가이드와 플랜 제한 및 속도 제한 구현 방법을 설명합니다.

이 문서는 GitLab에 애플리케이션 제한을 추가하려는 기여자를 위한 개발 가이드입니다. 문서화 # 우선, 정보를 수집하고 다양한 GitLab 티어에 설정된 여러 제한 사항을 결정해야 합니다. 다른 기여자들과 협력하여 해당 제한 사항을 문서화 하고 공유하세요. 애플리케이션 제한 도입 에 관한 가이드가 있습니다. 플랜 제한 구현 # plan_limits 테이블은 **셀 범위 구성(cell-scoped configuration)**입니다. 각 셀은 자체 테이블 사본을 가지며, 제한 사항은 셀 간에 마이그레이션되지 않습니다. 새로운 셀은 각 제한에 대한 칼럼 기본값으로 시작하고, 관리자는 관리자 Plan Limits API 를 통해 셀별로 제한을 조정합니다. 이 때문에 모든 새로운 플랜 제한은 반드시 해당 API를 통해 설정 가능해야 합니다. 그렇지 않으면 새로운 제한이 각 셀에서 칼럼 기본값만 취할 수 있습니다. 셀 간에 일관성을 유지해야 하는 플랜 제한은 도입하지 마세요. plan_limits 는 셀 로컬이므로 동기화 상태를 유지할 방법이 없습니다. 데이터베이스 플랜 제한 삽입 # plan_limits 테이블에 새 칼럼을 만들고 제한 값을 삽입합니다. 두 개의 별도 마이그레이션 스크립트 파일을 만드는 것을 권장합니다. 원하는 제한을 나타내는 null이 아닌 기본값을 가진 새 칼럼을 plan_limits 테이블에 추가합니다: add_column(:plan_limits, :project_hooks, :integer, default: 100, null: false) 0 으로 설정된 플랜 제한 항목은 제한이 활성화되어 있지 않음을 의미합니다. 이 설정은 특수하고 문서화된 상황에서만 사용해야 합니다. (선택 사항) create_or_update_plan_limit 마이그레이션 헬퍼를 사용하여 각 레벨을 원하는 제한으로 세부 조정하는 데이터베이스 마이그레이션을 만듭니다. 이 마이그레이션의 플랜은 GitLab.com의 플랜 과 일치해야 합니다. 플랜이 누락되면 해당 플랜의 고객은 기본 제한( 0 , 즉 무제한일 수 있음)을 받게 됩니다. 예시: class InsertProjectHooksPlanLimits < Gitlab::Database::Migration[2.1] def up create_or_update_plan_limit('project_hooks', 'default', 0) create_or_update_plan_limit('project_hooks', 'free', 10) create_or_update_plan_limit('project_hooks', 'premium', 30) create_or_update_plan_limit('project_hooks', 'premium_trial', 30) create_or_update_plan_limit('project_hooks', 'ultimate', 100) create_or_update_plan_limit('project_hooks', 'ultimate_trial', 100) creat