API 아키텍처 선택 비교: 개인 개발에서 테스트한 여섯 가지 설정에 대한 기술적 평가
Source: Dev.to
번역할 텍스트를 제공해 주시면 한국어로 번역해 드리겠습니다. 현재는 링크만 포함되어 있어 번역할 내용이 없습니다. 텍스트를 복사해서 알려주시면 바로 도와드릴게요.
개요
제가 개인 개발을 처음 시작했을 때는 앱이 대부분 자체적으로 동작할 수 있을 것이라고 생각했습니다.
하지만 데이터 공유, 사용자 인증, 다중 앱 확장과 같은 요구사항이 늘어나면서 적절한 백엔드(API)와 서버리스 인프라를 선택해야 하는 상황이 되었습니다.
Swift‑only, Firebase, FastAPI, 직접 Supabase 접근, Next.js 등 여러 구성을 평가한 결과, React Native × Hono × Cloudflare Workers × Supabase가 최적의 아키텍처라는 결론에 도달했습니다.
이 글에서는 각 옵션의 특성을 객관적으로 정리하고, 채택하거나 배제한 기술적 이유를 설명합니다.
선정 기준
API 아키텍처는 다음 요구사항을 기준으로 평가되었습니다.
기능 요구사항
- iOS와 Android 모두에서 사용할 수 있는 API
- 비회원(게스트) 사용자와 인증된 사용자 지원
- 영구 데이터 저장 (RDB 필요)
- 여러 작은 애플리케이션에서 공유되는 API
비기능 요구사항
- 장기 개인 개발에 비용 효율적
- API 수준에서 무단 접근 방지
- 멀티테넌트 / SaaS 사용을 위한 확장성
- 낮은 운영 및 유지보수 비용
- 서버리스 아키텍처 선호
평가된 아키텍처
각 후보 아키텍처를 아래에서 검토하고, 요구 사항을 얼마나 충족하는지 평가합니다.
2‑1. Swift (iOS Only)
개요
Swift만을 사용해 구축된 네이티브 iOS 앱으로, 데이터는 로컬에 저장됩니다.
평가
| 장점 | 단점 (요구사항 불일치) |
|---|---|
| 빠른 UI 개발 | Android 지원 없음 → 크로스‑플랫폼 요구사항 실패 |
| 네이티브 실행으로 인한 높은 성능 | RDB 또는 API 레이어를 포함할 수 없어 데이터‑공유 요구사항 실패 |
| 앱 측 보안에만 의존하는 것은 부적절 |
결과: → 요구사항 미충족으로 인해 거부
2‑2. Swift + Firebase
개요
Firebase Authentication과 Firestore를 백엔드로 사용합니다.
평가
| 장점 | 단점 (데이터 요구사항 불일치) |
|---|---|
| 학습 곡선이 낮음 | Android 지원 없음 |
| SDK 통합으로 빠른 개발 | Firestore는 RDB 요구사항을 만족하지 않음 (조인 및 정규화가 어려움) |
| 규모가 커질수록 보안 규칙이 복잡하고 취약해짐 |
결과: → RDB 및 확장성 제약으로 인해 거부
2‑3. React Native + Firebase
개요
크로스‑플랫폼 React Native 앱이 Firebase Authentication과 Firestore에 직접 연결됩니다.
평가
| 장점 | 단점 (API 요구사항 불일치) |
|---|---|
| 크로스‑플랫폼 지원 | Firestore는 RDB 요구사항을 충족하지 않음 |
| 매우 빠른 개발 속도 | 클라이언트가 직접 접근하면 적절한 API 로직 레이어를 구축할 수 없음 |
| 감사 로그, 서명 및 고급 보안 로직을 서버 측에서 강제할 수 없음 |
결과: → 보안 아키텍처 부족으로 인해 거부
2‑4. React Native + FastAPI + AWS
개요
FastAPI(Python)를 API 레이어로 사용하고, AWS RDS, Lambda, VPC 등 서비스를 활용합니다.
평가
| 장점 | 단점 (비용 불일치) |
|---|---|
| 엔터프라이즈 수준 보안 설계 | RDS, VPC, 모니터링 등을 포함하면 개인 개발에 과도함 |
| 매우 유연한 비즈니스 로직 | 높은 운영 비용 및 고정 지출 |
| 다양한 데이터베이스 옵션 (PostgreSQL, MySQL, Aurora) | 서버리스라도 API Gateway와 CloudWatch 비용이 누적됨 |
결과: → 비용‑성능 균형이 좋지 않아 거부
2‑5. React Native + Supabase (Direct Client Access)
개요
React Native가 Supabase(PostgreSQL + RLS)에 직접 연결됩니다.
평가
| 장점 | 단점 (서버 레이어 부재) |
|---|---|
| 완전한 RDB 지원 | 비즈니스 로직을 구현할 API 레이어가 없음 |
| Row Level Security(RLS)를 통한 기본 보안 | 클라이언트 측 비밀 관리 위험 |
| 여러 애플리케이션이 공유하기엔 충분히 안전하지 않음 |
결과: → 보안 및 아키텍처 제한으로 인해 거부
2‑6. React Native + Next.js (Vercel) + Supabase
개요
Next.js API Routes와 Vercel Edge를 이용해 API를 구축하고 KV 캐싱을 사용합니다.
평가
| 장점 | 단점 (비용·목적 불일치) |
|---|---|
| Edge Runtime으로 빠른 응답 | SSR / RSC 청구가 무료 티어를 빠르게 소진 |
| 손쉬운 KV 기반 캐싱 | 순수 API 용도로 Next.js를 사용할 때 이점이 제한적 |
| 웹과 API의 원활한 통합 | Workers 대비 API‑중심 워크로드에 비용 효율성이 낮음 |
결과: → 비용 효율성 우려로 인해 거부
2‑7. React Native + Hono + Cloudflare Workers + Supabase (최종 선택)
개요
Hono가 Cloudflare Workers에서 API 레이어로 동작합니다. Supabase(PostgreSQL + RLS)를 주요 데이터 저장소로 사용하고, Workers KV를 캐시로 활용합니다.
채택 이유
-
보안 요구사항 충족
- API 레이어에서 JWT 검증, 요청 서명, 속도 제한 구현
- Supabase RLS와 중첩된 방어 체계
- 앞단에 Cloudflare WAF 배치 가능
- 클라이언트에 Supabase anon 키를 배포할 필요 없음
-
저비용
- Workers는 지속적인 트래픽에서도 비용 효율적이며, 사용량 기반 과금 구조를 가짐
(이하 내용은 다음 파트에 이어집니다)
free under ~100 k requests/month
- KV and caching reduce Supabase query volume
- Zero fixed operational cost
-
높은 확장성
- 다중 앱 확장에 적합한 API 모듈화
- Hono는 Express‑like ergonomics와 높은 성능을 제공
- Serverless scaling으로 인프라 고민 제거
-
높은 개발 효율성
- Workers + Hono는 API‑only 사용에 최적화
- Simple middleware composition
- Supabase와 원활한 통합
Result: → 기술적 및 비기능적 요구사항을 모두 가장 잘 만족하므로 채택
아키텍처 다이어그램
[ 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 ]
비교 표
보안, 비용, 그리고 확장성은 이 프로젝트의 가정에 기반한 주관적인 평가입니다.
| 아키텍처 | RDB | 보안 | 비용 | API 확장성 | 전체 평가 |
|---|---|---|---|---|---|
| Swift | ✗ | 낮음 | 낮음 | 낮음 | 거부됨 |
| Swift + Firebase | ✗ | 보통 | 낮음 | 낮음 | 거부됨 |
| RN + Firebase | ✗ | 보통 | 낮음 | 보통 | 거부됨 |
| RN + FastAPI + AWS | ✔ | 높음 | 높음 | 높음 | 거부됨 |
| RN + Supabase (Direct) | ✔ | 보통 | 낮음 | 낮음 | 거부됨 |
| RN + Next.js + Vercel | ✔ | 보통 | 보통 | 보통 | 거부됨 |
| RN + Hono + Workers + Supabase | ✔ | 높음 | 매우 낮음 | 높음 | 채택됨 |
Summary
이 문서는 개인 개발 프로젝트를 위해 여러 API 아키텍처를 비교하고, 각 옵션을 기능적 및 비기능적 요구사항에 따라 평가했습니다.
최종 선택인 React Native × Cloudflare Workers × Hono × Supabase는 다음과 같은 이유로 돋보였습니다:
- 강력한 API 수준 보안 제어
- Supabase와 행 수준 보안(RLS)을 활용한 신뢰할 수 있는 관계형 데이터베이스 지원
- Cloudflare Workers를 통한 뛰어난 비용 효율성
- 유연한 서버리스 확장성
- 다중 앱 확장에 적합한 구조