Files
Obsidian/ZELLYY/zellyy note/02_기술_문서/시스템_아키텍처.md
2025-03-26 18:16:46 +09:00

7.6 KiB

ZELLYY 시스템 아키텍처

아키텍처 개요

ZELLYY는 모바일 중심의 카드 제작 애플리케이션으로, 클라이언트-서버 아키텍처를 기반으로 설계되었습니다. 초기 MVP 단계에서는 로컬 저장소 중심으로 구현하고, 이후 클라우드 동기화 기능을 추가하는 방식으로 발전할 예정입니다.

시스템 구성 요소

클라이언트 애플리케이션

모바일 앱 (React Native)

  • UI 레이어: React Native 컴포넌트, 스타일링 (Styled Components)
  • 상태 관리: Redux/Redux Toolkit, Context API
  • 네비게이션: React Navigation
  • 로컬 저장소: AsyncStorage, SQLite
  • 네트워크: Axios, React Query
  • 오프라인 지원: 로컬 캐싱, 오프라인 작업 큐

웹 애플리케이션 (향후 개발)

  • 프레임워크: Next.js
  • UI 라이브러리: React
  • 상태 관리: Redux/Redux Toolkit
  • 스타일링: Tailwind CSS, Styled Components
  • API 통신: Axios, React Query

백엔드 서비스

Supabase 기반 백엔드

  • 데이터베이스: PostgreSQL
  • 인증: Supabase Auth (이메일, 소셜 로그인)
  • 스토리지: Supabase Storage (이미지, 에셋 저장)
  • 실시간 기능: Supabase Realtime (향후 협업 기능용)
  • API: RESTful API, GraphQL (선택적)

추가 서버 컴포넌트 (필요시)

  • Node.js 서버: 복잡한 비즈니스 로직, 서드파티 API 통합
  • 이미지 처리 서비스: 이미지 최적화, 변환
  • 푸시 알림 서비스: Firebase Cloud Messaging 연동

인프라

  • 호스팅: Supabase 자체 호스팅 (Debian 12 서버)
  • CDN: Cloudflare (정적 자산 배포)
  • CI/CD: GitHub Actions
  • 모니터링: Sentry, Datadog
  • 분석: Google Analytics, Firebase Analytics

데이터 흐름

기본 데이터 흐름

  1. 사용자가 모바일 앱에서 카드 제작/편집
  2. 로컬 저장소에 변경사항 저장
  3. 온라인 상태일 때 Supabase에 동기화
  4. 다른 기기에서 접속 시 Supabase에서 최신 데이터 가져오기

오프라인 지원

  1. 오프라인 상태에서 모든 변경사항 로컬에 저장
  2. 변경사항을 작업 큐에 추가
  3. 온라인 상태가 되면 작업 큐 처리
  4. 충돌 발생 시 해결 전략 적용 (최신 타임스탬프 우선, 사용자 선택 등)

주요 API 엔드포인트

사용자 관리

  • POST /auth/signup: 회원가입
  • POST /auth/login: 로그인
  • POST /auth/logout: 로그아웃
  • GET /auth/user: 현재 사용자 정보 조회
  • PUT /auth/user: 사용자 정보 업데이트

카드 관리

  • GET /cards: 사용자의 카드 목록 조회
  • GET /cards/:id: 특정 카드 상세 조회
  • POST /cards: 새 카드 생성
  • PUT /cards/:id: 카드 업데이트
  • DELETE /cards/:id: 카드 삭제

템플릿 관리

  • GET /templates: 템플릿 목록 조회
  • GET /templates/:id: 특정 템플릿 상세 조회
  • POST /templates: 사용자 커스텀 템플릿 생성
  • PUT /templates/:id: 템플릿 업데이트
  • DELETE /templates/:id: 템플릿 삭제

에셋 관리

  • GET /assets: 에셋(이미지, 아이콘 등) 목록 조회
  • POST /assets: 새 에셋 업로드
  • DELETE /assets/:id: 에셋 삭제

보안 아키텍처

인증 및 권한 관리

  • JWT 기반 인증
  • 역할 기반 접근 제어 (RBAC)
  • API 요청 제한 (Rate Limiting)
  • HTTPS 전용 통신

데이터 보안

  • 저장 데이터 암호화 (Encryption at Rest)
  • 전송 데이터 암호화 (Encryption in Transit)
  • 민감 정보 마스킹
  • 정기적인 보안 감사

확장성 고려사항

수평적 확장

  • 마이크로서비스 아키텍처로의 점진적 전환 가능성
  • 서버리스 함수 활용 (AWS Lambda, Supabase Edge Functions)
  • 데이터베이스 샤딩 전략

성능 최적화

  • 이미지 최적화 및 압축
  • CDN 활용한 정적 자산 배포
  • 캐싱 전략 (메모리 캐시, 디스크 캐시)
  • 데이터베이스 인덱싱 및 쿼리 최적화

시스템 아키텍처 다이어그램

+------------------+        +------------------+
|                  |        |                  |
|  모바일 앱        |        |  웹 애플리케이션   |
|  (React Native)  |        |  (Next.js)       |
|                  |        |                  |
+--------+---------+        +--------+---------+
         |                           |
         |                           |
         v                           v
+------------------------------------------+
|                                          |
|             API Gateway                  |
|                                          |
+------------------+---------------------+
                   |
                   |
                   v
+------------------+---------------------+
|                                        |
|            Supabase                    |
|                                        |
|  +-------------+    +-------------+    |
|  |             |    |             |    |
|  | PostgreSQL  |    |  Storage    |    |
|  |             |    |             |    |
|  +-------------+    +-------------+    |
|                                        |
|  +-------------+    +-------------+    |
|  |             |    |             |    |
|  |    Auth     |    |  Realtime   |    |
|  |             |    |             |    |
|  +-------------+    +-------------+    |
|                                        |
+------------------+---------------------+
                   |
                   |
                   v
+------------------+---------------------+
|                                        |
|        추가 서비스 (필요시)              |
|                                        |
|  +-------------+    +-------------+    |
|  |             |    |             |    |
|  | Node.js     |    | 이미지 처리  |    |
|  | 서버        |    | 서비스       |    |
|  +-------------+    +-------------+    |
|                                        |
|  +-------------+    +-------------+    |
|  |             |    |             |    |
|  | 푸시 알림    |    | 분석 서비스  |    |
|  | 서비스       |    |             |    |
|  +-------------+    +-------------+    |
|                                        |
+------------------------------------------+

기술 스택 선택 이유

React Native

  • 크로스 플랫폼 개발로 iOS와 Android 동시 지원
  • 네이티브 성능과 사용자 경험 제공
  • JavaScript/TypeScript 기반으로 개발 효율성 높음
  • 풍부한 커뮤니티와 라이브러리 생태계

Supabase

  • Firebase의 오픈소스 대안으로 자체 호스팅 가능
  • PostgreSQL 기반으로 강력한 쿼리 기능 제공
  • 인증, 스토리지, 실시간 기능 통합 제공
  • RESTful API와 GraphQL 지원
  • 확장성과 커스터마이징 용이

Redux/Redux Toolkit

  • 예측 가능한 상태 관리
  • 디버깅 및 개발 도구 지원 우수
  • 미들웨어를 통한 비동기 작업 처리 용이
  • 대규모 애플리케이션에서의 상태 관리 효율성

향후 아키텍처 발전 계획

1단계: MVP (로컬 중심)

  • 기본 기능 로컬 저장소 기반 구현
  • 최소한의 서버 의존성

2단계: 클라우드 동기화

  • Supabase 연동 및 데이터 동기화
  • 사용자 인증 및 권한 관리 강화

3단계: 협업 기능

  • 실시간 데이터 동기화
  • 팀 워크스페이스 및 공유 기능

4단계: 웹 서비스 확장

  • Next.js 기반 웹 애플리케이션 개발
  • 모바일-웹 간 일관된 경험 제공

5단계: AI 기능 통합

  • 디자인 추천 및 자동화
  • 콘텐츠 분석 및 최적화