기능 관리 개요

새 애플리케이션 기능을 제공하려면 일반적으로 애플리케이션 자체를 완전하게 다시 배포해야 합니다. 기능을 테스트하려면 애플리케이션을 여러 번 배포해야 하는 경우가 있습니다. 각 배포는 다양한 고객의 테스트할 수 있도록 기능을 변경하거나 노출할 수 있습니다.

기능 관리는 기능 릴리스를 코드 배포와 분리하여 요청 시 기능 가용성을 빠르게 변경할 수 있게 하는 최신 소프트웨어 개발 사례입니다. 기능의 수명 주기를 동적으로 관리하기 위해 기능 플래그(기능 토글기능 스위치라고도 함)라는 기술을 사용합니다.

기능 관리를 통해 개발자는 다음과 같은 문제를 해결할 수 있습니다.

  • 코드 분기 관리: 기능 플래그를 사용하여 현재 개발 중인 새 애플리케이션 기능을 래핑합니다. 이러한 기능은 기본적으로 "숨겨져" 있습니다. 아직 완성되지 않은 경우에도 기능을 안전하게 제공할 수 있으며, 기능이 프로덕션 환경에서 유휴 상태로 유지됩니다. 다크 배포라고 하는 이 방법을 사용하면 각 개발 주기가 끝날 때 모든 코드를 릴리스할 수 있습니다. 지정된 기능을 완료하려면 둘 이상의 주기가 필요하므로 여러 개발 주기에서 코드 분기를 유지할 필요가 없습니다.
  • 프로덕션 환경에서 테스트: 기능 플래그를 사용하여 프로덕션 환경의 새 기능에 대한 조기 액세스 권한을 부여합니다. 예를 들어 엑세스 권한을 팀 구성원 또는 내부 베타 테스터에게만 제한할 수 있습니다. 이러한 사용자는 테스트 환경에서 시뮬레이션 환경 또는 부분적인 환경이 아닌 완전한 프로덕션 환경을 사용하게 됩니다.
  • 플라이팅: 기능 플래그를 사용하여 새 기능을 최종 사용자에게 점차적으로 롤아웃합니다. 사용자 모집단의 일부를 우선 대상으로 지정하고 시간이 지남에 따라 그 비율을 점차적으로 늘릴 수 있습니다.
  • 인스턴트 킬 스위치: 기능 플래그가 새 기능을 릴리스하기 위한 기본 안전 네트워크를 제공합니다. 코드를 다시 배포하지 않고 애플리케이션 기능을 설정하거나 해제할 수 있습니다. 필요한 경우 애플리케이션을 다시 빌드하고 다시 배포하지 않고도 기능을 빠르게 사용하지 않도록 설정할 수 있습니다.
  • 선별적 활성화: 기능 플래그를 사용하여 사용자를 분할하고 각 그룹에 특정 기능 집합을 제공합니다. 특정 웹 브라우저에서만 작동하는 기능이 있을 수 있습니다. 해당 브라우저의 사용자만 보고 사용할 수 있도록 기능 플래그를 정의할 수 있습니다. 이 방법을 사용하면 나중에 코드를 변경하지 않고도 지원되는 브라우저 목록을 쉽게 확장할 수 있습니다.

기본 개념

기능 관리와 관련된 몇 가지 새로운 용어는 다음과 같습니다.

  • 기능 플래그: 기능 플래그는 on 또는 off의 이진 상태인 변수입니다. 기능 플래그에는 연결된 코드 블록도 있습니다. 기능 플래그의 상태는 코드 블록의 실행 여부를 트리거합니다.
  • 기능 관리자: 기능 관리자는 애플리케이션에 있는 모든 기능 플래그의 수명 주기를 처리하는 애플리케이션 패키지입니다. 기능 관리자는 기능 플래그 캐싱 및 상태 업데이트와 같은 추가 기능도 제공합니다.
  • 필터: 필터는 기능 플래그 상태를 평가하는 규칙입니다. 잠재적 필터에는 사용자 그룹, 장치 또는 브라우저 유형, 지리적 위치 및 시간대가 포함됩니다.

효과적인 기능 관리 구현을 구성하기 위해 협력하여 작동하는 최소한의 두 가지 구성 요소는

  • 기능 플래그를 사용하는 애플리케이션 및
  • 기능 플래그 및 해당 현재 상태를 저장하는 별도의 리포지토리입니다.

코드에서 기능 플래그 사용

애플리케이션에서 기능 플래그를 구현하는 기본 패턴은 간단합니다. 기능 플래그는 코드에서 조건문을 제어하는 부울 상태 변수입니다.

if (featureFlag) {
    // Run the following code
}

featureFlag의 값을 고정으로 설정할 수 있습니다.

bool featureFlag = true;

다음과 같은 특정 규칙에 따라 플래그 상태를 평가할 수 있습니다.

bool featureFlag = isBetaUser();

조건을 확장하여 두 가지 상태의 애플리케이션 동작을 설정할 수 있습니다.

if (featureFlag) {
    // This following code will run if the featureFlag value is true
} else {
    // This following code will run if the featureFlag value is false
}

기능 플래그 리포지토리

기능 플래그를 효과적으로 사용하려면 애플리케이션에서 사용되는 모든 기능 플래그를 외부화해야 합니다. 이 방법을 사용하면 애플리케이션 자체를 수정 및 다시 배포하지 않고 기능 플래그 상태를 변경할 수 있습니다.

Azure App Configuration은 기능 플래그에 대한 중앙 집중식 리포지토리를 제공합니다. 이를 사용하여 다양한 종류의 기능 플래그를 정의하고 해당 상태를 빠르고 자신 있게 조작할 수 있습니다. 그런 다음, 다양한 프로그래밍 언어 프레임워크용 App Configuration 라이브러리를 사용하여 애플리케이션에서 이러한 기능 플래그에 쉽게 액세스할 수 있습니다.

다음 단계

Azure App Configuration에서 기능 플래그 사용을 시작하려면 애플리케이션의 언어 또는 플랫폼과 관련된 다음 빠른 시작을 계속 진행합니다.

Azure App Configuration에서 기능 플래그를 관리하는 방법에 대해 자세히 알아보려면 다음 자습서를 계속 진행합니다.

기능 필터를 사용하면 기능 플래그를 조건부로 사용하도록 설정할 수 있습니다. Azure App Configuration은 특정 기간 동안 또는 앱의 특정 대상 그룹에게만 기능 플래그를 활성화할 수 있는 기본 제공 기능 필터를 제공합니다. 자세한 내용을 알아보려면 다음 자습서를 계속 진행합니다.