ADR-T-002
모바일 앱은 React Native(Expo) 기반으로 개발한다
ADR ID: ADR-T-002
상태: Accepted
작성일: 2026-03-02
작성자: YSY
관련 ADR: ADR-T-001
1. 배경 (Context)
플랫폼은 모바일 중심 구조다.
초기 목표는 안드로이드 MVP 출시이며, 이후 iOS 확장 가능성을 열어둔다.
제약 조건:
1인 개발
빠른 MVP 필요
웹 확장 가능성 존재
UI/UX 품질이 경쟁력
위치/GPS 사용 빈도 높음
지도 SDK 연동 필요
기존 개발 경험은 .NET 중심이며, 모바일 네이티브(Android Kotlin, iOS Swift)는 숙련도가 낮다.
2. 결정 (Decision)
모바일 앱은 React Native + Expo 기반으로 개발한다.
초기 전략:
안드로이드 우선 출시
단일 코드베이스 유지
Expo 기반으로 빌드/배포 단순화
네이티브 모듈 커스터마이징은 최소화
3. 대안 (Alternatives Considered)
대안 A: Android 네이티브(Kotlin)
설명
안드로이드만 우선 개발
장점
퍼포먼스 최적
네이티브 제어 용이
위치/GPS/지도 안정성 높음
단점
iOS 별도 개발 필요
코드 이중화
장기적으로 유지 비용 증가
채택하지 않은 이유
장기 확장성과 1인 개발 리소스를 고려할 때 비효율적이다.
대안 B: Flutter
설명
Dart 기반 크로스플랫폼
장점
UI 일관성 우수
성능 안정적
네이티브와 유사한 렌더링
단점
생태계 적응 필요
기존 JS/웹 확장성과 연결성 낮음
러닝커브 존재
채택하지 않은 이유
웹 확장과 코드 공유 가능성을 고려했을 때 RN이 더 자연스럽다.
대안 C: React Native(Expo 제외, Bare Workflow)
설명
React Native CLI 기반
장점
- 네이티브 제어 자유도 높음
단점
빌드 환경 복잡
DevOps 부담 증가
채택하지 않은 이유
초기 단계에서 복잡도를 낮추기 위해 Expo를 우선 채택한다.
4. 결과 (Consequences)
긍정적 결과
단일 코드베이스 유지
안드로이드/iOS 확장 용이
웹과 개념 공유 가능
개발 속도 향상
Expo로 빌드/배포 단순화
부정적 결과
순수 네이티브 대비 퍼포먼스 한계 가능성
Expo 의존성 존재
복잡한 네이티브 기능 도입 시 제약
5. 영향 범위 (Impact)
기술
상태 관리(Zustand 등) JS 기반
API 통신 구조 통일
지도/위치 SDK는 RN 호환 라이브러리 선택 필요
UX
플랫폼 간 UI 차이 최소화
네이티브 느낌 유지 위한 추가 작업 필요
운영
Expo 빌드 파이프라인 활용
앱스토어 배포 절차 표준화
6. 재검토 조건 (Revisit Conditions)
다음 조건 중 하나 이상 충족 시 재검토:
퍼포먼스 병목이 구조적으로 발생
네이티브 기능 의존성이 과도해질 경우
팀 규모 확대 후 네이티브 전문 인력 확보
플랫폼 확장 전략이 웹 중심으로 전환될 경우