본문 바로가기

iOS

[iOS / Firebase] FireBase Remote config과 A/B Test (1편 - 개념 알아보기)

FireBase Remote Config이란?

Firebase Remote Config은 앱 업데이트 없이 Cloud에 저장된 정보를 통해 앱의 동작과 모양을 변경할 수 있는 서비스이다.
일반적으로 iOS 앱을 업데이트하고, 새로운 버전이 유저에게 반영되기까지 24~48시간 정도가 소요된다. 이는 즉각적인 공지사항이나 업데이트가 필요할 때 치명적으로 작용할 수 있고, 유저의 요청사항이 발생했을 때 빠른 대응이 불가능하게 만든다. 따라서 이러한 점을 보완하기 위해서 Firebase Remote Config을 이용하여 실시간 공지사항을 띄우거나 변경사항을 반영할 수 있다.
Firebase Remote Config는 기본적으로 클라우드 기반 key-value 저장소이다. 여러 parameter를 설정해 놓은 다음 해당 key의 value를 변경하면 client가 Cloud에 접속할 때 변경된 value를 불러와서 바뀐 값을 기반으로 앱에 변화를 줄 수 있다.

FireBase Remote Config의 활용

  • 실시간 공지 팝업
  • 앱 내 이벤트 메시지 띄우기
  • 버튼 색상이나 크기와 같은 간단한 변화
  • A/B Testing을 추가하여 사용자별로 다른 기능 제공

Remote Config Fetch 전략

Remote Config는 FireBase에 저장된 값을 Fetching해오기 때문에 이를 적용하는 데에 시간이 소요된다. 따라서 딜레이 없이 자연스럽게 Fetching을 하기 위한 방법들이 존재한다.

  • 앱을 처음 시작할 때 활성화 : 앱을 시작할 때마다 FireBase Remote Config을 Fetching해 온다.
  • 로딩 화면 뒤에서 활성화 : UI의 변경이 있는 Config의 경우에는 로딩 화면을 띄워놓고 Fetching을 한다.
  • 다음 시작 시에 새 값 불러오기 : 이전에 불러온 값은 저장해두고 앱을 시작할 때 활성화한다. 앱을 사용하는 동안 다음 시작에 적용할 값을 불러온다.

A/B Test란?

정의 : 마케팅 또는 웹 분석 관련 용어로, 버킷 테스트 또는 분할-실행 테스트 라고도 한다. A/B Test라는 이름에서 알 수 있듯이, A/B Test는 A와 B로 나뉘는 두 개의 버전을 비교하는 대조 실험이다.

A/B Test의 효용

A/B Test는 모바일 앱에서 engagementretention 또는 monetization과 같은 핵심 목표를 이룰 수 있도록 최적화된 데이터를 제공하는 도구 중 하나이다. 기획자 및 개발자는 유저의 대조 데이터를 이용해서 다음 업데이트 및 변화에 대한 기본적인 틀을 세울 수 있게 된다. 한정된 시간과 비용을 가진 Business Group에서 최소한의 투자로 목표를 이루기 위해서 이와 같은 작업이 요구될 수밖에 없다.

  • 제품 환경을 테스트하고 빠른 피드백을 얻을 수 있다.
  • 전환률을 올리기 위한 데이터를 쌓을 수 있다.
  • 새로운 기능을 도입할 때 어떤 방식이 적합한지에 대한 데이터를 얻을 수 있다.
  • 특정 사용자층을 대상으로 테스트를 진행하여, 사용자 그룹의 경향성을 파악할 수 있다.

A/B Test의 대상

  • Visual Elements : 사진과 비디오, 색깔과 같은 시각적 요소
  • Text : 제목이나 컨텐츠, 설명의 변경
  • Layout : 요소들의 크기나 위치와 같은 레이아웃
  • Onboarding : 온보딩이 유의미하게 engagement를 하는지
  • User flow : 어떤 플로우가 더 좋은 전환률을 보이는지
  • New features and release : 최신 버전 또는 새로운 기능에 대해 실험

방법

iOS에서 A/B 테스트를 하기 위한 보편적이고 쉬운 방법으로 FireBase Remote Config을 이용할 수 있다. Remote Config은 클라우드 기반 key-value 저장소로 개발자가 시스템만 구축해 놓는다면, 비개발자도 손쉽게 value를 변경하여 테스트를 진행할 수 있도록 도와준다. 예를 들어서, FireBase Remote Config에 isHidden이라는 parameter를 저장해놓고, client에서는 여기에 접근하여 isHidden 값이 true인지 false인지에 따라 특정 Alert 창을 띄울지 말지에 대한 결정을 할 수 있다. 추후 Console에서 isHidden 값만 바꾸는 식으로 클라이언트에서 다른 화면을 보일 수 있는 것이다. 여기에 더하여 FireBase에서는 A/B Testing이라는 기능을 따로 제공하기 때문에 메뉴얼에 따라 편리하게 테스트를 구성하고, 앱에 적용할 수 있다.

다른 방법으로는 Client 자체적으로 Split Testing 환경을 구축하여 analytics SDK(google analytics, amplitude)를 이용하여 분석해줄 수도 있다. 우선 Random 메서드나 원하는 로직을 통해 특정 유저에게 Group을 부여하고, Persistent Storage(UserDefaults, Relam, CoreData)에 해당 Group을 저장한 다음, Split Testing 환경에서 해당 유저의 활동 data를 Analytics SDK에 전송하면 된다. FireBase Remote Config에서는 Target을 Console에서 지정해 줬다면, 이 방법은 application 내부적으로 그룹을 지정해주고 있다는 점이 다르다.

레퍼런스

공식 페이지
프로젝트에 Remote Config 적용하기
위키
iOS A/B testing
Split Testing with Swift