API 아키텍처 선택 비교: 개인 개발에서 테스트한 여섯 가지 설정에 대한 기술적 평가

발행: (2025년 12월 29일 오전 07:43 GMT+9)
9 min read
원문: Dev.to

Source: Dev.to

Ume

개인 프로젝트를 처음 시작했을 때는 앱이 대부분 독립적으로 동작할 수 있을 것이라고 생각했습니다.
하지만 데이터 공유, 사용자 인증, 다중 앱 확장 등과 같은 요구사항이 늘어나면서 적절한 백엔드(API)와 서버리스 인프라를 선택해야 할 필요성이 생겼습니다.

Swift‑only, Firebase, FastAPI, 직접 Supabase 접근, Next.js 등 여러 구성을 평가한 결과, React Native × Hono × Cloudflare Workers × Supabase가 최적의 아키텍처라는 결론에 도달했습니다.

이 글은 각 옵션의 특성을 객관적으로 정리하고, 채택 또는 배제된 기술적 이유를 설명합니다.

선택 기준

API 아키텍처는 다음 요구 사항을 기준으로 평가되었습니다.

기능 요구 사항

  • iOS와 Android 모두에서 사용할 수 있는 API
  • 비회원(게스트) 사용자와 인증된 사용자를 지원
  • 영구 데이터 저장소 (RDB 필요)
  • 여러 작은 애플리케이션이 공유하는 API

비기능 요구 사항

  • 장기 개인 개발에 비용 효율적
  • API 수준에서 무단 접근 방지
  • 멀티테넌트 / SaaS 사용을 위한 확장성
  • 낮은 운영 및 유지보수 부담
  • 서버리스 아키텍처 선호

Evaluated Architectures

각 후보 아키텍처를 아래에서 검토하고, 요구 사항을 얼마나 잘 충족하는지 평가합니다.

2‑1. Swift (iOS Only)

Overview
Swift만을 사용해 네이티브 iOS 앱을 구축하고, 데이터를 로컬에 저장합니다.

Evaluation

ProsCons (Requirement Mismatch)
빠른 UI 개발Android 지원 없음 → 크로스‑플랫폼 요구 사항 불충족
네이티브 실행으로 높은 성능RDB 또는 API 레이어를 포함할 수 없어 데이터 공유 요구 사항 불충족
앱 측 보안에만 의존하는 것은 부적절

Result:요구 사항 미충족으로 인해 거부

2‑2. Swift + Firebase

Overview
Firebase Authentication과 Firestore를 백엔드로 사용합니다.

Evaluation

ProsCons (Data Requirement Mismatch)
학습 곡선이 낮음Android 지원 없음
SDK 통합으로 빠른 개발Firestore는 RDB 요구 사항을 만족하지 못함 (조인 및 정규화가 어려움)
보안 규칙이 복잡해지고 규모가 커질수록 취약해짐

Result:RDB 및 확장성 제약으로 인해 거부

2‑3. React Native + Firebase

Overview
크로스‑플랫폼 React Native 앱이 Firebase Authentication과 Firestore에 직접 연결됩니다.

Evaluation

ProsCons (API Requirement Mismatch)
크로스‑플랫폼 지원Firestore는 RDB 요구 사항을 충족하지 않음
매우 빠른 개발 속도직접 클라이언트 접근은 적절한 API 로직 레이어 구축을 방해함
감사 로그, 서명, 고급 보안 로직을 서버 측에서 강제 적용할 수 없음

Result:보안 아키텍처 부족으로 인해 거부

2‑4. React Native + FastAPI + AWS

Overview
FastAPI(Python)를 API 레이어로 사용하고, AWS RDS, Lambda, VPC 등 서비스를 활용합니다.

Evaluation

ProsCons (Cost Mismatch)
엔터프라이즈급 보안 설계RDS, VPC, 모니터링 등을 포함하면 개인 개발에는 과도함
매우 유연한 비즈니스 로직높은 운영 비용 및 고정 지출
다양한 데이터베이스 옵션(PostgreSQL, MySQL, Aurora) 제공서버리스 환경이라도 API Gateway와 CloudWatch 비용이 누적됨

Result:비용‑성능 균형이 맞지 않아 거부

2‑5. React Native + Supabase (Direct Client Access)

Overview
React Native가 Supabase(PostgreSQL + RLS)에 직접 연결됩니다.

Evaluation

ProsCons (No Server Layer)
완전한 RDB 지원비즈니스 로직을 구현할 API 레이어 부재
Row Level Security(RLS)를 통한 기본 보안클라이언트 측 비밀 키 관리 위험
여러 애플리케이션이 공유하기엔 충분히 안전하지 않음

Result:보안 및 아키텍처 제한으로 인해 거부

2‑6. React Native + Next.js (Vercel) + Supabase

Overview
Next.js API Routes와 Vercel Edge를 이용해 API를 구축하고 KV 캐싱을 사용합니다.

Evaluation

ProsCons (Cost and Purpose Mismatch)
Edge Runtime을 통한 빠른 응답SSR / RSC 청구가 무료 티어를 빠르게 소진
손쉬운 KV 기반 캐싱순수 API 용도로 Next.js를 사용할 경우 이점이 제한적
웹과 API의 원활한 통합Workers 대비 API 중심 워크로드에 비용 효율성이 낮음

Result:비용 효율성 우려로 인해 거부

2‑7. React Native + Hono + Cloudflare Workers + Supabase (Final Choice)

Overview
Hono가 Cloudflare Workers에서 API 레이어로 동작합니다. Supabase(PostgreSQL + RLS)를 주요 데이터스토어로 사용하고, Workers KV를 캐시로 활용합니다.

Reasons for Adoption

  1. 보안 요구 사항 충족

    • API 레이어에서 JWT 검증, 요청 서명, 속도 제한 구현
    • Supabase RLS와 중첩된 방어 체계 제공
    • 앞단에 Cloudflare WAF 배치 가능
    • 클라이언트에 Supabase anon 키를 배포할 필요 없음
  2. 저비용

    • Workers는 지속적인 비용이 거의 없으며, 사용량 기반 과금 구조로 예산을 효율적으로 관리할 수 있음
  3. 확장성 및 유지보수성

    • 서버리스 환경으로 자동 스케일링 지원
    • Hono와 Workers의 경량 구조가 빠른 배포와 업데이트를 가능하게 함
  4. 개발 생산성

    • TypeScript 기반으로 기존 React Native 코드와 일관된 개발 경험 제공
    • Supabase의 자동 생성 API와 RLS 정책을 활용해 백엔드 로직을 최소화

Result:최종 선택

free under ~100 k requests/month

  • KV and caching reduce Supabase query volume
  • Zero fixed operational cost
  1. High Scalability
  • API modularization suitable for multi‑app expansion
  • Hono provides Express‑like ergonomics with high performance
  • Serverless scaling removes infrastructure concerns
  1. High Development Efficiency
  • Workers + Hono are optimized for API‑only use
  • Simple middleware composition
  • Smooth integration with Supabase

Result:Adopted as it best satisfies both technical and non‑functional requirements

아키텍처 다이어그램

[ React Native App ]  [ Cloudflare Workers (Hono) ]  [ Supabase (PostgreSQL + RLS) ]
                                   |
                                   v
                               [ Workers KV (cache) ]

상세 다이어그램

] 
        |
      HTTPS
        |
[ Cloudflare Workers (Hono API) ]
        |
        +--> JWT Verify -----> [ Supabase Auth ]
        |
        +--> SQL + RLS ------> [ Supabase PostgreSQL ]
        |
        +--> Rate Limit -----> [ Workers KV ]

비교 표

보안, 비용, 확장성은 이 프로젝트의 가정에 기반한 주관적 평가입니다.

ArchitectureRDB보안비용API 확장성전체
Swift×낮음낮음낮음거부
Swift + Firebase×중간낮음낮음거부
RN + Firebase×중간낮음중간거부
RN + FastAPI + AWS높음높음높음거부
RN + Supabase (Direct)중간낮음낮음거부
RN + Next.js + Vercel중간중간중간거부
RN + Hono + Workers + Supabase높음매우 낮음높음채택

요약

이 글에서는 개인 개발 프로젝트를 위해 여러 API 아키텍처를 비교하고, 각 옵션을 기능적 및 비기능적 요구사항에 따라 평가했습니다.

최종 선택인 React Native × Cloudflare Workers × Hono × Supabase는 다음과 같은 이유로 돋보였습니다:

  • 강력한 API 수준 보안 제어
  • Supabase와 행 수준 보안(RLS)을 활용한 안정적인 관계형 데이터베이스 지원
  • Cloudflare Workers를 통한 뛰어난 비용 효율성
  • 유연한 서버리스 확장성
  • 다중 앱 확장에 적합한 구조
Back to Blog

관련 글

더 보기 »