사용자 식별자와 속성

📘

사용자 식별자 관리

사용자 식별자는 사용자를 고유하게 식별하는 목적으로 사용합니다.
사용자 식별자의 의미와 중요성, 선택하는 기준 등에 대해서는 사용자 식별자 관리하기 문서를 참고하시기 바랍니다.

직접 관리하는 사용자 식별자 사용

서버 측 SDK는 사용자를 특정할 수 없기 때문에 항상 사용자 식별자를 파라미터로 직접 전달해야 합니다.
전달하는 식별자는 직접 관리하는 Primary Key, 디바이스 식별자, 회원 아이디, 이메일, 해시값 등이 될 수 있습니다.

예시

테스트 그룹 분배 후 사용자 이벤트 전송을 하는 상황을 예로 들면 다음과 같습니다.

from hackle.model import HackleUser

user = HackleUser(id='ae2182e0')

# 테스트 그룹 분배
variation = hackle_client.variation(experiment_key=42, user=user)

# 사용자 이벤트 전송
hackle_client.track(event=event, user=user)

속성(Property)

핵클 SDK는 사용자(User) 객체에 속성을 추가할 수 있도록 지원합니다.

  • 속성은 속성명(key)과 속성값(value)을 한 쌍으로 보내야 합니다.
  • 사용자 객체에 추가 가능한 속성 개수는 최대 64개입니다.

속성명(key)

  • 일반적인 변수명처럼 만들되 식별하기 쉽게 만드는 것을 권장합니다.
  • 글자수 제한은 64자입니다. (64 characters)
  • 대소문자를 구분하지 않습니다. 예를 들어 AGE와 age는 동일한 속성명으로 인식합니다.

속성값(value)

  • value는 boolean, string, number 타입을 지원합니다.
  • string 타입인 경우 글자수 제한은 64자입니다. (64 characters)
  • string 타입은 대소문자를 구분합니다. 예를 들어 APPLE과 apple은 서로 다른 속성값으로 인식합니다.
  • number 타입인 경우 정수 최대 15자리, 소수점 최대 6자리를 지원합니다.

예시

사용자(User) 객체는 테스트 그룹 분배, 기능 플래그 결정, 사용자 이벤트 전송에서 파라미터로 사용됩니다.
아래 예시에서는 세 가지 속성(age, grade, is_paying_user)을 추가한 것을 확인할 수 있습니다.

from hackle.model import HackleUser

user = HackleUser.builder() \
                 .id('ae2182e0') \
                 .property('age', 30) \
                 .property('grade', 'GOLD') \
                 .property('is_paying_user', False) \
                 .build()

# 테스트 그룹 분배
variation = hackle_client.variation(experiment_key, user)

# 기능 플래그 결정
feature_on = hackle_client.is_feature_on(feature_key, user)

# 사용자 이벤트 전송
hackle_client.track(event, user)
from hackle.model import HackleUser

user = HackleUser(
  id='ae2182e0',
  properties={
    'age': 30,
    'grade': 'GOLD',
    'is_paying_user': False
  }
)

# 테스트 그룹 분배
variation = hackle_client.variation(experiment_key, user)

# 기능 플래그 결정
feature_on = hackle_client.is_feature_on(feature_key, user)

# 사용자 이벤트 전송
hackle_client.track(event, user)

추가 식별자

기본 식별자 외의 추가 식별자는 아래 예시 코드를 통해 전송할 수 있습니다.

from hackle.model import HackleUser

user = HackleUser.builder() \
                 .id('ae2182e0') \
                 .user_id('143') \
                 .device_id('ae2182e0') \
                 .session_id('1673508397731.9bdcc236') \
                 .identifier('my_custom_id', '42') \
                 .identifier('other_id', '320') \
                 .property('age', 30) \
                 .property('grade', 'GOLD') \
                 .property('is_paying_user', False) \
                 .build()
from hackle.model import HackleUser

user = HackleUser(
  id='ae2182e0',
  user_id='143',
  device_id='ae2182e0',
  identifiers={
    'my_custom_id': '42'
  },
  properties={
    'age': 30,
    'grade': 'GOLD',
    'is_paying_user': False
  }
)