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 -

특징 플래그

요약

이 문서는 특히 개발 시 Cells 인프라에서 사용될 때 기존의 GitLab 특징 플래그의 현재 사용 및 미래 사용에 대해 다룹니다. 개발 문서에서 특징 플래그에 대한 참조를 확인하세요.

:warning: GitLab 애플리케이션의 특징 플래그 기능 세트와 혼동하지 마세요.

현재 사용

특징 플래그는 GitLab의 개발에 중요한 역할을 합니다. 코드의 일부분을 안전한 방식으로 테스트할 수 있어 새로운 기능이 원하는 방식으로 운영되며 .com의 규모에서 작동할 것으로 확신을 늘립니다. Cells는 특징 플래그의 널리 사용되는 기술적 부채에 새로운 과제를 소개합니다. 자세한 정보는 기존의 특징 플래그 청사진을 참조하세요: 특징 플래그 사용 사례

Cells의 과제

  • 어떤 액터가 어떤 Cells에 존재하는지 이해하기 위한 발견 능력
  • 각 Cells마다 롤아웃 능력이 없음
  • 특징 플래그 상태의 관리가 중앙 집중화되지 않음
  • Cells의 확장이 개발 및 운영 팀에 부담을 주는 상황

제안

특징 플래그의 사용을 Cells로 확장하는 것에 대해 이터레이션하되, 현재 기본 Cell 또는 현재 .com 인프라가 여전히 대부분의 특징 플래그가 테스트에 활용될 수 있다고 기대할 수 있는 곳이므로 이를 훨씬 더 느리게 할 것입니다. 고객을 Cells로 이관하는 것이 미래의 목표이므로 우리는 특징 플래그와 상호작용하는 방법을 확장할 의사가 확실히 있지만, 우리는 .com의 안전성 및 안정성을 보장하기 위한 기능 및 절차를 개발해야 합니다.

이터레이션 Cells 1.0

Cells가 더 안정적인 GitLab 버전을 호스팅하려는 궁극적 목표와 일치하도록, 특징 플래그에 대한 첫 번째 이터레이션은 주로 해결해야 할 작업을 발견하고 적절한 팀과 우선 순위를 정하는 데 있습니다. 이렇게 함으로써 우리는 미래의 이터레이션에 대해 생각하는 시간을 확보하고 필요에 따라 그것을 정제할 수 있습니다.

여기서 기대하는 바는 이러한 작업이 완료되는대로 계속해서 기본 Cell, 현재 인프라인 기존의 방식대로 특징 플래그를 관리하고 변경하며, 개발팀이 제2 Cell에 대한 어떠한 변화도 예상하지 않고 현재 여전히 기대하고 있는 행동이나 결과의 변화 없음을 의미합니다. 이미 진행 중인 향상 작업에 대한 계속적인 작업은 간섭이나 불필요한 복잡성을 방지하기 위해 반드시 고려되어야 합니다.

미래의 이터레이션

능력 추가

Cells에서의 참여

과거에 특징 플래그는 사고를 완화하는 데 잠재력이 있었습니다. 예를 들어, 특정 기능이 특징 플래그 뒤에 있고 활성화되어 있지만 코드가 원하는 방식으로 작동하지 않을 수 있다면 사고를 완화하기 위해 이를 leverage할 수 있습니다. 또 다른 예로는 특정 기능이 활발하게 개발 중이고 해당 기능을 클러스터 전반에서 활성화하기 전에 추가 정보를 수집해야 하는 경우입니다. 이러한 경우개발팀이 직접 Cell과 상호작용할 수 있는 사용자 경험을 제공할 수 있도록 Chatops의 기능을 확대해야 합니다. 이를 위해, Chatops가 Cells의 개념을 이해하고 공학팀이 Cell에 명령을 실행할 수 있는 사용자 경험을 제공할 수 있어야 합니다.

예를 들어, Cell 7에서 lorem_ipsum_dolar 특징 플래그를 변경하고자 할 경우 다음 명령을 사용합니다:

/chatops run feature set lorem_ipsum_dolar false --cell 7

이 명령은 Cell 7에 도달하여 특징 플래그를 비활성화합니다.

사용자 참여

개발에 도움을 위해 정보를 수집하는 데 활용되는 특징 플래그는 특정 프로젝트, 사용자 또는 백분율 기반 액터를 대상으로 할 수 있습니다. 이를 모든 Cells에 대해 설정하는 것은 어려운 문제가 있습니다. 따라서, 액터 기반 특징 플래그 변경은 기본 Cell에 대해서만 제한됩니다.

예를 들어, lorem_ipsum_dolar 특징 플래그를 @ayufan 액터의 경우 변경하고자 한다면 다음 명령을 사용합니다:

/chatops run feature set lorem_ipsum_dolar ayufan

이 명령은 해당 사용자의 경우에만 플래그를 변경하며, 다른 Cells에 영향을 미치지 않습니다. 우리는 Chatops를 확장하여 특정 Cell에서 직접 사용자를 설정할 수 있도록 플래그를 추가할 수 있을 것입니다. 이 작업을 하려면 엔지니어가 액터가 거주하는 Cell을 알아야 합니다. 이러한 제한의 이유는 사용자 및 프로젝트가 여러 Cells에 걸쳐있을 수 있다는 사실을 고려하기 때문입니다. Cells는 한 Cell에서 다른 Cell로 데이터를 이관할 수 있도록 설계되고 있습니다. 특징 플래그 데이터는 Cell의 설정으로 저장되므로 플래그가 설정된 메타데이터는 액터와 관련된 지식의 일부가 아닙니다. 따라서 특정 사용자 대상으로 설정한 후 나중에 해당 사용자가 이동하면 플래그가 올바르게 설정되지 않을 위험이 있습니다. 이는 특정 사용자의 다른 행동을 발견하지 못할 수 있으므로 내부 고객에게 발생하는 이러한 변화는 위험을 줄입니다. 이 방법론은 또한 복잡성을 제거하는 것으로, Cells를 호스팅하는 일부 서비스에 대한 쿼리와 여러 Cell을 대상으로 전문 롤아웃 절차를 개발해야 하는 필요성을 제거합니다. 이에 대한 자세한 내용은 다음 섹션에서 더 자세히 논의됩니다.

환경 참여

현재 우리는 전체 환경에 특징 플래그를 설정할 수 있습니다. 그 중 하나가 프로덕션입니다. 모든 Cells에 대해 특징 플래그를 롤아웃하는 방법은 어떻게 해야 할까요? 이상적으로는 해당 플래그가 충분히 테스트되었을 것이지만, 모든 Cells에 대한 동작을 검증하기 위해 여전히 일부 형태의 테스트가 필요할 수 있습니다.

예를 들어, lorem_ipsum_dolar 특징 플래그를 전체 프로덕션에 활성화하고자 한다면 다음 명령을 사용합니다:

/chatops run feature set lorem_ipsum_dolar true --production

이 명령은 많은 작업을 수행해야 합니다. 먼저, 이 명령은 해당 특징 플래그가 존재하는 모든 Cells를 수집해야 합니다. 특정 Cell에 플래그가 존재하지 않는 경우 해당 작업을 수행해서는 안 됩니다. 왜냐하면 이것은 엔지니어의 기대와 프로덕션 환경 사이에 일관성 문제를 발생시킬 수 있기 때문입니다. 그러나 전체 Cells에 대해 존재하는 플래그가 있다면 해당 변경을 모든 Cells에 대해 롤아웃하기 시작해야 합니다. 모든 Cells를 동시에 변경하는 것은 권장되지 않습니다. Chatops는 지정된 Cells 디렉터리을 변경하고 일정 신호를 기다린 후 다음 Cells 디렉터리으로 넘어가는 메커니즘을 가져야 합니다. 완료될 때까지 반복되어야 합니다. Cells에 대한 배포 시 Rings 스타일을 활용할 계획인 배송팀은 이러한 사용 사례에 대한 롤아웃을 지원하기 위해 유사한 메타데이터를 활용할 수 있을 것입니다.

요구 사항

  • Chatops는 필요한 정보를 얻기 위해 _어떤 서비스_와 대화할 수 있는 능력이 필요합니다. 이에는 다음이 포함될 수 있습니다:
    • Cells 디렉터리
    • Cells 디렉터리에 할당된 액터
  • 새로운 Cell이 온라인 상태로 전환되면 Chatops의 구성을 관리할 필요가 없어야 합니다. 대신, 새 Cell이 새롭게 구축될 때마다 Chatops가 자동 액세스해야 합니다. 이는 셀이 새로 생성될 때마다 관리 부담을 최소화합니다.
  • 절차 정제. 현재 특징 플래그의 다양한 측면을 개선하기 위한 기존 노력이 이미 있습니다. 우리는 이러한 지속적인 작업을 유념해야 합니다.