어쩌다 보니 서비스 기획자가 되었습니다
이전 글 : "예외케이스, 그게 중요해?" 문제는 늘 뒤늦게 온다.
결국, 친구 추천 이벤트를 라이브한 그날 새벽 1시. 서버가 터졌다.
앱을 열었는데 아무 반응이 없었다. ‘뭐지?’ 싶던 찰나, 개발자에게 전화가 걸려왔다.
“앨리… 큰일 난 것 같은데? 지금 갑자기 2천 명 넘게 몰리면서 서버가 다운됐어.”
1) 바이럴의 힘? 그건 득도 독도 된다.
전화를 받고 도대체 어떻게 된 일이지? 생각만 무한 반복이 되면서 이 상황이 믿기지 않았다. 지금까지 동시 접속자가 100명을 넘은 적도 없는 앱이었다. 우리는 이제 막 서비스 초기 사용자층을 쌓아가던 완전 신규 서비스였고, 어떤 이벤트를 해도 이렇게 폭발적인 반응을 끌어낸 적이 없었다.
일단 정신을 차리고 이불을 박차고 일어나 미친 듯이 포털에 서비스 이름을 검색하기 시작했다.
결과는 예상치 못한 곳에서 터졌다. 짠테크·앱테크 커뮤니티에서 이벤트가 입소문을 타기 시작했고, 몇 시간 만에 1천 명, 2천 명 단위로 유저가 몰려들었던 것이었다. 우리 서버는 500명 이하의 동접을 기준으로 설계되어 있었기 때문에 그 한계를 넘는 시점에 당연히 앱이 무너질 수밖에 없었던 것이다.
2) 가장 큰 문제는, ‘포인트’였다
사실, 더 큰 문제는 서버가 아니었다. 바로 포인트였다. 이벤트가 라이브된 저녁 7시부터 서버가 다운되기까지, 이미 1억 원이 넘는 포인트가 발급되었고, 그 포인트로 실제 구매까지 이루어지고 있었다.
일반적인 상황이라면, 이게 문제되지 않았을 수도 있다. 포인트 사용에 제한이 있거나, 이벤트 기간 내 일정 조건을 두는 방어 로직이 있었다면 1억 원의 포인트가 한꺼번에 소진되는 일은 막을 수 있었을 것이다.
하지만 우리 서비스는 전혀 그렇지 않았다. 앞서 말했듯이,
단 하나의 대비책도 없이, 평소 서비스 구조에 이벤트라는 독을 뿌린 셈이었다.
우리는 그동안 리뷰 작성이나 단건 참여 이벤트 중심으로 작은 포인트만 발급하는 운영을 해왔기에, 포인트 사용에 아무런 제한이 없었다. 보유 포인트가 많든 적든 100% 결제가 가능했고, 제품 단가가 낮은 편이었기 때문에 실제로 포인트를 야금 야금 많이 모았다면 그 포인트 만으로 ‘결제 완료’가 가능했다. 사실, 이전에는 발급 포인트 자체가 적었기 때문에 이 구조가 큰 문제가 되지 않았다.
하지만 이번 이벤트는 달랐다. 추천 1건당 5,000원이라는 꽤 큰 금액이 지급됐고, 총 5명까지 추천이 가능했다. 최소 구매 금액에 대한 제한도 없었기 때문에, 도매가 기준의 낮은 단가를 고려하면 2명만 추천해도 배송비만 내고 공짜 쇼핑이 가능한 구조가 되는 것이다.
이벤트는 순식간에 통제 불가능한 상황이 되었고 그리고 ‘이대로 두면 손해가 더 커질 수도 있다’는 판단에 따라 결국 긴급 대응으로 앱 전체를 닫았다. 그리고 나는 어드민에 접속해 앱 오류로 인한 서비스 중단이라는 사과 문자를 급히 사용자들에게 발송했다.
다음 날 아침, 모든 팀원이 평소보다 세 시간 일찍 출근했다.
일단 앱을 내려버렸기 때문에, 더 이상의 포인트 발급이나 구매는 발생하지 않는 상황이었다. 우리는 DB를 하나하나 들여다보며, 어떤 부분을 놓쳤는지 파악하기 시작했다.
그리고 그제야 깨달았다. 이벤트 설계 안에 치명적인 허점이 있었다는 것을.
1) 어떤 예외케이스를 고려하지 못했을까?
예를 들어, 이런 방식이었다
• A 사용자가 5명의 친구를 추천해 25,000원을 획득
• 추천받은 친구 중 1명의 번호/소셜로 새 계정을 생성
• 새 계정에서 다시 나머지 4명 + 또 다른 1명을 추천 → 또 25,000원 획득
• 이 과정을 5회 반복 → 1명이 총 125,000원 상당 포인트 탈취
겉으로 보기엔 다 다른 유저처럼 보이지만 배송 주소, 이름, 전화번호, 사이즈 정보가 모두 동일했다.
이런 방식으로 포인트를 악용한 사용자 대부분은, 이벤트 당일 가입한 신규 고객이었다. 그리고 가입 시점과 바이럴 시점을 대조해본 결과, 90% 이상이 짠테크 커뮤니티를 통해 유입됐다고 판단했다.
2) 그래서, 어떻게 해결가?
앱을 무기한 닫아둘 수는 없었으니, 문제를 해결 해야만 했다.
우리는 앉은 자리에서 긴급하게 해결책을 도출했고, 결국 아래 3가지 조치를 시행하게 됐다.
• 서버 용량 확장 – 향후 이벤트 대응을 위한 인프라 보강
• 포인트 사용 비율 50% 제한 – 포인트는 결제 금액의 절반까지만 사용 가능
• 이벤트 중단 – 체리피커 유입을 즉시 차단
하지만 문제는, 이 조치들이 기존 사용자에게도 영향을 줬다는 점이었다. 기존 고객들은 그동안 포인트를 차곡차곡 모으며 이벤트를 통해 진짜 지인을 추천하고 상품 구매를 하려고 했는데, 갑작스러운 정책 변경으로 포인트 사용 폭이 줄어들며 실망하게 된 것이다. 이와 관련된 기존 고객들의 VOC는 폭주했고, 너무 당연하게도 서비스 이탈로 이어졌다. 진짜 고객들은 남은 포인트도 쓰지 못한 채 떠나간 것이다.
여기서 가장 아이러니한 건, 정작 모든 포인트를 소진한 쪽은 체리피커들이었다.
‘그럼 체리피커도 진짜 고객으로 만들면 되잖아?’ 그렇게 생각 할 수 있다.
실제로 많은 서비스에서 진성 고객의 시작은 체리피커이기도 하니까. 하지만 문제는, 그들을 고객으로 붙잡아둘 장치가 없었다는 것이다. 추천 이후 다시 방문하게 만들 인입 구조도, 차곡차곡 쌓아두고 다시 쓰게 만들 콘텐츠도, 재방문 이유도 없는 서비스였기 때문에 혜택만 가져간 후 다시 들어올 이유가 없는 것이다.
결국, 이 일은 서비스에 대한 신뢰를 무너뜨리는 결정적 계기가 되었고,
우리가 만든 구조 그리고 우리의 해결 방식으로 인해 우리의 진짜 사용자들이 서비스를 떠나게 만든 것이다.
이 경험을 통해 내가 배운 건 두 가지였다.
첫째, ‘해결’은 단순히 문제를 끝내는 게 아니라, 같은 문제가 반복되지 않도록 만드는 일이라는 것.
둘째, 문제를 사전에 막는 것도 중요하지만, 문제를 해결하는 과정에서 생길 수 있는 사이드 이펙트까지 함께 고민해서 ‘덜 아픈 방식’으로 해결해야 한다는 것.
그리고 이 두 가지가 기획자, 혹은 PM이 가장 예민하게 바라봐야 하는 것 중 하나라는 것도 알게 됐다.
1) 문제는 해결했다. 잘 해결하지 못했을 뿐이다.
우리는 문제를 해결했고, 같은 문제는 다시 발생하지 않았다.
포인트 정책은 조정됐고, 서버도 확장됐으며 우리가 놓쳤던 예외 케이스도 어느 정도 방어할 수 있게 되었다.
하지만 문제는, 그 뒤에 따라온 부작용이 너무 컸다는 것이다.
당시 약 1.5억 원의 시드 투자를 받은 초기 스타트업이었지만, 그 적은 자금으로도 7명 넘는 인원을 고용해
매출을 내며 1년 넘게 버텨온 팀이었다. 이는 서비스도 조금씩 성장하고 있고, 가능성도 있다는 말이었다.
그 이벤트 하나가 생각보다 많은 금전적 손실을 남겼고, 꾸준히 구매를 하던 기존 고객들의 이탈하면서 최소한의 캐시플로우 자체가 붕괴되며 상황은 급격하게 안 좋아졌다. 어떻게든 회사를 살려야 하니, D2C의 특성을 고려한 새로운 BM을 발굴해 매출을 조금씩 다시 내기 시작했지만 이때 입은 손실을 회복하기엔 역부족이었다. 결국 그해 4월, 대표님과 부대표님을 제외한 모든 팀원이 회사를 떠나는 것으로 결정이 됐다.
2) 해결을 '잘' 하는 방법을 고민해보다.
그때를 돌아보면, 우리 팀은 해결’만을 너무 빠르게 바라봤던 건 아닐까 생각이 가장 많이 든다.
그 결정이 만든 영향, 그리고 그 영향이 고객에게 어떻게 다가갈지를 조금만 더 들여다봤더라면 어땠을까?예를 들면 이런 방식이었다면 어땠을까?
• 친구 추천 포인트 지급 정책 변경 → 추천받은 친구가 일정 금액 이상 구매했을 때만 포인트 지급
• 포인트 사용 비율 제한 조건 분리 → 기존 가입자는 기존처럼 사용하고, 이벤트 이후 가입자만 50% 제한
물론 이 방식이 정답은 아니었을 수도 있다. 하지만 처음부터 조금만 더 고민하고, 한 걸음만 더 깊이 들여다봤더라면 기존 고객의 이탈 같은 2차 피해는 줄일 수 있었을 거라는 생각은 여전히 든다.
그 이후로, 어떤 문제를 마주할 때마다 한 걸음 더 고민하려고 한다. 같은 실수를 하지 않기 위해서 말이다.
한 번의 결정으로 너무 많은 걸 잃었기 때문에, 계속 말했던 것처럼 “이 방식이 정말 최선일까?” 이런 질문을 스스로에게 습관처럼 던지게 됐다.
물론, 사람인지라 급할 땐 실수할 수도 있고, 예상치 못한 변수에 당황할 때도 많다. 하지만 그럴수록 조급함을 내려두고 조금만 더 고민해보는 것, 문제를 ‘잘’ 해결할 수 있는 방법을 찾는 것, 그게 지금 내가 가장 중요하게 지키고 있는 원칙이다.
모든 걸 처음부터 완벽하게 기획할 수 있다면 가장 좋겠지만, 일이라는 건 늘 변수가 많고 정답 없는 상황이 더 많다는 걸 할수록 더 절실히 느낀다. 그래도 경험이 쌓일수록 예외를 예측하는 시야도 조금씩 넓어지고,
대안을 찾는 속도와 방향도 다양해지지만 여전히 부족함이 보인다. 예를 들어, 리뷰를 하거나, 오전에 쓴 문서를 오후에 다시 읽어보면 “왜 이렇게 썼지?” 싶은 순간들이 꼭 있다.
그래서인지, 실수를 줄이는 것보다 더 중요한 건 같은 실수를 반복하지 않는 것이라는 생각을 하게 됐다.
그리고 그걸 지키기 위해 계속 배우고, 노력하고 있다. 어쩌면, 그게 지금까지 내가 겪어온 경험들 속에서
가장 소중하게 쓰이고 있는 자산이 아닐까 싶다.