Files
zellyy-finance/docs/02_기술_문서/01_시스템_아키텍처.md
2025-03-21 16:08:43 +09:00

10 KiB

적자 탈출 가계부 시스템 아키텍처

시스템 개요

'적자 탈출 가계부' 애플리케이션은 사용자의 재정 데이터를 안전하게 관리하고, 효과적인 분석을 제공하며, 다양한 기기에서 일관된 사용자 경험을 제공하기 위한 클라이언트-서버 아키텍처를 채택합니다. 본 문서는 시스템의 전반적인 아키텍처와 주요 구성 요소를 설명합니다.

아키텍처 다이어그램

+---------------------------+        +---------------------------+
|                           |        |                           |
|    클라이언트 애플리케이션    |        |         백엔드 서버         |
|                           |        |                           |
| +---------------------+   |        | +---------------------+   |
| |     프레젠테이션 계층    |   |        | |      API 계층        |   |
| |                     |   |        | |                     |   |
| | - React UI          |   |        | | - RESTful API       |   |
| | - Tailwind CSS      |   |        | | - GraphQL API       |   |
| | - Capacitor         |   |        | | - 인증/인가           |   |
| +---------------------+   |        | +---------------------+   |
|            |              |        |            |              |
| +---------------------+   |        | +---------------------+   |
| |     비즈니스 로직 계층   |   |        | |    서비스 계층        |   |
| |                     |   |        | |                     |   |
| | - 데이터 검증         |   |        | | - 비즈니스 로직       |   |
| | - 상태 관리          |   |        | | - 데이터 처리         |   |
| | - API 통신           |   |        | | - 외부 서비스 통합     |   |
| +---------------------+   |        | +---------------------+   |
|            |              |        |            |              |
| +---------------------+   |        | +---------------------+   |
| |     데이터 계층        |   |        | |    데이터 접근 계층    |   |
| |                     |   |        | |                     |   |
| | - 웹 스토리지         |   |        | | - ORM               |   |
| | - IndexedDB         |   |        | | - 데이터베이스 연결    |   |
| | - 데이터 동기화       |   |        | | - 캐싱               |   |
| +---------------------+   |        | +---------------------+   |
|            |              |        |            |              |
| +---------------------+   |        | +---------------------+   |
| |     네이티브 계층      |   |        | |    데이터베이스       |   |
| |                     |   |        | |                     |   |
| | - Capacitor 플러그인  |   |        | | - Supabase(PostgreSQL) |   |
| | - 네이티브 API 접근   |   |        | | - Redis 캐시        |   |
| +---------------------+   |        | +---------------------+   |
|                           |        |                           |
+---------------------------+        +---------------------------+
                                                |
                                     +---------------------------+
                                     |                           |
                                     |       외부 서비스 통합      |
                                     |                           |
                                     | - 금융 기관 API            |
                                     | - 영수증 OCR 서비스         |
                                     | - 푸시 알림 서비스          |
                                     | - 클라우드 스토리지         |
                                     | - AI/ML 분석 서비스        |
                                     |                           |
                                     +---------------------------+

주요 구성 요소

1. 클라이언트 애플리케이션

프레젠테이션 계층

  • 기술 스택: React, Vite, Tailwind CSS, Capacitor
  • 주요 기능:
    • 사용자 인터페이스 렌더링
    • 사용자 입력 처리
    • 화면 전환 및 네비게이션
    • 반응형 디자인 구현
    • 뉴모피즘 스타일 UI 컴포넌트

비즈니스 로직 계층

  • 기술 스택: JavaScript/TypeScript, React Hooks
  • 주요 기능:
    • 클라이언트 측 데이터 검증
    • 상태 관리 및 업데이트
    • API 요청 처리
    • 오프라인 작업 관리

데이터 계층

  • 기술 스택: LocalStorage, IndexedDB, Capacitor Storage API
  • 주요 기능:
    • 로컬 데이터 저장 및 관리
    • 서버와의 데이터 동기화
    • 오프라인 캐싱
    • 민감 데이터 암호화

네이티브 계층

  • 기술 스택: Capacitor, 네이티브 플러그인
  • 주요 기능:
    • 네이티브 기기 기능 접근 (카메라, 파일 시스템 등)
    • 푸시 알림 처리
    • 앱 생명주기 관리
    • 네이티브 UI 요소 통합

2. 백엔드 서버

API 계층

  • 기술 스택: Node.js, Express, Apollo Server
  • 주요 기능:
    • RESTful API 엔드포인트 제공
    • GraphQL API 제공 (고급 쿼리용)
    • 인증 및 인가 처리
    • 요청 검증 및 응답 포맷팅

서비스 계층

  • 기술 스택: Node.js, TypeScript
  • 주요 기능:
    • 핵심 비즈니스 로직 구현
    • 데이터 처리 및 변환
    • 외부 서비스 통합
    • 트랜잭션 관리

데이터 접근 계층

  • 기술 스택: Supabase SDK, Redis
  • 주요 기능:
    • 데이터베이스 연결 관리
    • 쿼리 최적화
    • 데이터 캐싱
    • 데이터 무결성 보장

데이터베이스

  • 기술 스택: Supabase(PostgreSQL), Redis
  • 주요 기능:
    • 사용자 데이터 영구 저장
    • 트랜잭션 데이터 관리
    • 분석 데이터 저장
    • 세션 및 캐시 데이터 관리
    • 실시간 데이터 구독 및 웨브소켓 기반 업데이트
    • Row-level 보안 정책 적용
    • PostgreSQL 확장 기능 활용

3. 외부 서비스 통합

  • 금융 기관 API: 은행 계좌 및 카드 거래 데이터 연동
  • 영수증 OCR 서비스: 영수증 이미지에서 텍스트 및 금액 추출
  • 푸시 알림 서비스: Firebase Cloud Messaging 또는 Apple Push Notification Service
  • 클라우드 스토리지: AWS S3 또는 Firebase Storage
  • AI/ML 분석 서비스: TensorFlow 기반 소비 패턴 분석 및 예측

데이터 흐름

1. 사용자 인증 흐름

  1. 사용자가 앱에 로그인 정보 입력
  2. 클라이언트가 인증 요청을 백엔드 서버로 전송
  3. 서버가 인증 정보 검증 후 JWT 토큰 발급
  4. 클라이언트가 토큰을 저장하고 이후 요청에 포함
  5. 토큰 만료 시 자동 갱신 또는 재로그인 요청

2. 데이터 동기화 흐름

  1. 사용자가 오프라인 상태에서 데이터 입력
  2. 데이터가 로컬 데이터베이스에 저장
  3. 네트워크 연결 시 자동 동기화 시작
  4. 서버에서 충돌 감지 및 해결
  5. 최신 데이터로 클라이언트 상태 업데이트

3. 분석 데이터 흐름

  1. 사용자 거래 데이터가 서버에 저장
  2. 배치 프로세스가 정기적으로 데이터 분석 수행
  3. 분석 결과가 데이터베이스에 저장
  4. 사용자가 분석 화면 접근 시 데이터 요청
  5. 서버가 분석 결과 반환 및 클라이언트 렌더링

보안 아키텍처

데이터 보안

  • 전송 중 데이터: TLS/SSL 암호화
  • 저장 데이터: AES-256 암호화
  • 민감 정보: 토큰화 및 해싱 처리
  • 데이터베이스: 접근 제어 및 암호화

인증 및 인가

  • 사용자 인증: JWT 기반 인증
  • 소셜 로그인: OAuth 2.0 통합
  • 다중 인증: 2FA 옵션 제공
  • 권한 관리: RBAC(Role-Based Access Control)

보안 모니터링

  • 로깅: 모든 API 요청 및 중요 이벤트 로깅
  • 모니터링: 실시간 보안 이벤트 모니터링
  • 알림: 의심스러운 활동 감지 시 알림
  • 감사: 정기적인 보안 감사 및 취약점 스캔

확장성 및 성능

수평적 확장

  • 서버리스 아키텍처: AWS Lambda 또는 Firebase Functions
  • 컨테이너화: Docker 및 Kubernetes 활용
  • 로드 밸런싱: 트래픽 분산 처리

성능 최적화

  • 데이터베이스 인덱싱: 쿼리 성능 최적화
  • 캐싱 전략: Redis를 활용한 다층 캐싱
  • CDN 활용: 정적 자산 전송 최적화
  • 코드 분할: 필요한 코드만 로드하는 지연 로딩

모니터링 및 분석

  • 성능 모니터링: New Relic 또는 Datadog
  • 오류 추적: Sentry
  • 사용자 행동 분석: Google Analytics
  • 서버 모니터링: Prometheus 및 Grafana

배포 아키텍처

Supabase On-Premise 배포

  • Docker 컨테이너: 로컬 서버에 Supabase 서비스 배포
  • 자체 호스팅: 내부 네트워크에서 안전하게 데이터 관리
  • 백업 및 복구: 자동화된 백업 및 복구 프로세스
  • 확장성: 필요에 따라 리소스 확장 가능

개발 환경

  • 로컬 개발: Docker 컨테이너
  • 테스트 환경: CI/CD 파이프라인 통합
  • 스테이징 환경: 프로덕션과 동일한 구성

프로덕션 환경

  • 클라우드 제공자: AWS 또는 Google Cloud Platform
  • 컨테이너 오케스트레이션: Kubernetes
  • CI/CD: GitHub Actions 또는 Jenkins
  • 인프라 관리: Terraform 또는 CloudFormation

결론

'적자 탈출 가계부' 시스템 아키텍처는 확장성, 보안, 성능을 고려하여 설계되었습니다. 클라이언트-서버 모델을 기반으로 하며, 모바일 환경에서의 사용성과 오프라인 기능을 중요시합니다. 또한 AI/ML 기능을 통합하여 사용자에게 맞춤형 재정 관리 경험을 제공하는 것을 목표로 합니다.

이 아키텍처는 초기 MVP 단계에서 시작하여 사용자 피드백과 요구사항에 따라 점진적으로 확장될 수 있도록 설계되었습니다. 모듈식 접근 방식을 통해 새로운 기능을 쉽게 추가하고 기존 기능을 개선할 수 있습니다.