

그로스팀에는 검증하고 싶은 아이디어가 쌓여 있지만, 개발 일정 때문에 실험을 좀처럼 시작하지 못할 때가 있어요. 이럴 때 개발팀이 더 빨리 움직이거나 마케팅팀이 더 좋은 전략을 세워야 한다고 생각하기 쉽죠.
하지만 구독 앱의 성장을 가로막는 병목은 팀의 역량보다 결제 상태를 해석하고 실험을 배포하며 여러 플랫폼의 구독 권한을 연결해야 하는 엔지니어링 구조에 있을 수 있어요.
레비뉴캣(RevenueCat)은 App Store·Google Play·Stripe에 흩어진 구독 상태와 영수증, 매출을 하나의 기준으로 관리하도록 돕는 구독 인프라 플랫폼이에요. 레비뉴캣 시니어 데브렐 엔지니어 엄재웅 님의 설명과 약 12만 개 앱을 분석한 〈State of Subscription Apps 2026〉을 바탕으로, 대시보드만으로는 잘 드러나지 않는 성장 병목 3가지를 살펴볼게요.

📌핵심 포인트
구독 앱 시장의 공급은 빠르게 늘고 있어요. 레비뉴캣의 〈State of Subscription Apps 2026〉에 따르면 매달 출시되는 신규 구독 앱은 3년 사이 약 2,000개에서 약 1만 5,000개로 7배 늘었어요.
하지만 모든 앱이 이러한 성장의 혜택을 누린 것은 아니에요. 상위 25% 앱의 매출은 80% 늘었지만 하위 25%는 33% 줄었고, 상위 10%는 306% 성장했어요. 2020년 이전에 출시된 앱이 전체 구독 매출의 70%를 차지하는 반면, 2025년 이후 출시된 앱의 비중은 3%에 그쳤고요.

AI가 앱을 만드는 비용을 낮췄다고 해서 안정적인 구독 비즈니스를 운영하는 비용까지 사라진 것은 아니에요. 아이디어를 빠르게 검증하고 결제 실패를 복구하며 어느 기기에서든 같은 구독 권한을 제공하려면 이를 뒷받침하는 시스템이 필요해요. 앱 사이의 성과 격차는 새로운 그로스 전략의 유무보다 그 전략을 민첩하고 신뢰성 있게 실행할 수 있는 기반에서 벌어질 수 있어요.
이 관점으로 대시보드의 숫자를 다시 보면 마케팅이나 제품의 문제로만 보였던 현상에서 다른 원인이 드러나요. 대표적인 사례가 사용자의 선택처럼 보이지만 실제로는 결제 실패에서 비롯된 구독 해지예요.
구독 대시보드는 떠난 사용자 수를 보여주지만 사용자가 왜 떠났는지까지 충분히 설명하지 못해요. 그래서 이탈이 늘면 제품 가치와 가격, 리텐션 캠페인을 먼저 점검하게 되죠. 하지만 사용자가 구독을 끊은 것이 아니라 카드 만료나 결제 거절로 갱신에 실패했다면 마케팅 메시지만으로는 문제를 해결할 수 없어요.
〈State of Subscription Apps 2026〉을 보면 Google Play 구독 취소의 32.2%, App Store 취소의 15.2%가 결제 오류로 발생했어요. 안드로이드에서는 구독 취소 3건 중 약 1건이 사용자의 의사와 무관한 비자발적 이탈인 셈이에요.

사용자에게 이탈 이유를 물어도 기술 문제라고 답한 비율은 3~7%에 그쳤어요. 결제 수단에 문제가 생겼다는 사실을 사용자도 모르는 경우가 많기 때문이에요. 대시보드에는 이탈로만 기록되고 설문에서는 제품이나 가격 문제처럼 보이면서, 실제 원인이 결제 인프라에 있다는 사실이 가려져요. 엄재웅 님이 이를 ‘보이지 않는 기술 세금’이라고 부르는 이유예요.
실제 결제와 재시도는 Apple·Google 같은 스토어와 Stripe 같은 결제 플랫폼이 관리해요. 앱은 플랫폼마다 다른 알림을 받아 결제 실패와 자발적 해지를 구분하고, 재시도 기간의 구독 권한까지 정확히 처리해야 해요. iOS·안드로이드·웹의 상태 모델이 서로 다르고 결제 API도 계속 바뀌기 때문에 코드 몇 줄을 고치는 것으로 끝나지 않아요.
“AI가 코드 작성 비용은 많이 낮춰 줬습니다. 하지만 실제로 돈이 오가는 결제 상태를 여러 플랫폼에서 신뢰성 있게 검증하고 다듬는 비용은 여전히 달라진 게 없습니다. 코드 작성은 저렴해졌지만, 제대로 동작하는지 리뷰하고 검증하는 것은 여전히 사람의 몫입니다.”
AI가 코드 작성 속도를 높여도 결제 인프라의 신뢰성까지 보장하지는 못해요. 여러 플랫폼의 결제 상태를 정확하게 해석하고 실제 매출과 구독 권한이 의도대로 움직이는지 검증하는 일이 새로운 병목이 되는 것이죠.
결제 실패에 대응하려면 먼저 플랫폼마다 다른 신호를 하나의 기준으로 정리해야 해요. 그래야 사용자가 직접 구독을 끊은 자발적 이탈과 결제 실패로 발생한 비자발적 이탈을 구분할 수 있어요.
탐지한 결제 실패를 복구하려면 다음 3가지 레버를 연결해야 해요.

레비뉴캣은 플랫폼별 결제 상태를 통합하고 유예 기간의 상태 변화를 감지할 수 있도록 지원해요. Customer Center를 이용하면 사용자가 구독 취소와 구매 복원 같은 작업을 앱 안에서 처리하도록 구성할 수 있어요.
이러한 복구 체계를 적용하면 월간 이탈자의 약 20%가 다시 돌아오고, 첫 갱신에서 두 번째 갱신으로 넘어갈 때 유지율도 약 30% 높아졌어요. 광고비를 더 쓰기 전에 이미 확보한 구독자가 결제 오류로 빠져나가고 있지는 않은지 확인해야 하는 이유예요.
결제 실패 대응이 이미 확보한 구독자를 지키는 문제라면, 다음 병목은 신규 사용자를 전환하기 위한 첫 세션과 반복 실험의 속도에서 생겨요.
레비뉴캣은 스토어의 결제 상태를 통합하고, 유예 기간의 상태 변화를 감지할 수 있도록 지원해요. Customer Center를 이용하면 사용자가 구독 취소·구매 복원·플랜 변경 같은 작업을 앱 안에서 처리하도록 구성할 수 있어요. 광고비를 더 쓰기 전에 이미 확보한 구독자가 결제 오류로 빠져나가고 있지는 않은지 먼저 확인해야 하는 이유죠.
결제 실패 대응이 이미 확보한 구독자를 지키는 문제라면, 다음 병목은 신규 사용자를 전환하기 위한 첫 세션과 반복 실험의 속도에서 생겨요.
구독 앱에서 첫 세션은 짧은 시간 안에 전환 여부가 갈리는 결정적인 구간이에요. 유료 전환의 절반 이상이 설치 첫날에 일어나고, 무료 체험 시작도 대부분 첫날(D0)에 몰리기 때문이에요. 며칠 뒤 개선된 메시지를 보여주려고 해도 사용자는 이미 결정을 내렸을 가능성이 커요.

문제는 온보딩 순서와 페이월 문구, 체험 기간, 오퍼 타이밍이 앱 코드와 배포 일정에 묶여 있다는 점이에요. 문구 하나를 바꾸더라도 개발·QA·스토어 심사·업데이트를 거쳐야 한다면, 웹에서 1시간이면 끝날 변경이 모바일에서는 2주짜리 일이 되죠. 5개 버전을 준비해도 실제로는 1~2개만 시험하는 일이 반복돼요.
실험 횟수가 줄었을 때 문제는 일정이 늦어지는 데서 끝나지 않아요. 어떤 제안이 어떤 고객에게 통하는지 배우는 속도까지 느려져요.
첫 세션의 성과를 가르는 것은 화면을 한 번 잘 만드는 능력보다 여러 가설을 빠르게 검증하고 다음 시도에 반영하는 학습 주기일 수 있어요.
문제는 온보딩 순서, 페이월 문구, 체험 기간, 오퍼 타이밍이 앱 코드와 배포 일정에 묶여 있다는 점이에요. 문구 하나를 바꾸더라도 개발·QA·스토어 심사·업데이트를 거쳐야 한다면, 웹에서 1시간이면 끝날 변경이 모바일에서는 2주짜리 일이 되죠. 5개 가설을 준비해도 실제로는 1~2개만 시험하는 일이 반복돼요.
실험 횟수가 줄었을 때 문제는 단지 일정이 늦어지는 데서 끝나지 않아요. 어떤 제안이 어떤 고객에게 통하는지 배우는 속도까지 느려지기 때문이에요. 첫 세션의 병목은 화면의 완성도가 아니라 조직의 학습 주기일 수 있어요.
해법은 페이월과 오퍼 같은 자주 바뀌는 요소를 앱 바이너리에서 분리하는 거예요. 서버에서 화면 구성을 내려주는 방식이라면 앱을 다시 배포하지 않고도 문구·디자인·상품 구성·체험 기간을 바꾸고 세그먼트별로 실험할 수 있어요.

RevenueCat Paywalls는 필요한 SDK를 연동하면 대시보드에서 페이월을 원격으로 구성할 수 있어요. Experiments는 가격과 체험 기간, 구독 기간, 디자인 같은 변수를 비교하도록 지원해요. 이 기능의 핵심은 앱을 매번 수정하지 않고 화면을 바꿀 수 있다는 데만 있지 않아요. 개발 티켓과 앱 심사에 묶여 있던 학습 주기를 짧게 만들 수 있다는 데 있어요.
17~32일 체험의 유료 전환율은 42.5%, 4일 이하 체험은 25.5%였어요.
다만 실험을 빠르게 반복한다고 체험 기간을 무조건 짧게 설정해야 하는 것은 아니에요. 레비뉴캣 데이터에서는 17~32일 체험의 유료 전환율이 42.5%로, 4일 이하 체험의 25.5%보다 약 1.7배 높았어요. 짧은 체험은 결과를 더 빨리 확인하게 하지만 긴 체험은 전환에 유리할 수 있어요.
시간의 기준도 함께 고려해야 해요. 당장 이긴 것처럼 보이는 페이월도 환불과 차지백을 반영하면 3~6개월 뒤 결과가 달라질 수 있어요. 따라서 실험 결과는 단기 전환율뿐 아니라 학습 속도와 장기 매출을 함께 보고 판단해야 해요.
다음 병목은 결제한 사용자가 기기와 플랫폼을 바꿀 때 구독 권한이 끊기는 데서 생겨요.
결제 중인 사용자가 스마트폰을 바꾸거나 다른 플랫폼에서 로그인했는데 다시 구독 화면을 만나는 경우가 있어요. 로그인 전에 결제한 내역이 계정에 연결되지 않거나, iPhone에서 산 구독이 웹과 안드로이드에서 인식되지 않는 문제도 생겨요. 사용자는 고객센터에 문의하거나 조용히 떠나지만, 대시보드에는 또 하나의 이탈로만 남죠.
성장한 앱일수록 이 문제를 피하기 어려워요. 레비뉴캣 리서치에 따르면 상위권 앱의 41%가 웹에서도 매출을 내는 반면, 비교적 매출이 적은 앱은 1.3%에 그쳤어요. 앱이 성장할수록 플랫폼이 늘어나고, Apple·Google·Stripe에 흩어진 구매 내역을 한 사람의 권한으로 연결해야 하기 때문이죠.

사용자에게 구독 권한을 주지 못하는 것만 문제가 아니에요. 잘못된 과금 설정으로 의도하지 않은 무료 이용 기간이 생길 수도 있어요. Google Play에서 구독 플랜을 변경할 때 사용하는 대체 모드가 대표적이에요.
예를 들어 CHARGE\FULL\PRICE는 새 플랜을 즉시 적용하고 전체 금액을 바로 청구해요. 이전 구독에 남은 가치는 조건에 따라 새 구독 기간에 이월되거나 비례 배분돼요. 반면 WITHOUT\_PRORATION은 플랜을 즉시 변경하지만 추가 금액을 바로 청구하지 않고, 다음 갱신일에 새 가격을 청구해요. 선택한 모드에 따라 과금 시점과 갱신 방식이 달라지는 것이죠.

코드에서는 설정값 1~2줄의 차이지만, 언제 얼마를 청구하고 어떤 권한을 제공할지는 비즈니스 결정이에요. 개발자가 구현하기 전에 PM·그로스팀·개발팀이 의도한 과금 정책을 같은 언어로 정의해야 해요. 작은 설정값 하나가 실제 과금 시점과 매출을 바꿀 수 있기 때문이에요.
과금 정책뿐 아니라 구독 권한의 기준도 기기나 스토어가 아닌 사용자 계정에 두어야 해요. 모든 플랫폼이 하나의 구독 상태를 바라보면 어디서 결제하고 어떤 기기로 접속하더라도 권한이 사용자를 따라가요.
레비뉴캣의 Entitlements는 서로 다른 스토어 상품을 사용자의 접근 권한과 연결해 앱 코드가 개별 상품 ID를 일일이 해석하는 부담을 줄여요.

구독 권한과 과금 설정의 오류도 대시보드에서는 단순한 이탈이나 매출 감소로만 보이기 쉬워요. 잘 풀리지 않는 성장 문제를 만났을 때 마케팅 전략뿐 아니라 그 뒤의 엔지니어링 구조도 함께 살펴봐야 하는 이유예요”.
앞에서 살펴본 3가지 병목에는 공통점이 있어요. 결제 실패와 구독 권한 오류는 대시보드에 이탈로 남고, 잘못된 과금 설정은 매출 감소로 나타나요. 배포가 늦어 실행하지 못한 실험은 데이터에조차 남지 않죠.
대시보드는 무엇이 일어났는지는 보여주지만 왜 일어났는지까지 설명하지 못해요. 숫자만 보고 마케팅 전략이나 제품을 바꾸면 실제 원인이 결제 상태와 배포 구조, 권한 설정에 있는데도 다른 문제를 풀 수 있어요.

“잘 안 풀리는 그로스 레버가 있다면, 혹시 엔지니어링이라는 벽 뒤에 숨어 있는 문제는 아닌지 의심해 보는 것도 좋습니다. 개발팀을 의심하라는 뜻은 아닙니다. 그로스와 직결된 엔지니어링 문제를 먼저 발견해 개발자가 풀 수 있는 문제로 만들어 주는 것만으로도 효과를 볼 수 있습니다.”
지금 보고 있는 이탈률과 전환율, 매출 수치 뒤에는 어떤 엔지니어링 문제가 숨어 있을까요? 그로스팀이 현상을 개발자가 풀 수 있는 문제로 구체화하고 함께 해결하면, 대시보드의 숫자 뒤에 가려진 성장 기회를 되찾을 수 있어요.
