실험 롤아웃 및 피쳐 플래그

실험 롤아웃 이슈

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

실험이 배포되면 이슈의 만기일을 설정해야 합니다 (실험에 따라 다르지만 미래로 최대 몇 주까지 설정할 수 있음). 만기일 이후에 이슈를 해결하고 다음 중 하나여야 합니다:

  • 성공적이었고 실험이 새로운 기본값이 되었을 때
  • 성공적이지 않았고 실험과 관련된 모든 코드가 제거되었을 때

두 경우 모두 결정에 대한 이유와 함께 실험의 결과를 이슈에 게시해야 합니다.

모든 실험 끄기

GitLab.com(SaaS)에서 모든 실험을 중지해야 하는 경우 이 컨트롤이 있습니다.

gitlab_experiment 피쳐 플래그를 사용하여 SaaS에서 실험을 켜고 끌 수 있습니다.

ChatOps를 통해 다음을 수행할 수 있습니다:

피쳐 플래그에 대한 참고 사항

참고: 여기서 “enabled”와 “disabled”라는 용어를 사용하지만 이는 저희 문서 스타일 가이드 권장에 어긋나는 용어입니다. 왜냐하면 피쳐 플래그 문서에서 이 용어를 사용하기 때문입니다.

여러분은 이미 GitLab의 피쳐 플래그 개념에 익숙할 수 있지만 실험에서 피쳐 플래그를 사용하는 것은 약간 다릅니다. 일반적으로 피쳐 플래그가 on 또는 off로 보이지만, 실험에서는 실제로 이렇지 않습니다.

보통 off는 피쳐 플래그가 활성화되었는지 물어봐도 항상 false를 반환하고, on은 항상 true를 반환합니다. 중간 상태인 conditional도 존재합니다. 저희는 이러한 피쳐 플래그의 삼상 상태를 활용합니다. 이 conditional 측면을 이해하려면 다음 중 하나로 피쳐 플래그를 설정하여 이 상태로 만들었다고 생각해보세요:

  • percentage_of_actors를 0%보다 큰 어떤 퍼센트로 설정하기
  • 단일 사용자 또는 그룹에 대해 활성화하기

Conditional은 어떤 상황에서는 true를 반환하지만 모든 상황에서는 아니라는 뜻입니다.

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

피쳐 플래그가 percentage_of_actors 또는 유사한 대상으로 롤아웃될 때 (즉, 상태가 conditional인 경우) 실험은 _실행 중_으로 간주됩니다. 때로는 컨트롤이 할당되기도 하고 후보가 할당되기도 합니다. 저희는 이것을 활성화되었다고 표현하지 않습니다. 왜냐하면 이 용어는 혼란스럽고 오버로드된 용어이기 때문입니다. 실험 용어에서 우리의 실험은 _실행 중_이고 피쳐 플래그는 conditional인 것으로 간주합니다.

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

저희는 용어에 대해 일관성 있게 유지해야 하며, 따라서 실험에서는 피쳐 플래그를 conditional로 설정할 때까지 비활성화된 실험이고, 그 이후에 우리의 실험은 _실행 중_이라고 생각해야 합니다. 피쳐 플래그를 “활성화”로 선택하면 모든 사람이 후보에 할당되어 실험이 완료된 것으로 간주해야 합니다.

GitLab 13.10부터 이 프로세스 및 이에 대한 커뮤니케이션을 개선하기 위한 작업이 이루어지고 있습니다.