mirror of
https://github.com/cna-bootcamp/phonebill.git
synced 2025-12-06 16:16:23 +00:00
8.5 KiB
8.5 KiB
통신요금 관리 서비스 - 데이터 설계 종합
데이터 설계 요약
🎯 설계 목적
통신요금 관리 서비스의 마이크로서비스 아키텍처에서 각 서비스별 독립적인 데이터베이스 설계를 통해 데이터 독립성과 서비스 간 결합도를 최소화하고, 성능과 보안을 최적화한 데이터 아키텍처 구현
🏗️ 마이크로서비스 데이터 아키텍처
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Auth Service │ │ Bill-Inquiry │ │ Product-Change │
│ │ │ Service │ │ Service │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ phonebill_auth │ │ bill_inquiry_db │ │product_change_db│
│ │ │ │ │ │
│ • auth_users │ │ • customer_info │ │ • pc_product_ │
│ • auth_services │ │ • bill_inquiry_ │ │ change_ │
│ • auth_permiss │ │ history │ │ history │
│ • user_permiss │ │ • kos_inquiry_ │ │ • pc_kos_ │
│ • login_history │ │ history │ │ integration_ │
│ • permission_ │ │ • bill_info_ │ │ log │
│ access_log │ │ cache │ │ • pc_circuit_ │
│ • auth_user_ │ │ • system_config │ │ breaker_state │
│ sessions │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ Redis Cache │
│ │
│ • 고객정보 캐시 │
│ • 상품정보 캐시 │
│ • 세션 정보 │
│ • 권한 정보 │
└─────────────────┘
📊 서비스별 데이터베이스 구성
1. Auth Service (인증/인가)
- 데이터베이스:
phonebill_auth - 핵심 테이블: 7개
- 주요 기능:
- 사용자 인증 (BCrypt 암호화)
- 계정 잠금 관리 (5회 실패 → 30분 잠금)
- 권한 기반 접근 제어
- 세션 관리 (JWT + 자동로그인)
- 감사 로그 (로그인/권한 접근 이력)
2. Bill-Inquiry Service (요금조회)
- 데이터베이스:
bill_inquiry_db - 핵심 테이블: 5개
- 주요 기능:
- 요금조회 요청 이력 관리
- KOS 시스템 연동 로그 추적
- 조회 결과 캐싱 (성능 최적화)
- 고객정보 임시 캐시
- 시스템 설정 관리
3. Product-Change Service (상품변경)
- 데이터베이스:
product_change_db - 핵심 테이블: 3개
- 주요 기능:
- 상품변경 이력 관리 (Entity 매핑)
- KOS 연동 로그 추적
- Circuit Breaker 상태 관리
- 상품/고객정보 캐싱
🔐 데이터 독립성 원칙 구현
서비스 간 데이터 분리
데이터_독립성:
- 각_서비스_전용_DB: 완전 분리된 데이터베이스
- FK_관계_금지: 서비스 간 외래키 관계 없음
- 캐시_기반_참조: Redis를 통한 외부 데이터 참조
- 이벤트_동기화: 필요시 이벤트 기반 데이터 동기화
서비스_내부_관계만_허용:
Auth:
- auth_users ↔ auth_user_sessions
- auth_permissions ↔ auth_user_permissions
Bill-Inquiry:
- bill_inquiry_history ↔ kos_inquiry_history
Product-Change:
- pc_product_change_history (단일 테이블 중심)
⚡ 성능 최적화 전략
캐시 전략 (Redis)
캐시_TTL_정책:
고객정보: 4시간
상품정보: 2시간
세션정보: 24시간
권한정보: 8시간
가용상품목록: 24시간
회선상태: 30분
캐시_키_전략:
- "customer:{lineNumber}"
- "product:{productCode}"
- "session:{userId}"
- "permissions:{userId}"
인덱싱 전략
전략적_인덱스:
Auth: 20개 (성능 + 보안)
Bill-Inquiry: 15개 (조회 성능)
Product-Change: 12개 (이력 관리)
특수_인덱스:
- JSONB_GIN_인덱스: JSON 데이터 검색
- 복합_인덱스: 다중 컬럼 조회 최적화
- 부분_인덱스: 조건부 데이터 최적화
파티셔닝 준비
파티셔닝_전략:
월별_파티셔닝:
- 이력_테이블: request_time 기준
- 로그_테이블: created_at 기준
자동_파티션_생성:
- 트리거_기반_월별_파티션_생성
- 3개월_이전_파티션_아카이브
🛡️ 보안 설계
데이터 보호
암호화:
- 비밀번호: BCrypt + Salt
- 민감정보: AES-256 컬럼 암호화
- 전송구간: TLS 1.3
접근_제어:
- 역할_기반_권한: RBAC 모델
- 서비스_계정: 최소_권한_원칙
- DB_접근: 연결풀_보안_설정
감사_추적:
- 로그인_이력: 성공/실패 모든 기록
- 권한_접근: 권한별 접근 로그
- 데이터_변경: 모든 변경사항 추적
📈 모니터링 및 운영
모니터링 지표
성능_지표:
- DB_응답시간: < 100ms
- 캐시_히트율: > 90%
- 동시_접속자: 실시간 모니터링
비즈니스_지표:
- 요금조회_성공률: > 99%
- 상품변경_성공률: > 95%
- KOS_연동_성공률: > 98%
시스템_지표:
- Circuit_Breaker_상태
- 재시도_횟수
- 오류_발생률
백업 및 복구
백업_전략:
- 전체_백업: 주간 (일요일 02:00)
- 증분_백업: 일간 (03:00)
- 트랜잭션_로그: 15분간격
데이터_보관정책:
- 요금조회_이력: 2년
- 상품변경_이력: 3년
- 로그인_이력: 1년
- KOS_연동로그: 1년
- 시스템_로그: 6개월
🔧 기술 스택
데이터베이스:
- 주_DB: PostgreSQL 14
- 캐시: Redis 7
- 연결풀: HikariCP
기술_특징:
- JSONB: 유연한_데이터_구조
- 트리거: 자동_업데이트_관리
- 뷰: 복잡_쿼리_단순화
- 함수: 비즈니스_로직_캡슐화
성능_도구:
- 파티셔닝: 대용량_데이터_처리
- 인덱싱: 쿼리_성능_최적화
- 캐싱: Redis_활용_성능_향상
📋 결과물 목록
설계 문서
auth.md- Auth 서비스 데이터 설계서bill-inquiry.md- Bill-Inquiry 서비스 데이터 설계서product-change.md- Product-Change 서비스 데이터 설계서
ERD 다이어그램
auth-erd.puml- Auth 서비스 ERDbill-inquiry-erd.puml- Bill-Inquiry 서비스 ERDproduct-change-erd.puml- Product-Change 서비스 ERD
스키마 스크립트
auth-schema.psql- Auth 서비스 PostgreSQL 스키마bill-inquiry-schema.psql- Bill-Inquiry 서비스 PostgreSQL 스키마product-change-schema.psql- Product-Change 서비스 PostgreSQL 스키마
🎯 설계 완료 확인사항
✅ 데이터독립성원칙 준수: 각 서비스별 독립된 데이터베이스
✅ 클래스설계 연계: Entity 클래스와 1:1 매핑 완료
✅ PlantUML 문법검사: 모든 ERD 파일 검사 통과
✅ 실행가능 스크립트: 바로 실행 가능한 PostgreSQL DDL
✅ 캐시전략 설계: Redis 활용 성능 최적화 방안
✅ 보안설계 완료: 암호화, 접근제어, 감사추적 포함
✅ 성능최적화: 인덱싱, 파티셔닝, 캐싱 전략 완비
다음 단계
- 데이터베이스 설치: 각 서비스별 PostgreSQL 인스턴스 설치
- Redis 설치: 캐시 서버 설치 및 설정
- 스키마 적용: DDL 스크립트 실행
- 모니터링 설정: 성능 모니터링 도구 구성
- 백업 설정: 자동 백업 시스템 구성
설계 완료일: 2025-09-08
설계자: 백엔더 (이개발)
검토자: 아키텍트 (김기획), QA매니저 (정테스트)