yunjeBlog
Published on

11월 23일 개발 및 비즈니스 학습 일기: STT, 결제 시스템, 앱 개발 전략

Authors
  • avatar
    Name
    장윤제
    Twitter

🧭 목차


📅 11월 23일 일기

작성자: yunjeblog

Diary, Dream, Study

어제 일기를 쓰려고 하다가 쓰지 못했다. 윗과방에 갔었고, 주변에 사람들이 있어서 STT 기능을 쓸 수가 없었다. 어제는 윗과방에서 코딩을 많이 했다.

일기가 정신 건강에 좋은 영향을 미치는가에 관해서 논의를 많이 해봐야 할 것 같은데, 이것은 일기를 쓰는 행동 자체가 아니라 어떤 일기를 쓰느냐가 더 중요한 것 같기도 하다. 어제 그저께 상당히 많은 내용을 썼기 때문에 오늘은 상대적으로 쓸 내용이 적을 것 같다.

나는 틀린 글자를 고치거나 구조적으로 좀 더 나은 글을 써야 한다는 그런 수정 작업들이 나를 매우 짜증나게 하고 정신적으로 힘들게 한다는 것을 발견했다. 그러므로 LLM이 충분히 STT 결과물을 잘 변환해주기 때문에, 나는 최대한 수정 작업을 하지 않을 것임을 다시 한번 선언한다.

🛠️ 어제의 개발 작업

그래서 어제는 무엇을 했는가? 나는 꽤 많은 것들을 했다고 자신 있게 말할 수 있다.

먼저 이제는 웹사이트에서 버튼을 누르면 녹음이 되고, 이것을 서버사이드 함수로 보낸다. 이건 Node.js 런타임이고, 여기서 FFmpeg 라이브러리를 이용해 MP3로 바꾸고, OpenAI API 파일에 올린다. 20MB 이상을 처리하려면 files api 써서 올려야 한다. FFmpeg로 바꿀 때 로직, 그리고 올릴 때 등에 대해서 학습했고, WASM을 쓰는 방식에 대해서는 기각했다.

나는 결과물에 만족한다. 먼저 녹음을 해서 MP3 파일을 받는 기능이 잘 작동하는 것을 확인했고, 테스트로 들어왔을 때 음성 녹음을 해가지고 그것을 STT, 그러니까 텍스트를 인식해서 보여주는 게 가능한 것을 확인했다.

굳이 스트리밍을 할 필요 없을 것 같다. 생각해보면 나도 스트리밍을 잘 쓰지 않는다. 그리고 무엇보다 빠른 온보딩이 가장 중요하기 때문에, 나는 스트리밍을 쓰지 않을 것이고 청킹도 쓰지 않을 것이다. 전체적인 맥락 보존이 더 중요하다. 채팅 속도의 경우, Gemini가 어떻게 보면 빠르고 어떻게 보면 느린데, 이건 고객 경험 관점에서 추후 논의가 필요한 상황이다.

그리고 이 Gemini와 MP3 형식으로 고치는 과정을 별도의 파일로 분리했으며, 당연히 둘 다 Node.js 런타임이어야 한다. 당연히 이 기능도 로그인한 이용자만 접근할 수 있어야 되는데, 아니면 무분별한 요청을 해서 내 API 사용량이 너무 높아질 수 있기 때문이다. 아직 TTS 기능은 넣지 않았다.

Vercel Edge CDN은 TTS는 지원하지만 STT는 지원하지 않아서, 어쩔 수 없이 Google AI STT를 사용해야 한다. Gemini는 중국 모델들과 비교해서도 가격 경쟁력이 있다. STT는 나중에 할 것이고, 이게 도움이 되는지도 확실하지 않다.

💰 세금 및 결제 시스템 공부

자, 나는 앱스토어 그리고 플레이 스토어에 앱을 올리는 방식, 그리고 세금이 어떻게 계산되는지에 대해서 공부했다. 먼저 세금에 대해서 공부한 내용을 한번 정리해보려고 한다.

세금의 기본 원리

세금의 경우 원리적으로 두 개가 구분되는데, 이는 굉장히 단순하다. 모든 경제 주체는 세금을 내야 하고, 소득이 있는 곳에 세금이 있다.

  • 소득세 및 법인세: 소비자의 경우 자신의 소득에 대해서 종합소득세를 낸다. 마찬가지로 법인은 자신의 소득에 대해서 소득세, 그러니까 법인세를 낸다.
  • 소비세 및 부가세: 소비 활동에 대해서도 세금이 붙는다. 이는 조세 형평성을 위함이다. 모든 사람은 세금을 내야 하고, 가난한 사람도 상품을 구매할 때 세금을 내야 한다. 대한민국의 부가세는 **10%**이다. 이는 원칙적으로는 소비자가 부담하나, 소비자에게 징수하기는 어렵기 때문에 공급자에게 원천징수한다.

미국의 세금 시스템

미국의 경우 연방 국가이다. 그래서 주세와 연방세가 따로 있다.

  • 매출세/소비세: 미국의 부가세는 매출세(또는 서비스세, 소비세)로 불리며, 주마다 다르다.
  • 법인세: 캘리포니아는 법인세가 높다. 텍사스는 법인세 대신 매출에 부과하여 적자라도 세금을 내야 한다.
  • SaaS 기업 유리: SaaS 기업이라면 델라웨어가 기업 설립 및 운영에 좋다.
  • Nexus 기준: 캘리포니아에 사무실이 있거나 충분한 매출이 나는 등 특정 기준에 걸리면, 세금 적은 주에 본사를 두더라도 캘리포니아에 회사가 있는 것으로 간주될 수 있다.
  • 조세 협정: 미국과 한국은 조세 협정에 따라 세율이 **0%**이다. 이는 구글이나 앱스토어 인앱 결제 수익(미국 원천 소득)에 대해 별도로 부과되는 세금이 없다는 뜻이다.

인앱 결제 정책

구글과 애플은 인앱 결제에 대해 **30%**의 수수료를 취한다.

  • 수수료 미적용 대상: 숙박 앱, 배달 앱처럼 실제 위치가 있는 서비스를 제공하거나 아마존/쿠팡처럼 실물을 파는 경우는 수수료 적용 대상이 아니다.
  • 수수료 적용 대상: 넷플릭스, 슬랙처럼 무형적인 서비스를 파는 경우 수수료를 내야 한다. 이 기준은 엄격하다.

기업들의 대응 방식

  • 넷플릭스: 인앱 결제를 지원하지 않고 **"브라우저에서 회원가입하세요"**라고 안내한다. 브라우저 결제에는 수수료를 부과하지 않기 때문이다.
  • 애플 정책:
    • 가격 명시 또는 "브라우저에서 결제하면 할인!"은 금지이다.
    • 구매 버튼을 완전히 없애는 것은 허용된다.
  • 유튜브, 네이버 웹툰: 앱에서 가입/결제 시 추가 금액을 받는다 (네이버 웹툰 쿠키 가격이 앱에서 20% 차이 발생).

인앱 결제를 지원하는 이유

그것은 바로 전환율 때문이다.

  • 전환율: 클릭한 사람이 구매, 회원가입 등 의도한 액션을 실제 취하는 사람의 비율.
  • 편의성: 웹에서 로그인하고 결제하는 것은 귀찮지만, 애플 Face ID나 등록된 결제 수단으로 앱에서 결제하는 것은 매우 편리하다. 스포티파이는 인앱 결제 미지원 시 전환율이 반토막 났다고 한다.

수수료 정책 상세

애플과 구글은 SaaS, 즉 서비스를 앱 내에서 파는 경우에만 30% 수수료를 적용한다. 소비세 또는 부가세는 별도로 계산된다.

  • 애플 티어: 개발자가 정수 가격이 아닌 이산적인 정해진 가격(티어)을 선택할 수 있다.

다양한 온라인 결제 옵션

국내 결제 - PG사 (Payment Gateway)

국내 사람들에게 결제를 받기 위해 PG사를 이용한다.

  • 수수료: 보통 카드 결제가 3.3% 정도.
  • PG사 가입 비용: 가입비(예: 22만 원), 연회비(예: 11만 원)가 발생할 수 있다.
  • 대안 (소상공인 추천): 포트원, 심플페이 같은 PG사 계약 대행 서비스를 이용하면 연회비와 가입비를 내지 않고 매우 작은 소정의 수수료를 내게 되어 유리하다.

해외 결제

외국인들이 결제하기 쉽게 하기 위해 해외 결제 서비스를 이용한다.

  • Stripe:
    • 한국 법인 이용 불가. Stripe Atlas를 이용해 미국 법인 설립 필요 (연간 50만 원 비용).
    • 빠른 연동과 낮은 수수료(약 3.3% + 고정 수수료 400원 정도)가 강점.
  • PayPal:
    • 결제 건당 $0.49 + 4.9% 수수료를 받는다. 수수료가 비싸지만 미국인들이 많이 사용한다.
  • MoR (Merchant of Record) 서비스 - Paddle:
    • 기록상 판매자로 작용하여 세금 납부를 대행해준다.
    • 수수료가 매우 비싸다 (결제 건당 750원의 고정 수수료 + 5% 수수료).

결제 회사들은 도둑놈이란 사실을 알 수 있다. 컴퓨터공학부라면 코드를 짜서 돈을 버는 걸 당연하고 합당하다고 생각할 수도 있겠지만 말이다.

🚀 프로젝트 계획

나는 우선 세 개의 프로젝트를 돈을 벌기 위해 추진하고 있으며, AI 딸깍 양산형 앱 만들기에는 인앱 결제를 적용할 것이다.

앱 개발과 스토어 등록

스마트폰은 오로지 앱스토어와 구글 플레이 스토어만 생각하면 된다.

  • 개발자 계정: 앱을 올리기 위해 개발자 계정이 필요하다.
  • 법인사업자: DUNS 레코드를 받아야 하며, 회사 홈페이지 및 커스텀 도메인 이메일이 필요하다.
  • 추천: 정부기관에 앱을 제공해야 하는 경우가 아니라면, 개인 개발자 등록을 하고 법인 계좌를 등록하는 것이 절차적으로 더 간편하다.
  • 가입 비용:
    • 애플: 매년 99달러 (끔찍한 회사)
    • 구글: 일회성 25달러
  • 앱 업로드 제한: 구글은 24시간에 15개의 앱을 올릴 수 있다.

앱 개발 방법론

네이티브 앱 개발

  • Android: 자바 또는 코틀린 사용.
  • iOS: 스위프트 사용.
  • 학습법: GPT를 쓰더라도 버전 호환성 문제 때문에 결국 공식 문서를 보면서 읽는 것이 가장 좋다.

웹 개발 기초

모든 웹사이트는 HTML, CSS, JavaScript로 만들어진다.

  • React: JavaScript로만 앱을 작동시키고 제어하기 위해 만들어진 라이브러리. 많이 쓰는 React를 쓰는 것이 좋다.

React의 장점

  • 가상 DOM: DOM 전체를 새로고침하는 것은 자원 소모적이다. React는 가상 DOM을 사용하여 state가 바뀔 때마다 바뀐 부분만 재렌더링한다. 이 방식이 비용 효율적이다.
  • Hooks: useRef, useCallback 등 컴포넌트 생명 주기와 관련된 함수. use 이름으로 구분하며, 커스텀 훅도 만들 수 있다 (예: useRecord).

빌드 프로세스

React 코드는 결국 JavaScript로 번역된다. 이를 브라우저에서 효율적으로 실행하기 위해 최적화 과정을 거친다.

  • 번들링: 여러 JavaScript 파일들을 import 문 포함해서 하나의 JavaScript 파일로 만든다.
  • 트리셰이킹: 선언만 되고 사용되지 않는 함수나 변수 등을 제거한다.
  • Babel: 오래된 버전의 JavaScript만 이해하는 브라우저에서도 실행될 수 있도록 코드를 옛날 버전으로 바꾼다.
  • Vite: 빌더. 하나의 HTML, JavaScript, CSS 파일로 된 폴더를 만들고, gzip 방식으로 압축하여 통신 부하를 줄인다.

Next.js vs Vite

  • Next.js: 풀스택 프레임워크. 하나의 프로젝트 폴더에서 프론트엔드와 백엔드를 모두 개발할 수 있다 (Node.js 런타임 사용).
  • Vite: 프론트엔드 개발 도구. 백엔드를 지원하지 않아 서버리스 함수를 지원하는 호스팅 업체(Vercel 등)를 사용해야 한다.
  • 호스팅: 영세한 개발자라면 Vercel을 선택하는 것이 가장 효율적이다.

데이터베이스

DB는 NoSQL (MongoDB)과 SQL (Supabase, Firebase)이 있다.

SQL vs NoSQL

  • SQL 장점: 다양한 조인 작업에서 더 효율적이다. 트랜잭션 기능 (거래의 안전성)도 보장한다.

SQL 기초

  • 테이블 스키마: 데이터베이스의 형식을 선언한다.
  • CRUD: Create, Read, Update, Delete 작업을 SQL 쿼리로 작성하고 실행한다.

ORM과 도구들

  • ORM (Object-Relational Mapping): JS나 Python과 같은 익숙한 언어로 DB 개발을 할 수 있게 도와주는 라이브러리.
  • Django: GUI를 지원하며, 어떤 SQL 엔진을 쓰든 번역을 자동으로 해준다.
  • 창업가 전략: 시간이 없다면 Supabase나 Firebase를 고민해야 한다. 인증이나 CRUD를 더 빨리 구현할 수 있다.

Supabase와 Firebase

  • Supabase: 오픈 소스 기반. SQL 쿼리를 직접 작성할 필요 없이 테이블 짜기나 CRUD 작업을 정해진 함수로 수행할 수 있다. OAuth 로그인 등도 쉽게 구현 가능하다. 멋진 콘솔에서 테이블 편집 및 설정이 편리하다.
  • Firebase: 구글에서 관리한다.

배포와 호스팅

  • 프론트엔드 호스팅: Vercel
  • 백엔드: Supabase
  • 도메인 구매: 호스팅케이알 추천 (가격 저렴, 콘솔 편리).

크로스 플랫폼 앱 개발

React 웹사이트를 앱스토어/플레이 스토어에 올리고 싶을 때 대안이 있다.

  • React Native: 크로스 플랫폼 언어. 공부하기 힘들 수 있다.
  • Capacitor와 웹뷰:
    • Capacitor라는 오픈 소스 프로그램 사용.
    • 웹뷰 방식: 웹사이트를 항상 들어가게 하는 방식. 업데이트 반영이 빠르지만, 항상 인터넷 연결이 필요하다는 치명적인 단점이 있다.
    • 로컬 파일 포함: dist 파일을 미리 앱에 포함시키면 더 나은 경험을 줄 수 있다.
  • 제약: 애플 앱스토어에 앱을 올리기 위해서는 macOS가 반드시 필요하다고 한다.

🎯 프로젝트 우선순위와 전략

현재 구상 중인 세 가지 프로젝트:

  1. 인맥 관리 툴 (CRM 소프트웨어)
  2. 꿈일기 작성을 위한 LLM 어플리케이션 (웹/앱)
  3. 감성형 AI 양산 앱 (STT 기능 포함, 인앱 결제)

나는 내가 흥미 있는 것을 하는 걸 좋아하므로, 우선 다른 것들에 집중할 것이다.

꿈일기 프로젝트 전략

  • 비즈니스 모델: Freemium 모델. 유저들이 공짜로 쓰면서 프로그램의 가치를 깨닫도록 할 것이다.
  • 광고: 구글 애즈 사용법을 알아볼 것이다.

구글 태그 매니저 (GTM)

GTM을 이용하면 구글, Meta Ads, 네이버 애즈 등 다양한 광고 툴을 통합 관리할 수 있다.

  • 목적:
    • 구글 광고에서 목표한 행동(구매, 회원가입 등)을 하는 비율 측정 (전환율).
    • 앱/웹에 구글 광고를 보여줄 때 필요한 광고 툴.
  • 편의성: SPA의 경우 index.html만 수정하면 될 정도로 설치가 쉽다.

타겟 시장 및 광고 전략

  • 타겟: 꿈일기와 감성형 AI 모두 해외 시장을 먼저 타겟팅한다. 시장이 더 넓기 때문이다.
  • 광고: 해외 시장 대상이므로 구글 애즈를 쓸 수밖에 없다. 꿈일기를 먼저 하는 것을 고민하고 있다. (인플루언서 마케팅, 콘텐츠 마케팅 등 다른 광고 방식 논의 필요)

특징

특징꿈일기 프로젝트감성 자극 AI 양산형
웹/앱웹 접근이 반드시 필요하며 도메인도 중요웹사이트 주소는 상대적으로 덜 중요
결제Freemium 모델, 구글 애즈 필요오직 인앱 결제만 지원해도 무방
개발TTS 불필요. 프롬프트 및 별도 DB 편집 함수 필요로직이 매우 간단하여 양산이 가능하다
디자인프롬프트를 잘 짜야 함디자인 획일화 경계 (프로필 사진, 채팅 UI 등)

기술적 고민사항 (감성 자극 AI)

  • UX: 녹음 중지 버튼이 얼마나 불쾌감을 줄지, TTS가 없는 게 얼마나 불쾌감을 줄지가 고민이다.
  • TTS 도입 시: TTS를 자연스럽게 넣으려면 프롬프트 수정 (출력 양 줄이기) 및 이용자의 인터럽트 감지 등 신경 쓸 게 많아진다.
  • 페르소나 전략: 감성 자극 AI는 독특하고 특별해야 한다고 생각하며, 하나의 앱에서 수많은 페르소나에 접근하는 것을 반대한다. 상대를 기억하고 대화 내용을 기억할 수 있어야 한다.

구체적인 비즈니스 모델과 경영 전략에 대해서는 다음 글에 다루겠다. 이상. 나는 글 말하느라 수고했고, 너는 읽느라 고생했다.