사용자 식별자와 속성

📘

사용자 식별자 관리

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

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

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

예시

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

import "github.com/hackle-io/hackle-go-sdk/hackle"

user := hackle.NewUserBuilder().ID("ae2182e0").Build()

// 테스트 그룹 분배
variation := hackleClient.Variation(42, user)

// 사용자 이벤트 전송
hackleClient.Track(event, user)

추가 식별자

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

import "github.com/hackle-io/hackle-go-sdk/hackle"

user := hackle.NewUserBuilder().
    ID("ae2182e0").                 // 기본 제공 식별자
    DeviceID("ae2182e0").           // 디바이스 ID (핵클 통합 식별자 사용가능)
    UserID("143").                  // 사용자 ID (핵클 통합 식별자 사용가능)
    Identifier("myCustomId", "42"). // Custom ID
    Build()

속성(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)을 추가한 것을 확인할 수 있습니다.

import "github.com/hackle-io/hackle-go-sdk/hackle"

user := hackle.NewUserBuilder().
    ID("ae2182e0").
    Property("age", 42).
    Property("grade", "GOLD").
    Property("is_paying_user", false).
    Build()
    
// 테스트 그룹 분배  
variation := hackleClient.Variation(experimentKey, user)

// 기능 플래그 결정
featureOn := hackleClient.IsFeatureOn(featureKey, user)

// 사용자 이벤트 전송
hackleClient.track(event, user)