lifecarelog 2023. 1. 24. 20:40
반응형

이번에 새로 들어간 회사에서 A/B테스트를 위해 핵클이란 라이브러리르 사용한다해서 처음 접하게 되었다.

https://hackle.io/ko/

 

핵클: A/B 테스트, 기능 플래그 및 이상 징후 탐지 플랫폼

 

hackle.io

 

Hackle이란 A/B테스트를 위한 기능 뿐 아니라 다양한 방법으로 사용자 액션을 분석해서 대시보드 형태로 정보를 제공도 해준다.

많은 기능을 제공하는 것 같지만 모든 기능을 전부다 사용하지는 못 했고 간단한 기본 기능만 사용했다.

 

공식 문서에 사용방법이 자세하게 잘 나와있어서 위 공식문서를 보면서 천천히 따라 했다.

설치방법

npm install --save @hackler/react-native-sdk
# or
yarn add @hackler/react-native-sdk

react-native link

cd ios
pod install

 

사용법

회원가입 후 로그인을 한다.

대시보드에서 SDK 연동 정보 메뉴를 클릭하면 개발환경별로 SHK 키를 확인할 수 있다.

 

A/B테스트를 하고 싶은 영역을 Provider로 감싸준다.

 

새로운 실험군을 만들때 보내준 파라미터를 기준으로 조건을 지정해서 특정 유저한테만 실험은 적용하게 할 수도 있다.

import { createInstance, HackleProvider } from "@hackler/react-native-sdk";

// 회원가입 후 로그인하면 해당 계정의 SDK KEY를 받을 수 있다.
const hackleClient = createInstance("YOUR_APP_SDK_KEY");

// 1. SDK에서 관리하는 식별자 사용 - 파라미터에 사용자 식별자 전달하지 않음
<HackleProvider hackleClient={hackleClient}>
  <YourApp />
</HackleProvider>

// 2. 직접 관리하는 사용자 식별자 사용 - 파라미터에 사용자 식별자 전달
const user = { 
  id: "ae2182e0", // 유니크한 값을 사용한다.
  isNewUser: moment(user?.signupAt).isAfter(
  	new Date(2023, 0, 1),
  ), //2023-01-01 이후 가입한 유저 
}

<HackleProvider hackleClient={hackleClient} user={userInfo}>
    <HackleExperiment experimentKey={1}> // 핵클에서 새로운 실험군을 생성하면 자동으로 생성되는 실험 키를 입력
    {variation => {
      switch (
        variation // 할당받은 그룹에 대한 로직
      ) {
        case 'A':
          return (
            <AwesomeFeatureA />
          );
        case 'B':
          return (
            <AwesomeFeatureB />
          );
        case 'C':
          return (
            <AwesomeFeatureC />
          );
      }
    }}
    </HackleExperiment>
</HackleProvider>

 

위 코드처럼 정말 간단하게 설정해서 A/B테스트를 진행할 수 있다.

 

실제로 적용하면서 겪었던 이슈

1. A 테스트와 B 테스트를 나눠서 테스트를 진행하고 싶은데 자꾸 조건에 충족하지 않은 기존 유저들이 자동으로 A군으로 적용되는 문제가 있어서 공식문서를 자세하게 읽어보니 조건에 맞지 않은 기존 유저들은 자동으로 A군으로 속한다고 나와 있었다.

핵클 자체가 기존환경(A)과 테스트할 환경(B) 이렇게 2개를 나눠서 테스트하는 것 같았다.

따라서 새로운 2가지 테스트 환경을 적용하려면 기존 환경 (A) 테스트 1 환경 (B) 테스트 2 환경 (C) 이렇게 3개의 실험군으로 나눠서 적용을 해야 한다.!!!

 

기회만 된다면 핵클의 다양한 기능들을 더 많이 사용해 보고 싶다!

반응형