제로에서 SaaS까지: 2025년에 Flutter + Supabase로 수익성 있는 모바일 앱 구축

발행: (2025년 12월 10일 오전 08:55 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

아키텍처

클린 아키텍처는 앱이 성장함에 따라 유지보수가 쉽도록 합니다. 레이어 간 연결은 다음과 같습니다:

                    ┌──────────────────────────────┐
                    │         FLUTTER APP          │
                    └──────────────────────────────┘

        ┌──────────────────────────┼──────────────────────────┐
        │                          │                          │
        ▼                          ▼                          ▼
┌───────────────┐        ┌─────────────────┐        ┌─────────────────┐
│  PRESENTATION │        │     DOMAIN      │        │      DATA       │
│───────────────│        │─────────────────│        │─────────────────│
│ • Widgets     │   ──▶  │ • Use Cases     │   ──▶  │ • Repositories  │
│ • BLoC/Cubit  │        │ • Entities      │        │ • Data Sources  │
│ • Riverpod    │        │ • Business Logic│        │ • Models        │
└───────────────┘        └─────────────────┘        └─────────────────┘

                     ┌──────────────────────────────────┼──────────────────────────────────┐
                     │                                  │                                  │
                     ▼                                  ▼                                  ▼
            ┌─────────────────┐                ┌─────────────────┐                ┌─────────────────┐
            │    SUPABASE     │                │   REVENUECAT    │                │   LOCAL CACHE   │
            │─────────────────│                │─────────────────│                │─────────────────│
            │ • PostgreSQL    │                │ • Subscriptions │                │ • Hive/SQLite   │
            │ • Auth          │                │ • Receipts      │                │ • Shared Prefs │
            │ • Storage       │                │ • Analytics     │                │                 │
            │ • Edge Functions│                │                 │                │                 │
            └─────────────────┘                └─────────────────┘                └─────────────────┘

1단계: 비용 분석

Google Play 개발자 계정

항목비용주기
등록$25일회성
연회비$0
Apple (선택)$99연간

Google Play 서비스 수수료

수익 구간Google 수수료내가 받는 비율
연간 첫 $1M15%85%
$1M 이상30%70%
구독 1년 차15%85%
구독 2년 차 이상10%90%

💡 전문가 팁: 구독자를 12개월 이상 유지하면 Google은 10%만 차감합니다.

대체 결제 (EEA)

유럽 경제 지역에서는 4% 할인 → 15% 대신 11% 적용됩니다.

2단계: Supabase 백엔드

무료 플랜 vs 프로 비교

기능무료 플랜프로 ($25/월)
데이터베이스500 MB8 GB
스토리지1 GB100 GB
대역폭5 GB250 GB
MAU50,000100,000
Edge Functions500K/월2M/월
Realtime200 연결500 연결
백업매일
일시정지1주 비활동 후없음

⚠️ 무료 프로젝트는 1 주간 비활동 시 일시정지됩니다. 유료 사용자가 생기면 바로 업그레이드하세요.

3단계: 구독 흐름

    USER JOURNEY
    ═══════════

    ┌─────────┐         ┌─────────┐         ┌─────────┐         ┌─────────┐
    │  User   │ ──────▶ │ Paywall │ ──────▶ │ Google  │ ──────▶ │ Success │
    │  Taps   │         │ Screen  │         │  Play   │         │   🎉    │
    │ Upgrade │         │         │         │ Billing │         │         │
    └─────────┘         └─────────┘         └─────────┘         └─────────┘


    ┌─────────────────────────────────────────────────────────────────────┐
    │                         BACKEND FLOW                                │
    ├─────────────────────────────────────────────────────────────────────┤
    │                                                                     │
    │    Google Play ──▶ RevenueCat ──▶ Webhook ──▶ Supabase Edge Func   │
    │         │              │              │              │               │
    │    [Receipt]     [Validate]     [Notify]      [Update DB]          │
    │                                                                     │
    └─────────────────────────────────────────────────────────────────────┘

4단계: Flutter 코드 설정

의존성

# pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  supabase_flutter: ^2.0.0
  purchases_flutter: ^6.0.0  # RevenueCat
  flutter_bloc: ^8.1.0
  get_it: ^7.6.0             # Dependency Injection

Supabase 초기화

import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:flutter/widgets.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Supabase.initialize(
    url: 'YOUR_SUPABASE_URL',
    anonKey: 'YOUR_ANON_KEY',
  );

  runApp(MyApp());
}

final supabase = Supabase.instance.client;

RevenueCat 구매 서비스

import 'package:purchases_flutter/purchases_flutter.dart';

class PurchaseService {
  static Future<void> init() async {
    await Purchases.configure(
      PurchasesConfiguration('your_revenuecat_api_key'),
    );
  }

  static Future<List<Package>> getOfferings() async {
    final offerings = await Purchases.getOfferings();
    return offerings.current?.availablePackages ?? [];
  }

  static Future<bool> purchase(Package package) async {
    try {
      final result = await Purchases.purchasePackage(package);
      return result.customerInfo.entitlements.active.containsKey('premium');
    } catch (_) {
      return false;
    }
  }

  static Future<bool> isPremium() async {
    final customerInfo = await Purchases.getCustomerInfo();
    return customerInfo.entitlements.active.containsKey('premium');
  }
}

5단계: 가격 전략

추천 요금제

플랜가격전환율비고
주간$2.9947% 선택낮은 약정
월간$9.99표준가장 흔함
연간$49.99최고의 가치58% 절감
평생$99.99높은 LTV가격 기준점

2025년 주요 통계

지표
평균 구독 가격$10.20/월
7일 체험 전환율5.2%
체험이 LTV를 높이는 비율최대 64%
주간 구독 인기 비율47% 전체 구독

📊 계산식: 100명 × $9.99 × 85% = $849/월

실제 인디 개발자 수입

수입 분포

수준월 수익비율
대부분 첫 앱< $100 총합~60%
고군분투$0 – $500~25%
지속 가능$1K – $5K~10%
성공$5K – $20K~4%
최고 실적$20K+~1%

성공 사례

수익기간
Postiz$2K MRR4개월
Formula Bot$220K MRR18개월
ShipFast$133K/월진행 중
Itemlist$1.4K/월3가지 요금제
Xnapper$150K 판매21개월

전체 기술 스택

스택 개요

계층기술비용
프론트엔드Flutter 3.x + Riverpod/BLoC무료
백엔드Supabase (Postgres + Auth)무료 → $25/월
결제RevenueCat무료 → 매출 비율
스토어Google Play$25 일회성
스토어 (iOS)App Store$99/년

시작 비용

┌───
Back to Blog

관련 글

더 보기 »