다음을 통해 공유


자습서: Python 애플리케이션에서 사용자 지정 필터를 사용하여 조건부 기능 사용

기능 플래그는 기능 필터를 사용하여 기능을 조건부로 사용하도록 설정할 수 있습니다. 기능 필터에 대한 자세한 내용은 자습서: 기능 필터를 사용하여 조건부 기능 사용을 참조하세요.

이 자습서에 사용되는 예는 기능 관리 빠른 시작에 소개된 Python 애플리케이션을 기반으로 합니다. 계속 진행하기 전에 빠른 시작을 완료하여 베타 기능 플래그를 사용해 Python 애플리케이션을 만드세요. 완료되면 App Configuration 저장소의 베타 기능 플래그에 사용자 지정 기능 필터를 추가해야 합니다.

이 자습서에서는 사용자 지정 기능 필터를 구현하고 기능 필터를 사용하여 기능을 조건부로 사용하도록 설정하는 방법을 알아봅니다.

필수 조건

사용자 지정 기능 필터 구현

필수 구성 요소에 베타 기능 플래그에 대한 Percentage 매개 변수를 사용하여 Random이라는 사용자 지정 기능 필터를 추가했습니다. 다음으로 기능 필터를 구현하여 Percentage 매개 변수에 정의된 확률에 따라 베타 기능 플래그를 사용하도록 설정합니다.

  1. 다음 코드를 사용하여 RandomFilter.py 파일을 추가합니다.

    import random
    from featuremanagement import FeatureFilter
    
    @FeatureFilter.alias("Random")
    class RandomFilter(FeatureFilter):
    
        def evaluate(self, context, **kwargs):
            value = context.get("parameters", {}).get("Value", 0)
            if value < random.randint(0, 100):
                return True
            return False
    

    FeatureManagement 라이브러리에서 FeatureFilter 추상 클래스를 구현하는 RandomFilter 클래스를 추가했습니다. FeatureFilter 클래스에는 기능 플래그가 평가될 때마다 호출되는 evaluate라는 단일 메서드가 있습니다. evaluate에서 기능 필터는 true를 반환하여 기능 플래그를 사용하도록 설정합니다.

    FeatureFilter.aliasRandomFilter로 데코레이팅하여 Azure App Configuration의 베타기능 플래그에 설정한 필터 이름과 일치하는 별칭 Random 필터에 지정했습니다.

  2. app.py 파일을 열고 FeatureManager를 만들 때 RandomFilter를 등록합니다. 또한 아래와 같이 자동으로 새로 고치지 않으며 베타 기능 플래그에 몇 번 액세스하도록 코드를 수정합니다.

    from featuremanagement import FeatureManager
    from azure.appconfiguration.provider import load
    from azure.identity import DefaultAzureCredential
    import os
    
    endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT_STRING")
    
    # Connect to Azure App Configuration using and Endpoint and Azure Entra ID
    # feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration
    # feature_flag_refresh_enabled makes it so that the provider will refresh feature flags
    # from Azure App Configuration, when the refresh operation is triggered
    config = load(endpoint=endpoint, credential=DefaultAzureCredential(), feature_flag_enabled=True)
    
    feature_manager = FeatureManager(config, feature_filters=[RandomFilter()])
    
    for i in range(0, 10):
        print("Beta is", feature_manager.is_enabled("Beta"))
    

작동 중인 기능 필터

애플리케이션을 실행하면 구성 공급자가 Azure App Configuration에서 베타 기능 플래그를 로드합니다. is_enabled("Beta") 메서드의 결과가 콘솔에 출력됩니다. RandomFilter베타 기능 플래그에 의해 구현되고 사용되므로 결과는 50%는 True이고 나머지 50%는 False입니다.

애플리케이션을 실행하면 베타 기능 플래그가 활성화되는 경우도 있고 그렇지 않은 경우도 있음을 알 수 있습니다.

Beta is True
Beta is False
Beta is True
Beta is True
Beta is True
Beta is False
Beta is False
Beta is False
Beta is True
Beta is True

다음 단계

기본 제공 기능 필터에 대해 자세히 알아보려면 다음 자습서를 계속 진행합니다.