인디 제품 개발 시리즈 두 번째 글

지난 글에서는 iOS 개발자의 관점에서 필요를 정하고 인디 앱을 개발해 출시하는 데 사용한 자료를 소개했습니다. 이용할 수 있는 자원이 제한적이어서 Apple App Store에만 올리는 유틸리티 앱 정도를 완성할 수 있었습니다.

이 글에서는 모든 기능을 갖춘 크로스 플랫폼 제품의 개발과, 그 과정에서 만난 문제 및 해결책을 살펴봅니다. 제가 WeChat 공식 계정, 미니 프로그램과 앱으로 이루어진 완전한 제품 생태계를 어떻게 단계적으로 구축했는지 공유하겠습니다.

1. 제품 목표

넓게 말하면 제품 목표는 제품이 실현하는 가치입니다. 사용자 상황이 있더라도 만든 제품에 가치가 없고, 수익을 내지 못하며 사용자가 극히 적다면 존재할 이유가 없습니다.

더 크게 생각해 제품 비전부터 이야기할 수도 있습니다…

잠깐, 아직은 그렇게 많이 생각하지 마세요. 그러다가는 제품이 끝없는 상상 속에만 남을 수 있습니다.

자원과 인력, 투자할 수 있는 것이 모두 제한되어 있다면 목표는 분명해집니다. 어떤 문제를 해결할지, 또는 어떤 기능을 완성할지입니다.

예를 들어 제가 File Manager를 만들 때 MVP의 목표는 분명했습니다. 휴대전화와 컴퓨터 사이에서 파일을 전송하는 것입니다.

MVP 요구 사항을 완성하자 자연스럽게 다른 요구도 생겼습니다. 일부는 제 제품 계획에서 나왔지만 더 많은 것은 사용자 피드백에서 나왔습니다.

  • 1.0.0 휴대전화와 컴퓨터 사이 파일 전송
  • 1.1.0 이미지, 동영상 및 오디오 파일 미리 보기 또는 재생
  • 1.2.0 파일 분류, 이동, 삭제, 압축 및 공유
  • 1.3.0 플레이어 개선
  • 1.4.0 보안 인증 기능 추가: 제스처 암호와 생체 인증
  • 2.0.0 앱 내 구입 추가
  • 2.1.0 파일 스캔 기능 추가
  • …

당시 File Manager 화면: 파일 탐색과 관리 기능

당시 File Manager 화면: 추가 파일 도구와 인터페이스

목표를 하나 분명히 하세요. 클 필요는 없지만 실행할 수 있어야 합니다. 한 번에 한 가지에 집중하고 틀린 것 같아도 우선 계속하세요. 완성하지 않고 어떻게 틀렸는지 알 수 있을까요 ◔ ‸◔? 완성한 뒤 돌아봅니다.

2. 제품 프로토타입

지난 글에서 여러 프로토타이핑 도구를 사용해 본 뒤, 프로토타입을 설계하는 시간이면 xib로 화면을 완성할 수 있다는 결론을 내렸다고 했습니다.

여기서는 제 말을 뒤집겠습니다 ,,Ծ‸Ծ,,

이후 계획 없이 완성해서 출시하는 것만 생각하며 개인용 유틸리티 앱을 만들 때는 그렇게 생각할 만합니다.

하지만 제품을 반복해 개선하다 보면 프로토타입 계획 없이 한 단계씩 다음을 고민하는 방식이 이후 개발에 큰 문제를 일으킵니다. 프로토타입을 설계하는 과정은 사실 제품 논리를 정리하는 과정입니다.

몇 가지 프로토타이핑 도구를 소개합니다. 지금 제가 가장 자주 쓰는 것은 MockingBot입니다.

3. 프로젝트 관리

iOS 앱을 혼자 개발해 출시하고 나서 심각한 문제를 깨달았습니다. 프로젝트 관리라는 개념이 전혀 없었습니다. 시간이 나거나 생각날 때만 작업하고, 게으르고 싶으면 아무것도 하지 않았습니다.

제 제품을 직접 설계하고 개발했으며 MVP에는 유료 사용자도 거의 없었기 때문에 사용자에게 책임을 진다는 마음도 없었습니다.

이는 프로젝트 진행을 심각하게 방해합니다. 오랫동안 계획 없이 개발하면 프로젝트가 무산될 수도 있습니다.

회사에서 몇 년 동안 반복 개발을 관리하면서 프로젝트 관리 도구가 개인 프로젝트에도 효과가 있다는 것을 알게 됐습니다. 분명한 제품 목표와 논리가 일관된 프로토타입이 있으면 작업을 나누는 것은 자연스러운 다음 단계입니다.

저는 프로젝트 관리에 coding.net을 사용합니다. 소스 코드를 호스팅하는 데도 쓸 수 있습니다.

당시 프로젝트 관리 화면: 작업을 개별 항목으로 분할

작업을 시간 단위로 나누면 관리하기 쉬울 뿐 아니라 테스트 케이스도 작성하기 좋습니다. 저는 본격적으로 코딩하기 전에 테스트 케이스를 먼저 완성합니다. 이는 매우 중요합니다.

프로토타입은 제품 논리를 정리하고 테스트 케이스는 개발 세부 사항을 정리합니다. 완전한 테스트 케이스는 올바른 비즈니스 논리를 구현하도록 이끌고 ✅ 많은 비즈니스 오류를 막아 줍니다 ❌.

4. 기술 선택

지금까지 한 일은 모두 준비에 불과하고 아직 개발은 시작하지 않았습니다. 핵심 문제는 개발자가 저 한 명뿐인데도 글 앞에서 말한 WeChat 공식 계정, 미니 프로그램과 앱으로 이루어진 완전한 제품 생태계를 완성해야 한다는 점입니다.

미니 프로그램, iOS와 Android 개발 기술이 모두 필요합니다. 프로그래밍 언어를 배우는 일은 그리 어렵지 않지만 같은 비즈니스 논리를 세 번 구현하는 비용이 듭니다. 이는 분명 현실적이지 않습니다.

보통은 웹으로 여러 플랫폼의 사용 경험을 구현하거나 앱을 포기하고 공식 계정과 미니 프로그램 생태계에 집중할 수도 있습니다. 제품 초기 단계에서 요구 사항을 빠르게 검증해야 할 때는 매우 타당한 방법입니다.

조금만 검색하면 크로스 플랫폼 기술이 많다는 것을 알 수 있습니다. 앱과 미니 프로그램을 세 플랫폼에서 하나의 코드로 만들려면 Uni-App을 사용할 수 있습니다. Vue.js 프런트엔드 프레임워크를 사용하며 iOS와 Android는 Weex를 활용합니다.

개인 제품이나 소규모 상업 제품에는 충분합니다.

5. 데이터 관리

미니 프로그램과 앱을 구현할 방법을 정하고도 중요한 문제가 하나 더 남습니다. 데이터를 어디에 저장할까요?

유틸리티 제품이라면 앱에 로컬로 저장하면 됩니다. 하지만 목표가 완전한 사용자 체계를 갖춘 정보 플랫폼, 더 나아가 복잡한 사용자 제작 콘텐츠 커뮤니티라면 어떻게 해야 할까요?

Uni-App은 자체 uniCloud 서비스를 제공합니다. JavaScript로 서버 개발을 마칠 수 있으며 미니 프로그램과 앱은 도메인 이름 없이 서버를 이용할 수 있습니다.

저는 다른 방법을 택했습니다. 서버리스 플랫폼인 LeanCloud에 데이터를 호스팅하고, 미니 프로그램과 앱에서 LeanCloud JavaScript SDK를 통해 호스팅된 데이터베이스에 접근합니다.

개발 요금제는 하루 30,000회의 무료 API 요청을 지원하고 SMS 서비스도 제공합니다. 사용자 체계를 구축하고 사용자 데이터를 업로드하며 플랫폼 데이터를 가져오는 일을 충분히 할 수 있습니다.

개발 요금제의 요청 한도를 넘었다면 제품에 어느 정도 사용자가 모였다는 뜻입니다. 그때는 트래픽에서 얻는 수익으로 상업용 사용량 기반 요금제를 이용할 수 있을 것입니다.

조금 얄미운 데이터 확보 방법

날씨 앱이나 정보 앱을 만들고 싶은데 날씨나 뉴스 데이터가 없다면 어떻게 할까요?

중국에는 다음과 같은 API 마켓이 많습니다.

Alibaba Cloud API Marketplace

Tencent Cloud API Marketplace

Baidu Cloud API Marketplace

Juhe Data

EastApi

등이 있습니다.

이 마켓들은 유료와 무료 API를 모두 제공합니다.

  • 제품에 트래픽을 잘 수익화할 방법이 있다면 유료 API를 고려할 수 있습니다.

  • 그렇지 않다면 무료 사용량을 이용할 수 있습니다. 하지만 100회 체험분은 테스트 중에 금세 소진됩니다. 그러면 어떻게 할까요?

서버리스 데이터베이스 플랫폼 LeanCloud와 API 마켓을 함께 사용할 수 있습니다. 매일의 날씨를 예로 들면 먼저 서버리스 데이터베이스를 조회하고, 데이터가 없을 때 API 마켓에 요청한 뒤 그 결과를 데이터베이스에 저장합니다.

그래도 100회로 모든 도시를 다룰 수 없다면 어떻게 할까요? 무료 사용량을 활용하는 정신으로 여러 플랫폼에 신청해 봅시다.

6. 출시와 운영

이제 미니 프로그램, 앱과 서버 개발을 마쳤습니다. 어떻게 출시할까요?

미니 프로그램은 비교적 간단합니다. WeChat 공식 계정 플랫폼에서 안내에 따라 미니 프로그램을 신청하면 됩니다.

iOS에 출시하려면 유료 개발자 계정이 필요하며 이는 하나의 진입 장벽입니다. 장기적으로 운영한다면 Apple Developer 웹사이트에서 계정을 신청하는 것을 권합니다. 지금은 iPhone에 Developer 앱을 내려받아 결제하면 간단히 신청할 수 있습니다.

Android에 출시하려면 소프트웨어 저작권 등록이 필요합니다. 일반 신청은 1~2개월이 걸릴 수 있고 비용을 내고 제3자 대행사에 맡길 수도 있습니다.

계속 무료 자원을 활용한다면 앱과 미니 프로그램의 홍보 영역에 쓰는 이미지, 오디오와 동영상은 어디에 저장할까요?

공식 계정의 미디어 자료실로 이 문제를 해결할 수 있습니다. 이미지, 오디오와 동영상을 그곳에 저장하고 원본 URL을 얻으면 앱과 미니 프로그램에서 접근할 수 있습니다.

7. 수익 얻기

트래픽을 수익화하는 비교적 간단한 방법은 광고입니다.

하지만 각 플랫폼이 게시자에게 요구하는 조건은 갈수록 높아져 인디 개발자가 광고를 연동하기는 매우 어렵습니다.

  • Uni-App은 원클릭 연동 기능을 제공합니다. 자세한 내용은 문서를 참고하세요.

  • 공식 계정에 구독자가 모이면 글 안의 광고 영역을 활성화할 수 있습니다.

  • 미니 프로그램은 순 방문자 1,000명을 달성한 뒤 게시자 수익화를 활성화할 수 있습니다.

8. 마무리

이제 글 앞에서 소개한 WeChat 공식 계정, 미니 프로그램과 앱으로 이루어진 완전한 제품 생태계를 완성했습니다.

위 단계에 따라 저도 세 제품에서 이 과정을 마쳤습니다. 코드를 스캔해 체험해 보세요.

당시 제품 QR 코드. 현재 이용 가능 여부는 달라졌을 수 있습니다