brunch

You can make anything
by writing

C.S.Lewis

by 더오픈프로덕트 Apr 09. 2024

듀오 링고가 성장하기 위한 고민 3단계-데이터모델 활용

듀오링고가 350% 성장한 비하인드 스토리(3/3)

어느 날 해외 아티클 뉴스레터를 보던 중 영어공부할 때 자주 사용했던 듀오링고 서비스의 CPO인 jorge Mazal 님이 성장 가속화를 위해 어떠한 노력들을 했는지 상세하게 소개해주는 인터뷰 글이 있어 해당내용을 소개해보려 합니다.  jorge Mazal님의 인터뷰에서 말한 것처럼 이 게시글을 공유되고 성장의 돌파구를 찾는 사람들에게 도움이 되었으면 합니다.


원문은 How Duolingo reignited user growth에서 확인이 가능합니다



3단계: 데이터와 모델 활용

Duolingo는 특히 A/B 테스트 지원 부분에서 데이터 수집에 항상 뛰어났습니다. 하지만 이 데이터를 활용하여 통찰력을 창출하는 데는 많은 노력을 기울이지 않았습니다. Zynga와 MyFitnessPal이 데이터를 어떻게 사용하는지 내부에서 직접 경험한 저는 Duolingo의 데이터를 활용하여 North Star 지표를 찾고 필요한 돌파구를 마련할 수 있다고 생각했습니다

Zynga와 MyFitnessPal에서 근무한 경험 덕분에 사용자 참여 수준에 따라 세분화하고 모델링하는 방법에 대한 영감을 얻을 수 있었습니다. Zynga는 다음과 같은 주간 유지율 지표를 기반으로 사용자를 구분하고 유지율을 측정했습니다.

* MyFitnessPal - 양부터 피트니스, 체중 감량, 수분 섭취 목표에 이르기까지 진행 상황을 추적해 주는 서비스 회사

* Zynga  - 징가는 미국의 소셜 네트워크 게임 개발 업체


     현재 사용자 유지율 (CURR, Current users retention rate): 지난 2주 연속 제품을 사용한 사용자가 이번 주에도 다시 돌아올 가능성 (기존 사용자의 지속적인 사용을 측정하는 지표를 뜻합니다.)

     신규 사용자 유지율 (NURR, New users retention rate): 지난주에 처음 제품을 사용한 사용자가 이번 주에도 다시 돌아올 가능성 (신규 사용자의 서비스 유착도를 측정하는 지표를 뜻합니다.)

     재활성화 사용자 유지율 (RURR, Reactivated user retention rates): 지난주에 다시 활성화된 사용자가 이번 주에도 다시 돌아올 가능성 (다시 돌아온 사용자의 지속적인 사용 가능성을 측정하는 지표를 뜻합니다.)

MyFitnessPal은 CURR, NURR, RURR과 같은 지표를 성장 측정뿐만 아니라 미래 시나리오 모델링에도 활용했습니다. 또한 이러한 지표 외에도 사용자 수익 반환율 (SURR)을 추가로 사용했습니다.

* SURR (Resurrected user retention rate)을 활용하는 이유
 오랜 기간 서비스를 이용하지 않다가 돌아온 사용자는 유망한 고객일 수 있습니다. 이러한 사용자들이 서비스를 지속적으로 이용하도록 유도하는 것은 성장 전략에 중요합니다. SURR은 이러한 사용자 유형의 행동을 예측하고 적절한 재 참여 전략을 수립하는 데 도움이 됩니다


저는 이러한 지표들을 시작점으로 하여 Duolingo에서 더욱 정교한 모델을 만들 수 있을 것이라고 가설했습니다. 그리고 이 모델을 활용하여 북긍성 지표를 식별할 수 있을 것이라고 생각했습니다.

Acquisition Team의 데이터 과학자 및 엔지니어 관리자와 함께 작업하여 아래와 같은 모델을 만들었습니다. Zynga와 MyFitnessPal과 동일한 유지율 지표를 사용했지만, 주 단위 보기에서 일 단위 보기로 조정했고 몇 가지 추가 지표를 더했습니다.


유저 블록 또는 유저 버킷은 서로 다른 참여 수준을 가진 사용자 세그먼트를 나타냅니다. 그리고 제품을 사용해 본 모든 사용자는 특정 날짜에 하나의 버킷에만 속합니다. 즉, 이 모델의 버킷은 전체 Duolingo 사용자 기반을 나타내는 데 있어 MECE (상호 배타적, 철저하게 집합적으로) 원칙을 따릅니다. 화살표는 버킷 간의 사용자 이동을 측정합니다 (여기에는 CURR, NURR, RURR, SURR이 포함되지만 주 단위 유지율이 아닌 일 단위 유지율로 변환되었습니다). 버킷과 화살표를 결합하여 이 모델은 거의 닫힌 회로 시스템을 만듭니다. 이 시스템에서 유일한 외부적인 변수는 신규 사용자입니다.

* 블록 (blocks) 또는 버킷 (buckets): 사용자 참여 수준에 따라 분류된 사용자 집단을 의미

* MECE (mutually exclusive, collectively exhaustive): 이 모델에서 모든 사용자는 한 가지 버킷에만 속하며 전체 사용자 집단을 철저하게 집합적으로 나타낸다는 것을 의미


편리하게도 모델의 상위 4개 버킷을 합치하면 DAU (일간 활동 사용자)가 됩니다. 이 버킷들은 다음과 같이 정의됩니다.   

신규 사용자 (New users): 앱에 처음 가입한 사용자 

현재 사용자 (Current users): 오늘을 포함하여 최근 7일 동안 적어도 두 번 이상 앱을 이용한 사용자

재활성화 사용자 (Reactivated users): 7일~29일 동안 앱을 이용하지 않다가 다시 활동을 시작한 사용자

부활 사용자 (Resurrected users): 30일 이상 앱을 이용하지 않다가 다시 활동을 시작한 사용자


남은 세 개의 버킷은 오늘 활동하지 않은 사용자를 나타내며 비활동 상태의 정도가 각각 다릅니다.


At-risk WAU (WAU):

오늘은 활동하지 않지만, 지난 6일 중 적어도 하루는 활동한 사용자입니다.

At-risk WAU + DAU = WAU

At-risk MAU (MAU):

지난 7일 동안은 활동하지 않지만, 지난 23일 중 적어도 하루는 활동한 사용자입니다.

At-risk MAU + WAU = MAU

Dormant users(휴면 사용자):

지난 31일 이상 활동하지 않은 사용자입니다.

MAU + dormant users = Total user base


이 버킷들로부터 DAU, WAU, MAU를 쉽게 계산할 수 있다는 사실은 이 지표들을 시간에 따라 쉽게 모델링할 수 있게 해 주었습니다. 이는 이 모델의 핵심적인 특징입니다. 또한 화살표로 표시되는 비율을 조작하여 이러한 비율의 변화가 시간에 따라 어떻게 복합적으로 누적적인 영향을 미치는지 모델링할 수 있습니다. 즉, 이러한 비율은 제품 팀이 DAU를 늘리기 위해 조절할 수 있는 지렛대 역할을 합니다.


모델을 만들고 나서, 우리는 매일 데이터 스냅샷을 촬영하여 지난 몇 년 동안 모든 사용자 버킷과 유지율이 매일 어떻게 변화했는지 기록했습니다. 이 데이터를 사용하여 예측 모델을 만들고 민감도 분석을 수행하여 DAU 증가에 가장 큰 영향을 미치는 요소(레버)를 예측할 수 있었습니다.

우리는 각 비율에 대한 시뮬레이션을 실행했습니다. 이 시뮬레이션에서는 3년 동안 모든 다른 비율은 유지한 채 특정 비율 하나를 매 분기 2%씩 늘려가며 그 영향을 분석했습니다.

아래는 첫 번째 시뮬레이션 결과입니다. 이는 레버 각각에 대한 2%라는 작은 변화가 예측되는 MAU(월간 활동 사용자) 및 DAU(일간 활동 사용자)에 어떤 영향을 미치는지 보여줍니다


우리는 즉시 CURR (현재 사용자 유지율)이 DAU에 가장 큰 영향을 미친다는 것을 알게 되었습니다. 이 영향력은 두 번째로 영향력이 큰 지표의 5배에 달했습니다. 지금 돌아보면, 현재 사용자 버킷은 흥미로운 특징을 가지고 있기 때문에 CURR 결과는 당연합니다. 활동을 유지하는 현재 사용자는 다시 같은 버킷으로 돌아옵니다.


이러한 반복적인 특성은 복합적인 효과를 만들어냅니다. 즉, CURR을 움직이는 것은 훨씬 더 어렵지만, 그렇게 된다면 더 큰 영향을 미칠 수 있다는 의미입니다. 이 분석을 통해 우리는 원하는 전략적 돌파구를 마련하기 위해서는 반드시 CURR을 움직여야 한다는 것을 알게 되었습니다. 따라서 우리는  CURR을 북극성 지표로 설정하고 이를 향상시키는 데 전념하는 새로운 팀, Retention Team을 만들기로 결정했습니다.


CURR에 집중하는 가장 큰 이점 중 하나는 이전에 매우 중요하다고 생각했던 것들, 특히 신규 사용자 유지율에 대한 작업을 하지 않기로 결정한 것입니다. 수년 동안 주로 신규 사용자 획득 실험에 집중하여 엄청난 성공을 거둔 기업에게는 이는 사고방식의 획기적인 전환일 것입니다.


리더보드 벡터(Leaderboards Vector)

앞서 설명한 내용을 바탕으로 우리는 과거 몇 년간의 모델 데이터와 A/B 테스트 결과를 살펴보았습니다. 과거에 우연히 CURR을 움직인 어떤 작업을 했는지 확인하기 위해서였습니다. 놀랍게도, 그런 일은 없었습니다. 사실, CURR은 몇 년 동안 변동이 없었습니다. 우리는 기본 원칙에 따라 처음으로 CURR을 움직이기 위한 단계를 계획해야 했습니다.


저는 여전히 사용자 유지율을 개선하기 위해 게임화가 좋은 출발점이라고 생각했습니다. 가든스케이프 스타일의 이동 횟수 표시기 실패는 우리가 Duolingo에 게임화를 적용하는 데 여전히 이점이 있다고 믿었던 원래 이유를 반증하지 못했습니다. 다만 이동 횟수 표시기는 게임화를 서투게 시도한 것이라는 점을 알게 되었습니다. 이번에는 추가하거나 차용하는 기능에 대해 좀 더 체계적이고 지능적으로 접근할 것입니다. 이전 게임화 시도에서 얻은 경험을 반드시 적용하기로 했습니다.


몇 가지 검토 후 우리는 리더보드에 베팅하기로 결정했습니다. 이유와 방법은 다음과 같습니다. Duolingo는 이미 사용자가 친구 및 가족과 경쟁할 수 있는 리더보드를 보유하고 있었지만, 특별히 효과적이지는 않았습니다. 저는 Zynga에서의 경험을 바탕으로 더 나은 방법이 있다고 생각했습니다. 제가 Zynga의 FarmVille 2 게임을 작업하기 시작했을 때, 이 게임에는 Duolingo의 기존 리더보드와 유사한 리더보드가 포함되어 사용자가 친구와 경쟁했습니다. 저는 플레이어로서의 개인적인 경험을 바탕으로 경쟁 상대의 참여 수준이 개인적인 관계의 친밀감보다 더 중요하다고 가설을 세웠습니다. 특히 많은 사용자의 친구가 더 이상 활동하지 않는 성숙한 제품에서 더욱 그렇다고 생각했습니다. Zynga에서의 테스트 결과 그 아이디어는 사실임이 입증되었습니다. 이를 바탕으로 저는 제가 Zynga에서 디자인하는 데 도움을 준 것과 유사한 리더보드 시스템이 우리 제품에서도 성공할 것이라고 생각했습니다.

* FarmVille 2 :  Zynga 게임의 속편으로 농장 관리를 책임지고 있는 농부가 자원을 생산하고 거래하여 농장을 발전시키는 게임입니다.


FarmVille 2의 리더보드는 또한 "리그" 시스템을 포함하고 있었습니다. 주간 리더보드 상위권에 도달하는 것 외에도 사용자는 청동 리그에서 은빛 리그, 금빛 리그 등 일련의 리그 레벨을 넘어설 수 있는 기회를 가졌습니다. 리그는 사용자에게 더 큰 진행감과 보상을 제공했습니다. 이는 게임 디자인에서 필수적인 요소입니다. 또한 적극적인 사용자는 매주 더 경쟁적인 리그로 올라가기 때문에 참여도를 장기적으로 증가시켰습니다. 우리는 이 기능이 Duolingo의 기존 제품에도 잘 적용될 것이라고 생각했습니다. 왜냐하면 이는 경쟁과 진행이라는 공통적인 인간 동기 부여 요인을 직접 활용하기 때문입니다.

사용자는 지난주 참여 수준이 비슷한 다른 사용자들과 매칭됩니다. 이번 주 말 최고 순위 플레이어들은 다음 주에 더 높은 리그로 올라갑니다.

하지만 FarmVille 2의 리더보드 시스템의 모든 측면이 Duolingo에 그대로 적용되지는 않았습니다. 우리는 게임 메커니즘을 Duolingo의 맥락에 맞게 조정하기 위해 판단력을 사용해야 했습니다. FarmVille 2에서 리더보드에서 경쟁하기 위해서는 핵심 게임 플레이 외에도 추가적인 종류의 작업을 완료해야 했습니다. 이는 우리가 의도적으로 배제한 부분입니다. Duolingo의 경우 더 많은 작업은 언어 학습에 불필요한 복잡성만 추가할 뿐입니다. 우리는 리더보드를 가능한 캐주얼하고 간편하게 만들었습니다. 사용자는 자동으로 참여하게 되며 일정한 레벨의 일상적인 언어 학습만 지속적으로 유지함으로써 첫 번째 리그 상위권에 진출할 수 있습니다. 게임 메커니즘 자체는 흥미롭게 유지하면서도 FarmVille 2보다 더 간단하게 만들어 채택과 적응의 올바른 균형을 맞추었다고 생각했습니다.


리더보드 기능은 지표에 엄청나고 거의 즉각적인 영향을 미쳤습니다. 전체 학습 시간은 17% 증가했고, 하루 1시간 이상을 주 5일 동안 지속적으로 학습하는 하이 레벨 사용자의 수는 세 배 증가했습니다. 당시 우리는 아직 CURR의 통계적 유의성을 계산하는 방법을 파악하지 못했지만, D1, D7 등 기존 유지율 지표가 실질적으로 그리고 통계적으로 유의미하게 향상되었음을 확인했습니다. 앞으로 리더보드 기능은 지표를 개선하는 벡터가 되었으며, 팀은 오늘날까지도 이 기능을 최적화하기 위해 노력하고 있습니다. 또한 중요한 것은 리더보드가 유지율 팀의 첫 번째 돌파구였다는 점입니다.


푸시 알림 활용 벡터(Push notifications vector)

Retention Team은 현재 사용자를 매일 참여시키고 학습하도록 동기를 부여하는 더 많은 메커니즘을 찾기 위해 완전히 활력을 띄었습니다. 팀이 조사하기 시작한 한 영역은 푸시 알림이었습니다. 지난 몇 년간 광범위한 A/B 테스트를 바탕으로 Duolingo는 알림이 성장을 위한 중요한 벡터가 될 수 있다는 것을 확인했지만, 그 효과는 수년에 걸쳐 정체되었습니다. 새로운 아이디어로 가득 찬 활력을 핀 팀과 함께 이 벡터를 다시 검토할 적절한 시기라고 판단했습니다.


푸시 알림 채널 활용 전략을 수립하면서 우리는 한 가지 중요한 원칙을 세웠습니다. 그것은 Groupon CEO의 경험담에서 얻은 교훈에서 비롯된 것입니다. 그는 우리 CEO 루이스 본 안에게 오랫동안 Groupon은 하루에 하나의 이메일 알림만을 고집했다고 설명했습니다. 하지만 팀은 더 많은 이메일을 보내면 지표가 향상될지 의문을 갖게 되었습니다. 결국 CEO는 팀이 테스트를 진행하여 각 사용자에게 매일 한 개 더 많은 이메일을 보내는 것을 허가했습니다. 이 테스트는 목표 지표를 크게 향상시키는 결과를 가져왔습니다. 이에 힘입어 Groupon은 계속해서 실험을 진행하여 하루에 최대 5개까지 이메일을 보냈습니다. 하지만 하루아침에 모든 것이 바뀌어버린 것처럼 이메일 채널의 효과는 대부분 사라졌습니다. 시간이 지남에 따라 Groupon의 공격적인 이메일 A/B 테스트 누적은 사실상 채널을 파괴했습니다. 이메일과 푸시 알림을 지나치게 공격적으로 A/B 테스트하는 데에는 종종 간과되는 위험이 있습니다. 사용자가 채널 수신을 거부하게 되는 것이죠. 테스트를 종료하더라도 이러한 사용자는 영구적으로 수신을 거부하게 설정합니다. 이를 여러 번 반복하면 채널이 완전히 파괴됩니다. 우리는 이러한 결과를 피해야 했습니다. 따라서 푸시 알림에 대한 기본적인 규칙 하나를 세웠습니다. 바로 채널을 보호한다는 것입니다.


이러한 제약 조건을 염두에 두고 우리는 팀에게 노출 시간, 템플릿, 이미지, 복사, 지역화 등과 같은 요소를 최적화하는 데 많은 자유를 주었지만, CEO의 강력한 정당화와 승인 없이는 알림 수를 늘릴 수 없도록 했습니다. 오랜 시간에 걸쳐 수많은 반복, A/B 테스트 및 밴딧 알고리즘을 통해 팀은 수년간 DAU를 지속적으로 상당히 증가시키는 데 기여하는 수십 개의 작고 중간 규모의 성과를 창출할 수 있었습니다.

연속 참여 벡터 (The streak vector)

Retention Team의 APM (Associate Product Manager)은 더 많은 성장 벡터를 찾기 위해 유지율과 특정 Duolingo 기능 사용 간에 강력한 상관관계가 있는지 탐색하기 시작했습니다. 그는 사용자가 10일 스트리크에 도달하면 이탈 가능성이 크게 감소한다는 사실을 발견했습니다. 물론 이는 단순한 상관관계와 선택 편향에 의한 것이었지만, 우리는 이 통찰력이 다시 한번 이 기능을 개선하는 데 투자할 만큼 흥미롭다고 판단했습니다.

Streak : 듀오링고에서 제공하는 수업 참여 연속일 수를 나타내는 기능을 의미


우리는 스트리크 유지 알림(streak-saver notification)을 통해 처음으로 큰 성과를 거두었습니다. 이 알림은 스트리크가 있는 사용자에게 스트리크가 끊길 위험이 있다는 것을 알려주는 알림입니다. 이 늦은 밤 알림은 실제로 스트리크 최적화에 더 많은 노력을 쏟는 것이 상당한 이점이 있음을 증명했습니다. 이후에는 달력 보기, 애니메이션, 스트리크 일시 정지 변경, 스트리크 보상 등 몇 가지 개선 사항이 더 이어졌습니다. 이러한 개선 사항은 각각 원래 스트리크 아이디어를 개선하는 데 도움이 되었으며 사용자 유지율을 크게 향상시켰습니다.


스트리크  시스템은 여러 가지 이유로 효과적입니다. 그 이유 중 하나는 스트리크가 사용자의 동기를 시간이 지남에 따라 증가시킨다는 점입니다. 스트리크가 길수록 스트리크를 유지하려는 동기가 커집니다. 사용자 유지율과 관련하여 이것이 바로 우리가 사용자에게 원하는 정확한 행동입니다. 학습자가 Duolingo에 오는 매일, 다음 날 다시 오는 것이 전날보다 조금 더 중요하게 여기게 되어 사용자 유지율과 DAU가 증가합니다. 더 큰 의미에서, 스트리크 시스템의 성공은 기존 기능에서도 큰 성과를 끌어낼 수 있다는 것을 다시 한번 보여주었습니다. 우리는 획기적인 발전과 빠른 최적화 모두의 가치를 인식할 수 있었습니다. 그리고 A+ 팀은 종종 이 두 가지를 모두 갖추고 있습니다.


현재 사용자 유지율(CURR) 이상의 성장


우리는 현재 사용자 유지율(CURR) 향상에만 집중하지 않았습니다. 언젠가는 CURR이 한계에 도달할 것이라는 건강한 의심이 있었기 때문에 조만간 새로운 사용자 유입을 위한 성장 전략(벡터)을 찾아야 했습니다. 유지율 팀은 계속해서 현재 사용자 유지율을 높이는 데 집중했지만, 회사 전체적으로는 지속적으로 새로운 벡터를 발견하기 위해 제품 및 마케팅 팀을 더 많이 만들어 성장에 대한 투자를 늘려왔습니다. 다행히 해외 시장 진출, 소셜 기능 구축 (궁극적으로 유입 팀이 큰 성공을 거두면서 중점을 옮긴 분야입니다), 과정 콘텐츠 제작 가속화, 인플루언서 활용, 학교 내 리치 증대, 유료 사용자 유입 (UA) 투자, 틱톡에서의 바이럴 현상 유발 등 여러 시도가 효과적이었습니다. 이러한 성공적인 사례들은 모두 별도의 심층 분석을 통해 검토해 볼 가치가 있습니다.


전체 결과

4년에 걸친 노력을 통해 우리는 현재 사용자 유지율(CURR)을 21% 증가시켰습니다. 이는 최고 우수 사용자들의 일별 이탈률을 40% 이상 감소시킨 것이며, 다른 성공적인 전략들과 함께 일 사용자 수(DAU)를 4.5배 늘리는 데 기여했습니다. 작년은 Duolingo 역사상 가장 빠른 성장률을 보인 해 중 하나였습니다.

사용자 기반의 질 또한 향상되었습니다. 7일 이상 연속으로 Duolingo를 사용하는 일 사용자 비율은 거의 3배 증가하여 전체 일 사용자의 절반 이상을 차지하게 되었습니다. 이는 단순히 Duolingo의 활성 사용자 수가 많아졌을 뿐만 아니라, 사용자들이 지속적으로 앱을 사용하고 친구들에게도 Duolingo를 추천하며, 유료 서비스인 슈퍼 Duolingo를 구독할 가능성이 더 높아졌음을 의미합니다. 이러한 성장은 Duolingo의 성공적인 IPO에 중요한 역할을 했습니다.


마지막으로

이 글이 여러분의 제품 성장을 위한 새로운 벡터를 찾는 데에 영감을 줄 수 있기를 바랍니다. 제가 Duolingo에서 경험한 내용 중 무언가를 도입한다면, 반드시 여러분의 상황에 맞게 최선의 판단을 바탕으로 적용해 보세요. Duolingo나 다른 회사의 사례를 맹목적으로 믿지 마십시오. 저에게도 그런 식으로 하기는 효과가 없었습니다. 즐거운 실험을 하세요!




이전글 보러 가기

https://brunch.co.kr/@2c265fc170b74b6/35


원문 보러 가기

https://www.lennysnewsletter.com/p/how-duolingo-reignited-user-growth



작가의 이전글 듀오 링고가 성장하기 위한 고민 2단계-추천 프로그램
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari