This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed @skarbek @rymai -

피처 플래그

요약

이 문서는 특히 셀 인프라에서 개발 시 사용될 때의 GitLab 피처 플래그의 현재 사용 및 미래 사용을 다룹니다. 여기서 피처 플래그에 대한 개발 문서를 참조하세요.

:warning: GitLab 애플리케이션 기능 세트인 피처 플래그와 혼동하지 마십시오.

현재 사용

피처 플래그는 GitLab의 개발에 매우 중요한 역할을 합니다. 코드 청크는 안전한 방식으로 테스트될 수 있어서 새로운 기능이 원하는 대로 작동하고 .com의 규모로 운영될 수 있는지에 대한 자신감을 높입니다. Cells는 피처 플래그의 널리 사용되는 기술 부채와 새로운 도전 과제를 소개합니다. 추가 정보는 피처 플래그 사용 사례에 대한 기존 청사진을 참조하세요.

Cells의 과제

  • Cells에 존재하는 액터를 이해하는 발견 능력
  • 개별 Cell에 대한 롤아웃 기능 미존재
  • 피처 플래그 상태의 중앙 집중화
  • Cells의 확장이 개발 및 운영 팀에 부담을 주는 것

제안

우리는 Cells에 대한 피처 플래그의 사용을 확장하는 것에 대해 반복적으로 진행할 것입니다. 그러나 현재 .com 인프라인 Primary Cell에서는 여전히 대다수의 피처 플래그가 테스트에 활용될 것으로 기대할 수 있습니다. 고객을 Cells로 이관하는 것이 미래의 목표이므로 타겟 액터에 대해 피처 플래그와 상호작용하는 방법을 확장해야하지만, .com의 안전성과 안정성을 보장하기 위한 능력과 절차를 개발해야 합니다.

Iteration Cells 1.0

Cells가 GitLab의 더 안정적인 버전을 호스팅하려는 궁극적인 목표로, 우리의 첫 번째 반복 작업은 주로 해야 할 작업을 발견하고 적절한 팀들과 우선 순위를 정하는 것입니다. 이렇게 함으로써 우리는 미래의 반복 작업을 생각하고 필요에 맞게 정제할 시간도 제공됩니다.

여기서 기대하는 것은 Primary Cell, 현재의 인프라를 계속 사용하여 Secondary Cell에 대한 개발팀의 행동이나 기대와 관련된 동작이나 예상과 달라지지 않도록 하여서 일어나는 문제도 없도록 꾸준한 개선을 제공하는 것입니다. 지금 진행 중인 개선사항과 관련된 지속적인 작업은 간섭이나 불필요한 복잡성을 도입하지 않도록 고려되어야 합니다.

미래의 반복 작업

능력 추가

Cells에서의 참여

피처 플래그는 과거에 문제를 완화시키는 잠재력이 있었습니다. 예를 들어, 기능이 피처 플래그 뒤에 숨겨져 있고 활성화되어 있지만 코드가 원하는 대로 작동하지 않을 수 있기 때문에 우리는 문제를 완화하는 데 사용할 수 있습니다. 또 다른 예로, 기능이 크게 개발 중이고 그 기능을 클러스터 전체에서 활성화하기 전에 추가 정보를 수집해야 할 수도 있습니다. 여기에 개발 팀이 직접 Cell과 상호작용할 수 있는 메커니즘을 제공할 수 있도록하려면 Chatops의 능력을 Cells의 개념을 이해하고 엔지니어링 팀이 Cell을 대상으로 명령을 실행할 수 있는 UX를 제공할 수 있어야 합니다.

예를 들어, lorem_ipsum_dolar 피처 플래그를 Cell 7에서 변경하고자 한다고 가정해 봅시다. 다음 명령어를 사용하여:

/chatops run feature set lorem_ipsum_dolar false --cell 7

이 명령은 Cell 7로 이동하여 해당 피처 플래그를 비활성화합니다.

액터에 대한 참여

개발을 지원하기 위해 정보를 수집하는 데 활용되는 피처 플래그는 특정 프로젝트, 사용자 또는 백분율 기반 액터를 타겟팅할 수 있습니다. 이러한 설정을 모든 Cells에 적용하는 것은 어렵습니다. 따라서 특정 프로젝트 또는 사용자를 대상으로 피처 플래그를 변경하는 경우, 이것은 Primary Cell에만 제한될 것입니다.

예를 들어, lorem_ipsum_dolar 피처 플래그를 @ayufan 액터에 대해 변경하려고 합시다. 이 사용자는 총 3개의 셀에 분산되어 있을 수 있습니다. 다음 명령어를 사용하여:

/chatops run feature set lorem_ipsum_dolar ayufan

명령은 주요 Cell에서만 해당 사용자를 대상으로 한 피처 플래그를 변경합니다. 나머지 Cell은 무시됩니다. 추가로 Chatops를 확장하여 사용자가 특정 Cell에 직접적으로 액터를 설정할 수 있도록하는 것 또한 고려될 수 있습니다. 이를 위해서 엔지니어는 액터가 어느 Cell에 존재하는지 알아야 합니다. 이러한 제한의 이유는 사용자 및 프로젝트가 여러 Cells에 분산될 수 있기 때문입니다. 또한 Cells는 데이터를 한 Cell에서 다른 Cell로 이관할 수 있도록 설계되고 있습니다. 피처 플래그 데이터는 Cell의 설정으로 저장되므로 설정된 피처 플래그에 대한 메타데이터는 액터와 관련된 지식의 일부가 아닙니다. 따라서 만약 특정 액터를 대상으로 설정한 후 나중에 해당 액터가 이동한다면 해당 피처 플래그는 올바르게 설정되지 않게 될 위험이 있습니다. 이로 인해 특정 사용자에 대해 다른 동작을 유도합니다. 일반적으로 이러한 유형의 변경 사항이 Cells 간을 이동하면 사용자가 Cells 간을 이동하는 동안 행동의 변경에 주목하지 않게 되므로 내부 고객에게 적용됩니다. 이 구현은 또한 서비스에 쿼리할 필요가 없으므로 (어떠한 서비스가 Cells와 액터가 존재하는 서비스인지 등) 특수 롤아웃 절차를 개발할 필요가 없으며 심플하게 유지되었습니다. 다음 섹션에서 좀 더 자세히 논의됩니다.

환경에 대한 참여

오늘날 우리는 전체 환경에 대한 피처 플래그를 설정할 수 있습니다. 그 중 하나가 Production입니다. 이제 모든 Cells에 대한 피처 플래그를 롤아웃하는 방법은 무엇일까요? 이상적으로는 피처 플래그가 충분히 테스트되었지만, 모든 Cells에 대한 동작을 확인하기 위한 어떤 종류의 테스트가 여전히 필요할 수 있습니다.

예를 들어, lorem_ipsum_dolar 피처 플래그를 Production 전체에 활성화하고자 합니다. 다음 명령어를 사용하여:

/chatops run feature set lorem_ipsum_dolar true --production

이 명령어는 많은 작업을 수행해야 합니다. 먼저, 이 피처 플래그가 존재하는 모든 Cells을 수집해야 합니다. 만약 이 피처 플래그가 어떤 Cell에도 존재하지 않는다면, 이것은 엔지니어의 기대와 Production 환경의 일관성 문제를 발생시키므로 이를 변경해서는 안 됩니다. 그러나 완전히 배포가 완료되지 않은 배포의 사고를 완화하기 위해 이를 무시할 수 있는 방법도 고려해 볼 수 있습니다. 만약 어떤 환경의 모든 Cells에 걸쳐 해당 피처 플래그가 존재한다면, 이제 이 변화를 모든 Cells에 걸쳐 롤아웃을 시작할 것입니다. 모든 Cells을 동시에 변경하는 것은 권장되지 않습니다. Chatops는 특정 Cell 디렉터리에 변경을 수행하고, 어떤 신호를 기다린 후 다음 Cell 디렉터리으로 진행하도록 하는 메커니즘을 가져야 합니다. 완료될 때까지 이를 반복합니다. 충분히 되엌 애플리케이션이 Cells의 Ring 스타일을 사용할 예정이라면, 우리는 이러한 사용 사례에 대한 롤아웃을 지원하는 데 이와 유사한 메타데이터를 활용할 수 있을 것입니다.

요구 사항

  • Chatops는 필요한 정보를 수집하기 위해 특정 서비스 와 대화할 수 있어야 합니다. 이는 다음을 포함할 수 있습니다:
    • 셀 디렉터리
    • 셀 디렉터리에 할당된 액터들
  • 새로운 셀이 온라인으로 전환되면 Chatops의 구성을 관리할 필요가 없어야 합니다. 대신, Chatops는 새로운 셀에 자동으로 액세스해야 합니다. 이렇게 함으로써, 새로운 셀이 구축될 때마다 관리 부담이 최소화됩니다.
  • 절차 개선. 우리는 이미 오늘의 피처 플래그의 다양한 측면을 개선하기 위한 기존 노력을 가지고 있습니다. 이에 대한 지속적인 작업을 기억해야 합니다.