4.6 KiB
4.6 KiB
ZELLYY Core 아키텍처
시스템 구조
+---------------------+
| Frontend Apps |
| +-------+ +-------+ |
| |적자탈출| | 구독 | |
| |가계부 | |매니저 | |
| +-------+ +-------+ |
+----------+----------+
|
+----------v----------+
| ZELLYY Core API |
| |
| - 사용자 인증/관리 |
| - SSO 서비스 |
| - 공통 데이터 관리 |
+----------+----------+
|
+----------v----------+
| Supabase |
| +-------+ +-------+ |
| | Auth | |Database| |
| +-------+ +-------+ |
+---------------------+
데이터 모델
사용자 (Users)
- id: UUID (Supabase Auth와 연동)
- email: String
- name: String
- created_at: Timestamp
- last_login: Timestamp
- services: Array (사용 중인 서비스 목록)
- auth_provider: String (google, apple, email 등 인증 제공자)
- auth_provider_id: String (제공자 측 사용자 ID)
- avatar_url: String (프로필 이미지 URL)
서비스 접근 권한 (Service_Access)
- user_id: UUID (FK: Users)
- service_id: UUID (FK: Services)
- access_level: String
- granted_at: Timestamp
서비스 (Services)
- id: UUID
- name: String
- description: String
- api_endpoint: String
인증 흐름
- 사용자가 어느 서비스에서든 로그인 (이메일/비밀번호, 구글 또는 애플 계정 사용)
- ZELLYY Core에서 인증 처리
- 소셜 로그인의 경우 해당 제공자의 OAuth 흐름을 통해 인증
- 최초 로그인 시 사용자 정보 생성 및 연결
- JWT 토큰 발급 및 사용자 서비스 접근 권한 확인
- 해당 서비스로 리다이렉트 및 SSO 세션 유지
소셜 로그인 통합 흐름
+-------------+ +--------------+ +---------------+
| 사용자 |---->| ZELLYY Front |---->| 구글/애플 OAuth |
+-------------+ +--------------+ +---------------+
^ ^ |
| | v
| | +---------------+
| +------------| ZELLYY Core |
| | Auth Handler |
| +---------------+
| |
| v
| +---------------+
+-------------------------------| Supabase |
| Auth & DB |
+---------------+
확장성을 위한 아키텍처 설계
1. 서비스 계층 분리
+-------------------+
| 클라이언트 |
+--------+----------+
|
+--------v----------+
| API Gateway | <-- 트래픽 제어, 로드 밸런싱
+--------+----------+
|
+--------v----------+ +----------------+
| Core Services +---->+ Cache Layer | <-- Redis 클러스터
+--------+----------+ +----------------+
|
+--------v----------+
| Database Layer | <-- 읽기 복제본, 샤딩
+-------------------+
2. 분산 시스템 패턴
- Circuit Breaker: 장애 전파 방지 및 빠른 실패 처리
- Bulkhead: 서비스 간 영향 격리
- Throttling: API 사용량 제한 및 서비스 보호
- Saga: 분산 트랜잭션 처리
- CQRS: 읽기/쓰기 작업 분리로 성능 최적화
3. 성능 확장 전략
캐싱 계층
- 분산 캐시: Redis 클러스터를 활용한 세션, 토큰, 자주 사용되는 데이터 캐싱
- 엣지 캐싱: CDN을 통한 정적 자원 및 API 응답 캐싱
- 멀티 레벨 캐싱: 클라이언트 → 엣지 → 서버 단계별 캐싱
데이터베이스 확장
- 수직적 확장: 리소스 증가를 통한 초기 성능 개선
- 수평적 확장: 샤딩을 통한 데이터 분산
- 읽기/쓰기 분리: 마스터-슬레이브 구조로 읽기 부하 분산
4. 인증 시스템 확장
- 토큰 관리: 중앙화된 JWT 발급 및 검증
- 세션 저장소: Redis를 활용한 분산 세션 관리
- 토큰 갱신: 효율적인 리프레시 토큰 처리
- 세션 동기화: 멀티 인스턴스 간 세션 정보 동기화
5. 모니터링 및 탄력성
- 상태 모니터링: 서비스 상태 실시간 추적
- 자동 스케일링: 트래픽에 따른 자동 확장 구성
- 장애 감지: 이상 징후 조기 발견
- 자동 복구: 장애 발생 시 자동 대응 체계
6. API 버전 관리
- 하위 호환성: 이전 버전 API 지원
- 점진적 도입: 새로운 기능의 단계적 출시
- API 문서 자동화: OpenAPI 스펙을 통한 문서 관리