배포와 인프라7 분 읽기

설치의 절반이 로그인 화면에서 사라졌고, 서버는 이미 익명 접근을 허용하고 있었습니다

앱을 켠 468대 중 164대만 걷기를 시작했습니다. 최대 이탈 구간은 로그인이었고, 취소 이벤트가 설치당 여섯 번씩 찍혀 있었습니다.

#reality-check#analytics#android#ios
개념 도식: first_open 468 에서 walk_started 164 로 줄어드는 퍼널과 그 사이의 로그인 관문
글 내용을 요약한 개념 도식.

GPS로 걸어서 땅을 차지하는 앱이 있습니다. 플릿에서 유일하게 리텐션이 있는 앱입니다. 처음 걷기 시작한 사람 기준으로 성숙 코호트 65명 중 10명(15.4%)이 한 달 뒤에도 걷고 있습니다.

그런데 거기까지 가는 사람이 너무 적었습니다. 설치 기준 퍼널을 뽑아봤습니다.

first_open            468
auth_shown            333    <- 135 이탈
auth_method_tapped    297
auth_succeeded        193    <- 104 이탈
walk_started          164
walk_ended            118
territory_claimed      83

당신의 앱에서 가치를 경험하기 전에 요구하는 것이 무엇입니까?

취소가 설치당 여섯 번

auth_failed 이벤트의 사유를 갈라봤습니다.

  • cancelled 360건 / 59대 — 설치당 평균 6회
  • Apple AuthorizationError#1000 144건 / 23대 — 같은 성격
  • Google timeout 17 · gave_up_waiting 11 · abandoned_process 8 — 이쪽은 기술적 실패

한 번 망설이고 만 게 아닙니다. 로그인 창을 열었다 닫기를 여섯 번 반복하다 나갔습니다.

플랫폼 격차도 전부 이 구간에서 생깁니다.

설치 기준 Android iOS
first_open 288 180
인증 성공 112 (51%) 81 (71%)
walk_started 77 (27%) 87 (48%)

안드로이드가 iOS의 절반입니다. 주력 로그인 수단이 다르고(안드로이드는 탭 630회 중 대부분이 한 방식), 그쪽에 타임아웃 계열 실패가 붙어 있습니다.

걷기에 도달한 사람은 멀쩡했습니다

걷기를 시작한 사람의 72%가 끝까지 걷습니다. 그리고 앞서 말한 대로 15%가 한 달 뒤에도 남습니다.

제품이 문제가 아니라 문 앞에서 막히는 겁니다.

서버를 확인하고 놀랐습니다

로그인을 뒤로 미루려면 지도를 계정 없이 그릴 수 있어야 합니다. 그게 안 되면 큰 공사입니다.

RLS 정책을 조회했습니다.

territories  SELECT  {anon, authenticated}
users        SELECT  {anon, authenticated}

이미 열려 있었습니다. 지도 조회 함수도 익명 실행이 허용돼 있었습니다. 익명 키로 직접 호출해보니 폴리곤·이름·색·국가가 세션 없이 전부 내려왔습니다.

서버는 한 줄도 고칠 필요가 없었습니다. 관문은 클라이언트 루트 분기 한 곳에만 있었습니다.

여기서 선택이 갈립니다

계정 없이 쓰게 하는 방법은 둘입니다.

하나는 익명 로그인입니다. 매끄럽고, 나중에 실제 계정으로 승격시킬 수도 있습니다.

다른 하나는 로컬에 보관했다가 로그인 시점에 넘기는 것입니다. 손이 더 갑니다.

당신이라면 어느 쪽입니까?

저는 후자를 골랐습니다. 이 프로젝트의 인증 DB는 여러 앱이 공유하는데, 가입 트리거가 모든 앱 스키마에 프로필 행을 팬아웃합니다. 익명 계정을 만들면 이미 오염된 앱별 지표가 훨씬 더 망가집니다. 매끄러움보다 측정 가능성을 택했습니다.

바꾼 것

  • 루트 분기에서 로그아웃 상태도 지도로 보냅니다. 로그아웃 시 로그인 화면으로 튕기던 옵저버도 뗐습니다 — 두면 없앤 벽이 다시 생깁니다.
  • 걷는 중인 경로는 고정 sentinel 소유로 디스크에 남깁니다.
  • 영역을 저장하려는 순간에만 로그인을 요구합니다. 이때 진행 단계를 건드리지 않고 돌아가므로, 로그인 후 같은 함수를 다시 부르면 걸어둔 경로가 그대로 이어집니다.
  • 로그인이 확정되면 sentinel 소유 기록을 그 계정으로 넘깁니다.

순서가 뒤집혔습니다. 걸어서 영역이 눈앞에 그려진 뒤에 계정을 묻습니다.

자가진단

  • 신규 사용자가 첫 가치를 경험하기 전에 통과해야 하는 관문이 몇 개입니까?
  • 그 관문의 이탈률을 설치 기준으로 세어 본 적이 있습니까? 사용자 기준이 아니라 설치 기준입니다.
  • 관문을 없애려면 서버를 고쳐야 한다고 가정하고 있지는 않습니까? 정책을 직접 조회해 봤습니까?

솔직한 부분

효과는 아직 모릅니다. 방금 심사에 올렸고, 판정 지표는 first_open → walk_started 비율입니다. 기준선은 안드로이드 27% · iOS 48%이고 28일 뒤에 다시 잽니다.

그리고 안드로이드의 타임아웃 계열 실패는 그대로 남아 있습니다. 그 문을 지나는 사람이 줄어드니 영향만 작아질 뿐입니다.

당신 앱의 인증 실패 이벤트에서 설치당 시도 횟수를 세어보세요. 1에 가깝다면 사람들이 결정을 내린 것이고, 6이라면 뭔가 붙잡고 있는 겁니다.

관련 글