- 업타임 체커인 OnlineOrNot을 Next.js + AWS Lambda로 7일만에 만들어서 런치하고 1년간 운영한 경험
200개나 되는 경쟁자가 있음에도 서비스를 유지하는 비법은?
- 주중 평일에 딱 두시간만 일함
- 고객의 고통을 해결하는 기능에 집중
- 엄청(ruthlessly) 반복적. 2시간에 기능 구현이 안되면 스코프를 줄여서라도 배포하고 그걸 반복
✓ 1년간 배운 교훈들
문제를 해결하는 것이지, SaaS 구독을 판매하는게 아님
- 고객 입장에서 생각하기
- "이 기능을 만들면 고객이 찾아올꺼야!"가 아니라 "고객들의 이 짜증나는 문제를 해결해서 도와줘야 겠다" 가 되어야 함
- SaaS는 문제를 해결하는 많은 방법중 하나일 뿐
문서는 사용자 경험의 일부임
- "개발자는 문서를 읽지 않는다" 라고 말하지만 그건 일부만 맞음
- 그들은 읽지 않고, 제목을 훑어봄
모바일을 위해 만들기
- B2B SaaS에 대한 일반적인 믿음과 달리 사람들은 폰에서 많이 일을 함
- OnlineOrNot은 50% 정도가 모바일에서 옴
- 모바일에서 빠르게 계정을 만들고 모니터링할 페이지를 몇 개 추가한 후에 가끔 노트북/데스크탑에서 체크하는 경향이 있음
- 6개월간 모바일을 지원하지 않았는데, 휴대폰으로 가입했던 사람들은 빠르게 이탈했음
- 결국 반응형 모바일 페이지를 만들었더니 이제 새로운 모바일 사용자가 게속 늘어나는 중
사람들에게 어떻게 알게 되었는지 묻기
- 엄청 가치있었던 코드 변경중 하나는 가입한 사용자에게 "어떻게 OnlineOrNot을 알게 되셨나요?" 였음
- 잠재 고객을 끌어들이기 위한 채널은 여러가지가 있고, 어떤걸 강조할 지를 알아야함
가끔은 직접 실수를 할 필요가 있음
- 다른 사람의 실수를 반복하지 않기 위해 책을 많이 읽기도 했는데, 가끔은 실수를 할 필요가 있음
- 해커뉴스 프론트에 걸렸을때 6000명이 왔지만 몇 백명이 회원 가입하려다 했지만 그중 10명도 안되는 사람만 가입하는 걸 보고 뭔가 잘 못 되었다는 걸 깨달음
- 회원 가입폼에서 75% 이탈율을 보였음. A/B테스팅(내가 만든 DeployWithFlags 이용)을 통해서 추가 OAuth 프로바이더를 붙이고 50%까지 떨어뜨렸음
가격 책정이 정말 어려움
- 가격이 너무 높으면, 당신의 앱이 모든 걸 수행해 줄거라 믿는 사람들이 이탈함
- 가격이 너무 낮으면, $9 냈으니 앱을 다시 작성하길 원하는 고객들이 생김
- 어려운 고객은 환불해주고, 가격을 인상하고, 계속 나아가기
- 가격 책정에 대해서 많은 실험을 할 준비를 할 것
MRR(Monthly Recurring Revenue)에 너무 집중할 필요는..
- MRR은 초기에 비즈니스가 어떻게 되어가는지 측정하는 매우 형편없는 방법임
- 몇주 전에 고친 것들이 현재 MRR에 영향을 미치게 되므로, 많은 고객이 확보 될때 까지는 이런 변경들이 실제 효과가 있는지 알기 어려움
- DAU 나 몇몇 고객 성공 지표(페이지 확인, 이미지 생성등)가 MRR보다 더 유용했음
- 이런 값들이 실제 사용자가 제품을 사용하는지, 그들에게 가치를 가져다 주는지를 알 수 있게 함
유료 티어에도 무료 트라이얼은 필요
- 무료 티어가 사람들을 끌어 들이고 당신의 제품에 대해 얘기하도록 만드는 좋은 방법이지만
- 무료 티어보다 유료 티어가 훨씬 좋다면, 이 유료에 있는 "좋은 기능(Good Stuff)"을 맛보게 하는 방법은 필요함
- 이걸 깨닫는데 11개월이 걸렸음
-
무료 티어를 제공하지만, 신규 사용자의 95%는 프로 티어의 무료 평가판을 선택함
더 많은 트래픽을 가져오기는 어렵고, 현재 트래픽이 하는 것을 변경하기는 쉬움
- 인터넷에서 주목을 받는 것은 길고, 느린 게임
- 몇달에 걸쳐서 양질의 콘텐츠 마케팅을 꾸준히 한다면 독자수는 하루 1~2명에서 수백명으로 늘어날 것
- 사이트에 방문하는 사람 수를 늘리는 것은 정말 쉬운 일이 아님
- 반면에 사람들이 사이트에 방문했을 때 하는 것들은 당신이 영향을 줄 수 있고 오늘 바로 할 수 있음
(OAuth 로그인 프로바이더를 추가하는 일 같은 것)
콘텐츠 마케팅은 당신에게 시간을 벌어줌
- 콘텐츠 마케팅에 투자하면 비즈니스가 일정 기간 동안 자체적으로 운영하게 함
- 일년 동안 몇년의 글이 바이럴 되면서 수만명의 방문자를 끌어들였음. 내가 아무 것도 하지않아도 약 1500명의 사람들이 이 글을 보기 위해 유기적으로 방문하는 중
작게 자주 배포하기
- 사람들은 제품 개선을 위해 특정 기능을 만들라고 제안하겠지만, 그들은 아마도 그 기능을 사용하지 않을 것
- 그들은 아마도 도움이 되려고 하는 것이며, 다른 제품에서 유사한 기능을 봤을 것
- 당신이 SaaS를 처음 운영하고 있기에, 사람들이 당신에게 얘기를 해주는 것에 기뻐하며, 그들을 위한 기능을 구축하려고 서두르게 될 것
- 기능을 만들지 말라는 말은 하지 않겠음(나는 그런 조언을 받았다는 거고, 어쨋든 사용하지 않는 그 기능을 만들었음)
-
그 기능을 어떻게 사용할 것인지 묻고, 다른 고객에게 그 문제를 어떻게 처리하는지 물어보고, 해당 기능의 가장 작은 버전을 만들어보고, 다른 사용자들이 그 기능을 쓰는지 살펴 봐야함
한 사람만 사용하는 기능을 만들고 싶지는 않잖아요?
- 몇 달을 공들인 것 보다 몇시간만 들인 아무도 원하지 않는 기능을 제거하는게 훨씬 덜 괴로움
배포를 먼저 하고, 나중에 규모(Scale)에 대해 걱정할 것
- OnlineOrNot의 첫 버전에서는 아키텍처를 전혀 최적화 하지 않았음
(각 업타임 체크마다 DB커넥션을 유지하고 있어서 사용자가 많아지기 어려웠음)
- 또한 사람들이 필요로 하지 않는 것을 만드는 것보다 불완전한 UI에 당황하는 것을 선호함
- 나중에 아키텍처를 재설계해서 작은 RDS 인스턴스 하나로 주당 수백만건이 처리되게 만들었음
생각보다 문제 해결에 많은 시간을 들이기 어려움
- 1년간 프로그래밍에 쓴 시간 중 절반은 내가 해결하고 싶은 문제를 실제 해결하는데 썼음
- 다른 절반은 SaaS 플랫폼을 구축하는데 사용
- 여러 유형의 사용자 인증, 평가판, 온보딩, 팀 관리기능, 인보이스 관리기능, 수명주기 이메일 같은 SaaS 플랫폼 일들이 필요함
- 많은 것들을 아웃소스 할 수 있음(Stripe가 없었다면 아마 구독형태로 팔지 못했을 것)
- 하지만 항상 맘에 안드는 것들은 있고, 좀 다르게 처리하고 싶으면 직접 만들어야 함