피처 플래그 뒤에 배포된 GitLab 기능을 활성화하거나 비활성화하기

Tier: Free, Premium, Ultimate Offering: Self-Managed

GitLab은 피처 플래그 전략을 채택하여 기능을 초기 개발 단계에서 단계적으로 배포할 수 있도록 하였습니다.

이들을 영구적으로 사용할 수 있게 하기 전에, 기능은 여러 가지 이유로 인해 플래그 뒤에 배포될 수 있습니다:

  • 기능을 테스트하기 위해.
  • 사용자와 고객으로부터 피드백을 받기 위해 기능의 초기 단계에서.
  • 사용자의 채택률을 평가하기 위해.
  • GitLab의 성능에 미치는 영향을 평가하기 위해.
  • 릴리스를 통해 작은 단위로 구축하기 위해.

플래그 뒤에 있는 기능은 일반적으로 다음과 같이 점진적으로 배포될 수 있습니다:

  1. 기능은 기본적으로 비활성화됩니다.
  2. 기능은 기본적으로 활성화됩니다.
  3. 피처 플래그가 제거됩니다.

이러한 기능은 사용자의 허용 여부를 조정하여 활성화하거나 비활성화할 수 있습니다. 이 작업은 GitLab 관리자가 Rail 콘솔이나 피처 플래그 API에 액세스할 수 있는 경우에 수행할 수 있습니다.

피처 플래그를 비활성화하면 해당 기능은 사용자에게 숨겨지며 기능의 모든 기능이 비활성화됩니다. 예를 들어, 데이터가 기록되지 않으며 서비스가 실행되지 않습니다.

특정 기능을 사용하고 버그, 오동작 또는 오류를 식별한 경우, GitLab에게 **피드백을 제공**하여 수정하거나 해결할 수 있도록 한 것이 매우 중요합니다. GitLab을 업그레이드할 때, 피처 플래그 상태가 변경될 수 있습니다.

개발 중인 기능을 활성화할 때의 위험

프로덕션 환경의 비활성화된 피처 플래그를 활성화하기 전에 잠재적인 위험을 이해하는 것이 중요합니다.

caution
기본적으로 비활성화된 기능을 활성화할 경우 데이터 손상, 안정성 저하, 성능 저하 및 보안 문제가 발생할 수 있습니다.

기본적으로 비활성화된 기능의 경우, 미래 버전의 GitLab에서 해당 기능이 변경되거나 제거될 수 있습니다.

기본적으로 비활성화된 기능은 프로덕션 환경에서 사용하는 것을 권장하지 않으며, 기본적으로 비활성화된 기능 사용으로 인한 문제는 GitLab Support에서 처리되지 않습니다.

기본적으로 비활성화된 기능에서 발견된 보안 문제는 정기 릴리스에서 수정되며, 수정 사항에 대한 일반적인 유지 보수 정책에 따라 역방향으로 이동하지 않습니다.

출시된 기능을 비활성화할 때의 위험

대부분의 경우, 피처 플래그 코드는 미래 버전의 GitLab에서 제거됩니다. 이렇게 되면 해당 시점 이후에 해당 기능을 비활성화 상태로 유지할 수 없게 됩니다.

피처 플래그를 활성화하고 비활성화하는 방법

각 기능마다 해당 기능을 활성화하고 비활성화하는 데 사용해야 하는 플래그가 있습니다. 플래그 뒤에 있는 각 기능의 설명서에는 플래그의 상태와 해당 기능을 활성화 또는 비활성화하는 명령에 대한 섹션이 포함되어 있습니다.

GitLab Rails 콘솔 시작

플래그 뒤에 있는 기능을 활성화하거나 비활성화하기 위해서는 먼저 GitLab Rails 콘솔에서 세션을 시작해야 합니다.

Linux 패키지 설치의 경우:

sudo gitlab-rails console

소스에서 설치하는 경우:

sudo -u git -H bundle exec rails console -e production

세부 사항은 Rails 콘솔 세션 시작을 참조하세요.

기능 활성화 또는 비활성화

Rails 콘솔 세션이 시작되면, 해당 기능의 문서에서 구체적인 플래그를 찾은 후 Feature.enable 또는 Feature.disable 명령을 실행하십시오.

기능을 활성화하려면 다음을 실행합니다:

Feature.enable(:<피처 플래그>)

예를 들어, example_feature라는 가상의 피처 플래그를 활성화하려면:

Feature.enable(:example_feature)

기능을 비활성화하려면 다음을 실행합니다:

Feature.disable(:<피처 플래그>)

예를 들어, example_feature라는 가상의 피처 플래그를 비활성화하려면:

Feature.disable(:example_feature)

일부 피처 플래그는 프로젝트당으로 활성화하거나 비활성화할 수 있습니다:

Feature.enable(:<피처 플래그>, Project.find(<프로젝트 ID>))

예를 들어, :example_feature 피처 플래그를 프로젝트 1234에서 활성화하려면:

Feature.enable(:example_feature, Project.find(1234))

Feature.enableFeature.disable은 응용프로그램이 해당 플래그를 사용하지 않더라도 항상 true를 반환합니다:

irb(main):001:0> Feature.enable(:example_feature)
=> true

기능이 준비되면 GitLab은 해당 피처 플래그를 제거하고, 해당 기능을 활성화 또는 비활성화하는 옵션이 더는 존재하지 않습니다. 해당 기능은 모든 인스턴스에서 사용할 수 있게 됩니다.

피처 플래그가 활성화되었는지 확인

플래그가 활성화되었는지 또는 비활성화되었는지 확인하려면 Feature.enabled? 또는 Feature.disabled?를 사용하십시오. 예를 들어, 이미 활성화된 example_feature라는 피처 플래그인 경우:

Feature.enabled?(:example_feature)
=> true
Feature.disabled?(:example_feature)
=> false

기능이 준비되면 GitLab은 해당 피처 플래그를 제거하고, 해당 기능을 활성화 또는 비활성화하는 옵션이 더는 존재하지 않습니다. 해당 기능은 모든 인스턴스에서 사용할 수 있게 됩니다.

설정된 피처 플래그 보기

모든 GitLab 관리자가 설정한 피처 플래그를 확인할 수 있습니다:

Feature.all
=> [#<Flipper::Feature:198220 name="example_feature", state=:on, enabled_gate_names=[:boolean], adapter=:memoizable>]

# 좋은 출력
Feature.all.map {|f| [f.name, f.state]}

피처 플래그 해제

피처 플래그를 해제하여 해당 플래그에 대한 현재 기본값으로 돌아갈 수 있습니다:

Feature.remove(:example_feature)
=> true