실험 롤아웃 및 기능 플래그

실험 롤아웃 이슈

각 실험은 롤아웃부터 정리 및 제거까지의 실험을 추적하기 위한 실험 롤아웃 이슈가 있어야 합니다. 롤아웃 이슈는 기능 플래그 롤아웃 이슈와 유사하며 실험의 상태를 추적하는 데도 사용됩니다.

실험이 배포되면 이슈의 마감일을 설정해야 합니다(이는 실험에 따라 다르지만 앞으로 수주가 될 수 있습니다). 마감일 이후에는 이 문제를 해결하고 다음 중 하나여야 합니다.

  • 성공적이었고, 실험이 새로운 기본값이 됩니다.
  • 성공하지 못했으며 실험과 관련된 모든 코드가 제거됩니다.

어느 경우에도 실험의 결과는 해당 이슈에 게시되어 결정에 대한 이유와 함께 기록되어야 합니다.

모든 실험 끄기

GitLab.com (SaaS)에서 모든 실험을 중지해야 하는 경우에는 이러한 제어권이 있습니다.

gitlab_experiment 기능 플래그를 사용하여 SaaS의 실험을 켜고 끌 수 있습니다.

이를 ChatOps를 통해 수행할 수 있습니다.

기능 플래그에 대한 참고 사항

참고: 여기서 “enabled”와 “disabled” 용어를 사용하지만, 이는 문서 작성 가이드 권장사항에 어긋납니다. 기능 플래그 문서에서 사용하는 용어이기 때문에 사용합니다.

아마도 이미 GitLab의 기능 플래그 개념에 익숙할 것입니다만, 실험에서 기능 플래그를 사용하는 것은 약간 다릅니다. 일반적으로 기능 플래그는 on 또는 off로 보이지만, 실험에서는 정확하지 않습니다.

일반적으로, off는 기능 플래그가 활성화되었는지 묻는 경우 항상 false를 반환하고, on은 항상 true를 반환합니다. 중간 상태인 conditional도 존재합니다. 우리는 기능 플래그의 이 삼 상태를 이용합니다. 이 “conditional” 측면을 이해하려면 기능 플래그를 이 상태로 두는 경우를 고려해 보세요.

  • 어떤 백분율 이상의 percentage_of_actors를 설정하는 것.
  • 단일 사용자 또는 그룹에게 활성화하는 것

“조건부”는 특정 상황에서 true를 반환하지만 모든 상황에서 그렇지는 않음을 의미합니다.

기능 플래그가 비활성화되었을 때(즉, 상태가 off인 경우), 실험이 _비활성화_로 간주됩니다. 이것은 의사 결정 트리 다이어그램에서 “Running?” 노드에 도달하고 부정적인 경로를 따라가는 것으로 시각화할 수 있습니다.

기능 플래그가 percentage_of_actors 또는 유사한 상태로 롤아웃되었을 때(즉, 상태가 conditional인 경우), 실험은 _실행 중_으로 간주됩니다. 때로는 제어가 할당되고 때로는 후보가 할당됩니다. 우리는 여기서 “활성화”라는 용어를 사용하지 않습니다. 실험 용어에서는 우리의 실험이 _실행 중_이며 기능 플래그가 conditional임을 나타냅니다.

기능 플래그가 활성화되었을 때(즉, 상태가 on인 경우), 후보가 항상 할당됩니다.

용어를 일관성 있게 사용해야 하며, 따라서 실험에 대해 기능 플래그를 conditional로 설정하기 전까지 실험은 _비활성화_되어 있다고 간주됩니다. 그 후에 실험은 _실행 중_으로 간주됩니다. 기능 플래그를 “활성화”로 선택한다면, 모든 사람이 후보에 할당되어 있으므로 실험을 _해결됐다_고 생각해야 합니다.