기능 플래그 결정
기능 플래그는 SDK 버전 2.0.0 이상인 경우 사용 가능합니다.
기능 플래그를 사용하시는 경우 의존성 추가 시 SDK 버전을 2.0.0 이상으로 적용하시기 바랍니다.
기능 플래그는 켜짐(on) 상태와 꺼짐(off) 상태가 있습니다. 각 상태에 따라 다른 기능을 설정하게 됩니다.
기능 플래그를 적용한 기능에 어떤 사용자가 접근할 경우 켜짐 혹은 꺼짐 상태를 받을 수 있어야 합니다. 이 상태 결정을 핵클 SDK를 통해 진행할 수 있습니다.
is_feature_on
is_feature_on()
메소드에 기능 키를 전달하면 사용자에 대한 상태 결과를 전달받을 수 있습니다. 이후 상태에 따른 로직을 구현합니다.
아래 예제 코드에서는 기능 키 42를 전달하고 있으며, 상태를 받을 사용자의 사용자 식별자는 "ae03e1adf" 입니다.
from hackle.model import HackleUser
# 기능 키가 42인 기능 플래그에서 사용자의 상태를 결정합니다.
# 결정하지 못하는 상황인 경우 false(꺼짐 상태)를 반환합니다.
user = HackleUser(id='ae03e1adf')
feature_on = hackle_client.is_feature_on(feature_key=42, user=user)
# 할당받은 그룹에 대한 로직
if feature_on == True:
# ON 기능
elif feature_on == False:
# OFF 기능
feature_flag_detail
feature_flag_detail()
메소드는 is_feature_on()
메소드와 동일하게 동작하고 추가로 상태 결정에 대한 사유를 같이 제공합니다. 수동할당이 잘 되고 있는지 알아보거나 설정한 트래픽 할당 대비 결과 비중이 이상하다고 여길 때 유용하게 활용할 수 있습니다.
파라미터로 기능 키를 전달해야 합니다. 아래 예제 코드의 경우 기능 키 42를 전달하고 있습니다.
decison = hackle_client.feature_flag_detail(feature_key=42, user=user)
# 기능 on/off 여부
feature_on = decison.is_on
# 상태 결정 사유
reason = decision.reason
상태 결정 사유는 SDK_NOT_READY
와 같은 형태로 받게 됩니다. 자세한 내용은 아래 표를 참고해주세요.
사유 | 설명 | 분배 결과 |
---|---|---|
SDK_NOT_READY | SDK 사용 준비가 되지 않았습니다. (예: 잘못된 SDK 키로 초기화 시도) | 기본 상태(꺼짐/off) |
EXPERIMENT_NOT_FOUND | 전달한 기능 키에 대한 기능 플래그를 찾을 수 없습니다. 기능 키가 잘못되었거나 해당 기능 플래그가 보관 상태일 수 있습니다. | 기본 상태(꺼짐/off) |
FEATURE_FLAG_INACTIVE | 기능 플래그가 꺼짐 상태입니다 | 기본 상태(꺼짐/off) |
INDIVIDUAL_TARGET_MATCH | 개별 타겟팅에 매치 되었습니다. | 개별 타겟팅으로 설정한 상태 |
TARGET_RULE_MATCH | 사용자 타겟팅에 매치 되었습니다. | 사용자 타겟팅으로 설정한 상태 |
DEFAULT_RULE | 개별 타겟팅, 사용자 타겟팅 중 어디에도 매치 되지 않았습니다. | 기본 룰로 설정한 상태 |
INVALID_INPUT | 입력 값이 유효하지 않습니다. (예: 숫자 타입을 넣어야 하는 파라미터에 문자 타입 입력) | 기본 상태(꺼짐/off) |
EXCEPTION | 알 수 없는 오류가 발생했습니다. | 기본 상태(꺼짐/off) |
노출 이벤트 중복 제거
Python SDK를 사용하는 경우 동일한 사용자가 1분 이내에 연속으로 발생시킨 동일한 기능플래그 분배결과에 대한 노출 이벤트를 제거합니다. 1분 이내의 이벤트는 1회로 계산됩니다.
기능 플래그 파라미터
feature_flag_detail()
메소드를 통해 상태 결정에 대한 파라미터 값도 같이 제공받을 수 있습니다.- config 객체와
get()
메소드를 통해 기능 플래그 화면에서 설정한 파라미터 설정 값을 받아 활용할 수 있으며 기능 플래그의 파라미터 설정 화면에서 값을 변경할 경우, 변경된 값이 코드에 적용됩니다.
파라미터 설정은 SDK 버전 3.1.0 이상인 경우 사용 가능합니다.
from hackle.model import HackleUser
user = HackleUser(id='ae2182e0')
decision = hackleClient.feature_flag_detail(feature_key=42, user=user)
# 분배 결정 상세에서 get() 메소드를 통해 parameter 값 가져오기
parameterValue = decision.get('parameterKey', 'defaultValue')
# string 유형의 parameter값 예제
strValue = decision.get('parmeterKey', 'defaultValue')
get()
메소드의 parameterKey는 기능 플래그의 파라미터 설정에서 설정한 키 정보이며 defaultValue는 상태 결정 실패 시, 또는 잘못된 파라미터 유형의 값을 넣었을 때 Return되는 값입니다.- 설정한 정보를 제대로 받기 위해서는 defaultValue에 설정하신 파라미터 유형에 맞는 type의 값을 입력해야 합나다.
- JSON 타입은 문자열(String)형태로 받을 수 있으므로, JSON 타입의 경우 defaultValue를 문자열 타입으로 입력해야 합니다.
- SDK에서 제공되는 파라미터 유형은 string, number, boolean 이며 기능 플래그 화면에서 설정한 JSON 타입은 문자열(String)형태로 받을 수 있습니다. JSON 타입의 default 값은 문자열 타입으로 입력해야 합니다.
Updated 11 months ago