실험 롤아웃 및 기능 플래그
실험 롤아웃 문제
각 실험은 롤아웃부터 정리 및 제거까지 실험을 추적하기 위한 실험 롤아웃 문제가 있어야 합니다.
롤아웃 문제는 기능 플래그 롤아웃 문제와 유사하며, 실험의 상태를 추적하는 데에도 사용됩니다.
실험이 배포되면, 문제의 기한을 설정해야 합니다(이 기한은 실험에 따라 다르지만 몇 주 후가 될 수 있습니다).
기한이 지난 후, 문제는 해결되어야 하며, 다음 중 하나이어야 합니다:
- 성공적이어서 실험이 새로운 기본이 됩니다.
- 성공적이지 않아서 실험과 관련된 모든 코드가 제거됩니다.
어느 쪽이든, 실험의 결과는 결정에 대한 이유와 함께 문제에 게시되어야 합니다.
모든 실험 끄기
GitLab.com(SaaS)에서 모든 실험을 끄는 것이 필요한 경우, 우리는 이 제어 기능을 가지고 있습니다.
gitlab_experiment
기능 플래그를 사용하여 SaaS에서 실험을 켜고 끌 수 있습니다.
이는 ChatOps를 통해 수행할 수 있습니다:
-
사용 안 함:
/chatops run feature set gitlab_experiment false
-
사용:
/chatops run feature delete gitlab_experiment
- 이는
default_enabled
YAML의 true 값을 존중하게 됩니다.
기능 플래그에 대한 노트
문서 스타일 가이드 권장 사항에 어긋나지만,
이것이 기능 플래그 문서에서 사용하는 용어이기 때문입니다.
당신은 이미 GitLab에서 기능 플래그의 개념에 익숙할 수 있지만, 실험에서 기능 플래그를 사용하는 것은 약간 다릅니다.
일반적으로 기능 플래그는 on
또는 off
로 간주되지만, 이는 실험에는 정확하지 않습니다.
일반적으로, off
는 기능 플래그가 활성화되었는지를 묻는 경우 항상 false
를 반환하며, on
은 항상 true
를 반환함을 의미합니다.
중간 상태인 conditional
도 존재합니다. 우리는 기능 플래그의 이러한 삼중 상태를 활용합니다.
이 conditional
측면을 이해하기 위해서는 다음과 같은 설정이 기능 플래그를 이 상태로 만드는 것을 고려하세요:
-
percentage_of_actors
를 0%보다 큰 어떤 비율로 설정. - 단일 사용자 또는 그룹에 대해 활성화.
조건부 상태는 일부 상황에서는 true
를 반환하지만, 모든 상황에서는 그렇지 않음을 의미합니다.
기능 플래그가 비활성화된 (즉, 상태가 off
) 경우, 실험은 _비활성_으로 간주됩니다.
이는 결정 트리 다이어그램에서
첫 번째 Running?
노드에 도달하고, 부정적인 경로로 이동하는 것으로 시각화할 수 있습니다.
기능 플래그가 percentage_of_actors
또는 유사하게 롤아웃된 경우 (즉, 상태가 conditional
)
실험은 _진행 중_으로 간주되며, 가끔 제어가 할당되고, 가끔 후보가 할당됩니다.
우리는 이것을 활성화된 것으로 언급하지 않으므로, 이는 여기서 혼란스럽고 과부하가 걸린 용어입니다.
실험 용어에서, 우리의 실험은 _진행 중_이며, 기능 플래그는 conditional
입니다.
기능 플래그가 활성화된 경우 (즉, 상태가 on
인 경우), 후보가 항상 할당됩니다.
우리는 용어의 일관성을 유지하려고 하고, 그래서 실험의 경우, 기능 플래그를 conditional
로 설정하기 전까지는
비활성 실험이 있으며, 이후에는 실험이 _진행 중_으로 간주됩니다.
기능 플래그를 “활성화”하기로 선택하면, 실험을 _해결됨_으로 간주해야 합니다.
모두가 후보자에게 할당되기 때문이며, 실험에서 옵트 아웃하지 않은 경우에는 그렇지 않습니다.