본문으로 건너뛰기

Plan 도메인 요구사항 명세서

1. 기능 요구사항

1.1 플랜(Plan) 생명주기 관리

백엔드 요구사항

  • PLN-FR-BE-001: 플랜을 생성, 조회, 수정, 삭제할 수 있어야 한다. (CRUD)
  • PLN-FR-BE-002: 플랜은 이름, 설명, 상태(활성/비활성) 등의 메타데이터를 가져야 한다. (CRUD)
  • PLN-FR-BE-003: 플랜의 활성/비활성 상태를 관리할 수 있어야 한다. (상태 관리)
  • PLN-FR-BE-004: 플랜 변경 이력을 관리할 수 있어야 한다. (상태 관리)
  • PLN-FR-BE-005: 플랜 생성, 수정, 삭제에 대한 감사 로그를 기록해야 한다. ([Audit 도메인] 의존, 상태 관리)
  • PLN-FR-BE-006: 플랜의 버전 관리를 지원해야 한다. (버전 관리)
  • PLN-FR-BE-007: 플랜 템플릿을 관리하여 신규 플랜 생성을 용이하게 해야 한다. (템플릿 관리)

1.2 플랜 유형 및 분류 관리

백엔드 요구사항

  • PLN-FR-BE-008: 서비스 플랜 유형을 정의하고 관리할 수 있어야 한다. (플랜 유형 관리)
    • 치료 플랜 (Therapeutic Plan): 불면증 진단을 받은 사용자를 대상으로 하는 기본 치료 플랜
    • 제한 플랜 (Limited Access Plan): 치료 플랜 기간이 만료된 사용자를 위한 제한된 기능 플랜
    • 샘플 플랜 (Sample Plan): 체험용 또는 데모용 플랜
    • 게스트 플랜 (Guest Access Plan): 인증 연동 없이 약관 동의만으로 온보딩한 사용자를 위한 제한 플랜
    • 개발 플랜 (Development Plan): 개발 및 테스트 환경용 플랜
    • 클리니션 플랜 (Clinician Plan): 의료진용 전문 플랜
  • PLN-FR-BE-009: 플랜별 서비스 기간을 정의하고 관리할 수 있어야 한다. (서비스 기간 관리)
  • PLN-FR-BE-010: 플랜별 기능 접근 범위를 정의하고 관리할 수 있어야 한다. (기능 범위 관리)
  • PLN-FR-BE-011: 사용자 유형별 플랜을 구분하여 관리해야 한다:
    • 고객(환자) 플랜: 치료 과정, 기능 접근 범위 등 서비스 이용 수준 정의
    • 내부 운영자 플랜: 관리자, 의료진 등 내부 직원의 권한 패키지 정의

1.3 플랜-역할 관계 관리

백엔드 요구사항

  • PLN-FR-BE-012: 하나의 플랜은 여러 개의 역할(Role)을 포함할 수 있어야 한다. (플랜-역할 관계)
  • PLN-FR-BE-013: 플랜에 역할을 추가하거나 제거하는 기능을 제공해야 한다. (플랜-역할 관계)
  • PLN-FR-BE-014: 특정 플랜에 포함된 역할 목록을 조회할 수 있어야 한다. (플랜-역할 관계)
  • PLN-FR-BE-015: 플랜-역할 관계의 변경 이력을 추적할 수 있어야 한다. (관계 이력 관리)
  • PLN-FR-BE-016: 플랜-역할 할당 시 검증 규칙을 적용할 수 있어야 한다. (비즈니스 규칙 검증)

1.4 플랜 기능 및 제한사항 관리

백엔드 요구사항

  • PLN-FR-BE-017: 플랜별 사용 가능한 기능 목록을 정의하고 관리할 수 있어야 한다. (기능 관리)
  • PLN-FR-BE-018: 플랜별 기능 사용 제한사항을 설정할 수 있어야 한다. (제한사항 관리)
    • API 호출 횟수 제한
    • 데이터 저장 용량 제한
    • 동시 접속자 수 제한
    • 특정 기능 접근 시간대 제한
  • PLN-FR-BE-019: 플랜별 서비스 품질(QoS) 수준을 정의할 수 있어야 한다. (QoS 관리)
  • PLN-FR-BE-020: Feature Flag를 통한 플랜별 기능 제어를 지원해야 한다. (Feature Flag 연동)
  • PLN-FR-BE-061: 시스템은 게스트 플랜에 대한 제한 사항과 승격 조건을 정의해야 한다.
    • 게스트 플랜은 건강 데이터 열람, 치료 플로우 진행, 메시징 등 민감 기능에 접근할 수 없어야 한다.
    • 게스트 플랜 사용자는 업그레이드 시 요구되는 추가 동의와 인증 수단을 안내받아야 한다.
    • 게스트 플랜의 제한 사항은 Feature Flag 및 IAM 권한과 연동되어 일관되게 적용되어야 한다.

1.5 플랜 할당 및 변경 관리

백엔드 요구사항

  • PLN-FR-BE-021: 사용자에게 플랜을 직접 할당할 수 있어야 한다. (플랜 할당)
  • PLN-FR-BE-022: 플랜 할당 이력을 추적하고 관리할 수 있어야 한다. (할당 이력 관리)
  • PLN-FR-BE-023: 플랜 변경(업그레이드/다운그레이드) 로직을 지원해야 한다. (플랜 변경)
  • PLN-FR-BE-024: 플랜 변경 시 사용자의 그룹 멤버십은 영향을 받지 않아야 한다. (독립적 변경)
  • PLN-FR-BE-025: 플랜 변경 시 데이터 마이그레이션을 지원해야 한다. (데이터 마이그레이션)
  • PLN-FR-BE-026: 플랜 변경 시 기존 사용자 데이터의 영향도를 분석할 수 있어야 한다. (영향도 분석)
  • PLN-FR-BE-027: 플랜 만료 처리 로직을 지원해야 한다. (만료 처리)

1.6 플랜 모니터링 및 분석

백엔드 요구사항

  • PLN-FR-BE-028: 플랜별 사용 통계를 수집하고 분석할 수 있어야 한다. (사용량 분석)
  • PLN-FR-BE-029: 플랜별 사용자 행동 패턴을 분석할 수 있어야 한다. (행동 분석)
  • PLN-FR-BE-030: 플랜 성능 지표를 모니터링할 수 있어야 한다. (성능 모니터링)
  • PLN-FR-BE-031: 플랜 변경 추천 로직을 지원해야 한다. (추천 시스템)
  • PLN-FR-BE-032: 플랜별 수익성 분석을 지원해야 한다. ([Billing 도메인] 연동, 수익성 분석)

1.7 플랜 규칙 및 정책 관리

백엔드 요구사항

  • PLN-FR-BE-033: 플랜별 비즈니스 규칙을 정의하고 관리할 수 있어야 한다. (비즈니스 규칙)
  • PLN-FR-BE-034: 플랜 간 호환성 규칙을 정의할 수 있어야 한다. (호환성 관리)
  • PLN-FR-BE-035: 플랜 변경 시 적용되는 정책을 관리할 수 있어야 한다. (변경 정책)
  • PLN-FR-BE-036: 플랜별 데이터 보존 정책을 정의할 수 있어야 한다. (데이터 보존 정책)
  • PLN-FR-BE-037: 플랜별 GDPR 준수 규칙을 적용할 수 있어야 한다. (GDPR 준수)

1.8 플랜 통합 및 연동

백엔드 요구사항

  • PLN-FR-BE-038: IAM 도메인과의 연동을 통해 플랜 기반 권한 제어를 지원해야 한다. ([IAM 도메인] 연동)
  • PLN-FR-BE-039: Billing 도메인과의 연동을 통해 플랜별 과금을 지원해야 한다. ([Billing 도메인] 연동)
  • PLN-FR-BE-040: User 도메인과의 연동을 통해 사용자별 플랜 정보를 제공해야 한다. ([User 도메인] 연동)
  • PLN-FR-BE-041: 사용자-플랜 연결은 User 도메인에서 직접 관리되며, Group과 독립적으로 운영된다. (독립적 연동)
  • PLN-FR-BE-042: 외부 시스템과의 플랜 정보 동기화를 지원해야 한다. (외부 연동)

2. 비기능 요구사항

2.1 보안

접근 제어

  • PLN-NFR-001: 모든 플랜 관리 API 요청은 인증 및 인가를 거쳐야 한다.
  • PLN-NFR-002: 플랜 정보 접근은 역할 기반 접근 제어(RBAC)를 통해 제어되어야 한다.
  • PLN-NFR-003: 플랜별 민감 정보는 암호화하여 저장해야 한다.
  • PLN-NFR-004: 플랜 데이터의 무결성을 보장해야 한다.

데이터 보안

  • PLN-NFR-005: 플랜 설정 정보는 암호화하여 저장해야 한다.
  • PLN-NFR-006: 플랜 변경 이력은 변조 방지를 위해 해시 체인으로 관리해야 한다.
  • PLN-NFR-007: 플랜 정보에 대한 모든 접근 및 변경은 감사 로그로 기록되어야 한다.

API 보안

  • PLN-NFR-008: 플랜 관리 API는 입력값 검증을 통해 Injection 공격을 방지해야 한다.
  • PLN-NFR-009: 플랜 조회 API는 Rate Limiting을 적용해야 한다.
  • PLN-NFR-010: 플랜 변경 API는 추가적인 보안 검증을 수행해야 한다.

2.2 성능

응답 시간

  • PLN-NFR-011: 플랜 조회 API 평균 응답 시간: < 50ms
  • PLN-NFR-012: 플랜 목록 조회 API 평균 응답 시간: < 100ms
  • PLN-NFR-013: 플랜 생성/수정 API 평균 응답 시간: < 200ms
  • PLN-NFR-014: 플랜 삭제 API 평균 응답 시간: < 300ms
  • PLN-NFR-015: 플랜-역할 관계 조회 API 평균 응답 시간: < 150ms

처리량

  • PLN-NFR-016: 초당 최소 2000건의 플랜 조회 요청을 처리할 수 있어야 한다.
  • PLN-NFR-017: 초당 최소 100건의 플랜 수정 요청을 처리할 수 있어야 한다.
  • PLN-NFR-018: 초당 최소 50건의 플랜 생성 요청을 처리할 수 있어야 한다.
  • PLN-NFR-019: 초당 최소 200건의 플랜-역할 관계 조회 요청을 처리할 수 있어야 한다.

캐싱 전략

  • PLN-NFR-020: 플랜 정보를 캐싱하여 조회 성능을 향상시켜야 한다.
  • PLN-NFR-021: 플랜-역할 관계 정보를 캐싱해야 한다.
  • PLN-NFR-022: 플랜별 기능 목록을 캐싱해야 한다.
  • PLN-NFR-023: 캐시 데이터의 일관성을 유지하기 위한 적절한 무효화 전략을 사용해야 한다.

2.3 가용성

서비스 가용성

데이터 가용성

  • (공통 정책 참조) 백업/복구는 Platform 도메인 기준을 따른다: PLT-NFR-006

2.4 확장성

수평적 확장

  • (공통 정책 참조) 확장성/로드 밸런싱은 Platform 도메인 기준을 따른다: PLT-NFR-001, PLT-NFR-003

기능 확장성

  • PLN-NFR-032: 새로운 플랜 유형을 쉽게 추가할 수 있어야 한다.
  • PLN-NFR-033: 플랜별 사용자 정의 속성을 추가할 수 있도록 확장 가능해야 한다.
  • PLN-NFR-034: 외부 시스템과의 연동이 용이해야 한다.

2.5 사용자 유형별 플랜 관리

  • PLN-NFR-035: 모든 플랜 설정을 관리할 수 있어야 한다. (System Admin)
  • PLN-NFR-036: 모든 플랜의 상태를 관리할 수 있어야 한다. (System Admin)
  • PLN-NFR-037: 플랜 생성, 수정, 삭제가 가능해야 한다. (System Admin)
  • PLN-NFR-038: API 호출 제한 없이 사용할 수 있어야 한다. (System Admin)
  • PLN-NFR-039: 할당된 범위 내 플랜의 상태를 관리할 수 있어야 한다. (Plan Admin)
  • PLN-NFR-040: 플랜 정보를 조회하고 수정할 수 있어야 한다. (Plan Admin)
  • PLN-NFR-041: 시간당 최대 5,000 요청으로 제한되어야 한다. (Plan Admin)
  • PLN-NFR-042: 플랜 정보를 조회할 수 있어야 한다. (Service Account)
  • PLN-NFR-043: 플랜-역할 관계를 조회할 수 있어야 한다. (Service Account)
  • PLN-NFR-044: 시간당 최대 50,000 요청으로 제한되어야 한다. (Service Account)
  • PLN-NFR-045: 자신이 속한 플랜 정보만 조회할 수 있어야 한다. (Regular User)
  • PLN-NFR-046: 시간당 최대 50 요청으로 제한되어야 한다. (Regular User)

3. 제약사항

3.1 데이터 제약사항

플랜 데이터

  • PLN-CR-001: 플랜 이름은 시스템 내에서 고유해야 한다.
  • PLN-CR-002: 플랜 식별자는 생성 후 변경할 수 없다.
  • PLN-CR-003: 하나의 플랜에 할당될 수 있는 역할의 최대 개수는 100개로 제한한다.
  • PLN-CR-004: 플랜 설명의 최대 길이는 1000자로 제한한다.

플랜-역할 관계 데이터

  • PLN-CR-005: 플랜과 역할 간의 관계는 순환 참조를 허용하지 않는다.
  • PLN-CR-006: 하나의 역할은 최대 50개의 플랜에 할당될 수 있다.
  • PLN-CR-007: 플랜-역할 관계의 메타데이터 최대 크기는 1KB로 제한한다.

플랜 기능 데이터

  • PLN-CR-008: 플랜별 기능 목록의 최대 개수는 200개로 제한한다.
  • PLN-CR-009: 기능별 제한사항 설정의 최대 크기는 2KB로 제한한다.

3.2 API 호출 제한

System Admin 제한사항

  • PLN-CR-010: Rate Limit: 무제한
  • PLN-CR-011: 권한 검증 결과 캐시의 TTL은 1분으로 설정한다.
  • PLN-CR-012: 최대 동시 요청 수는 무제한이다.

Plan Admin 제한사항

  • PLN-CR-013: Rate Limit: 시간당 5,000 요청으로 제한한다.
  • PLN-CR-014: 권한 검증 결과 캐시의 TTL은 5분으로 설정한다.
  • PLN-CR-015: 최대 동시 요청 수는 50개로 제한한다.

Service Account 제한사항

  • PLN-CR-016: Rate Limit: 시간당 50,000 요청으로 제한한다.
  • PLN-CR-017: 권한 검증 결과 캐시의 TTL은 10분으로 설정한다.
  • PLN-CR-018: 최대 동시 요청 수는 100개로 제한한다.

Regular User 제한사항

  • PLN-CR-019: Rate Limit: 시간당 50 요청으로 제한한다.
  • PLN-CR-020: 권한 검증 결과 캐시의 TTL은 30분으로 설정한다.
  • PLN-CR-021: 최대 동시 요청 수는 5개로 제한한다.

3.3 데이터 저장 제약

  • PLN-CR-022: 플랜 정보는 'plan' 스키마에 저장해야 한다.
  • PLN-CR-023: 플랜-역할 관계 정보는 'plan' 스키마에 저장해야 한다.
  • PLN-CR-024: 플랜 변경 이력은 'plan' 스키마에 저장해야 한다.
  • PLN-CR-025: 플랜별 기능 및 제한사항 정보는 'plan' 스키마에 저장해야 한다.
  • PLN-CR-026: 민감 정보는 항상 암호화되어 저장되어야 한다.

4. 가정사항

4.1 시스템 환경

  • PLN-AR-001: 시스템은 마이크로서비스 아키텍처 기반으로 구축된다.
  • PLN-AR-002: 시스템은 클라우드 환경(예: GCP)에서 운영된다.
  • PLN-AR-003: Event-driven 아키텍처를 통해 다른 도메인과 통신한다.

4.2 사용자 환경

  • PLN-AR-004: 관리자는 별도의 관리 콘솔을 통해 플랜을 관리한다.
  • PLN-AR-005: 일반 사용자는 자신의 플랜 정보를 조회할 수 있다.
  • PLN-AR-006: 서비스 계정은 다른 시스템과의 연동을 위해 플랜 정보 API를 호출한다.

4.3 비즈니스 환경

  • PLN-AR-007: 플랜은 비즈니스 요구사항에 따라 동적으로 변경될 수 있다.
  • PLN-AR-008: 플랜 변경은 사용자에게 영향을 최소화하는 방향으로 수행된다.
  • PLN-AR-009: 플랜별 차별화된 서비스 제공이 비즈니스 핵심 가치이다.

5. 의존성

5.1 내부 의존성

  • PLN-DR-001: IAM 도메인: 플랜-역할 관계 정보 제공, 플랜 기반 권한 검증
  • PLN-DR-002: User 도메인: 사용자별 플랜 할당 정보 참조 및 관리
  • PLN-DR-003: Billing 도메인: 플랜별 과금 정보 연동, 결제 상태 확인
  • PLN-DR-004: Audit 도메인: 플랜 변경, 할당 등 주요 작업에 대한 감사 로그 기록
  • PLN-DR-005: Analytics 도메인: 플랜 사용량 분석, 플랜 성능 지표 수집

5.2 외부 의존성

  • PLN-DR-006: Feature Flag 시스템: 플랜별 기능 제어를 위한 외부 Feature Flag 서비스
  • PLN-DR-007: 결제 시스템: 플랜 변경 시 결제 처리를 위한 외부 결제 게이트웨이
  • PLN-DR-008: 알림 시스템: 플랜 변경, 만료 등의 이벤트 알림 전송

6. GDPR 컴플라이언스 (개인정보 보호)

6.1 플랜별 개인정보 처리

백엔드 요구사항

  • PLN-FR-BE-045: 시스템은 플랜별 개인정보 처리 범위를 정의해야 한다.
    • 플랜별 수집 가능 데이터 정의
    • 플랜 변경 시 데이터 처리 영향 평가
    • 플랜별 보관 기간 차별화
    • 플랜 다운그레이드 시 데이터 처리
  • PLN-FR-BE-046: 시스템은 플랜 만료 시 데이터를 처리해야 한다.
    • Limited Access 전환 시 데이터 보존
    • 서비스 종료 시 데이터 보관/삭제
    • 플랜별 데이터 익명화 규칙
    • 사용자 통지 자동화

6.2 플랜 변경과 개인정보

백엔드 요구사항

  • PLN-FR-BE-047: 시스템은 플랜 변경 시 개인정보 영향을 평가해야 한다.
    • 업그레이드 시 추가 데이터 수집 동의
    • 다운그레이드 시 기능 제한 경고
    • 데이터 이전 필요성 평가
    • 변경 전 백업 생성

6.3 플랜별 데이터 주체 권리

백엔드 요구사항

  • PLN-FR-BE-055: 시스템은 플랜별 데이터 주체 권리를 차별화해야 한다.
    • Therapeutic Plan: 의료 데이터 열람권 강화
    • Limited Access: 제한된 데이터 접근 권리
    • Sample Plan: 체험용 데이터 즉시 삭제 가능
    • 플랜별 데이터 이동권 범위 정의
  • PLN-FR-BE-056: 시스템은 플랜 기반 동의 관리를 지원해야 한다.
    • 플랜별 필수/선택 동의 항목 차별화
    • 플랜 변경 시 새로운 동의 획득
    • 동의 철회 시 플랜 자동 조정
    • 부분 동의 시 제한된 플랜 제공

6.4 지역별 플랜 규제 준수

백엔드 요구사항

  • PLN-FR-BE-057: 시스템은 지역별 규제에 맞는 플랜을 제공해야 한다.
    • EU 지역: GDPR 완전 준수 플랜
    • 한국 지역: 개인정보보호법 준수 플랜
    • 미국 지역: HIPAA 준수 의료 플랜
    • 지역별 데이터 로컬라이제이션
  • PLN-FR-BE-058: 시스템은 국경 간 플랜 이전을 관리해야 한다.
    • 적절성 결정 국가 간 자동 이전
    • SCC 기반 플랜 이전 절차
    • 이전 불가 국가 플랜 제한
    • 이전 기록 및 감사 추적

6.5 플랜 데이터 거버넌스

백엔드 요구사항

  • PLN-FR-BE-059: 시스템은 플랜별 데이터 라이프사이클을 관리해야 한다.
    • 플랜별 데이터 수집 정책
    • 보관 기간 자동 적용
    • 만료 데이터 자동 익명화
    • 플랜 종료 시 데이터 처리 절차
  • PLN-FR-BE-060: 시스템은 플랜 기반 개인정보 영향평가를 지원해야 한다.
    • 신규 플랜 출시 전 DPIA 수행
    • 플랜 변경 시 영향 평가
    • 위험 등급별 플랜 분류
    • DPIA 결과 기반 플랜 조정

7. ISO27001 정보보호 관리

7.1 플랜 기반 보안

백엔드 요구사항

  • PLN-FR-BE-048: 시스템은 플랜별 보안 수준을 차별화해야 한다.
    • Therapeutic: 의료 데이터 보호 강화
    • Limited Access: 제한된 기능 접근
    • Sample: 테스트 데이터 분리
    • 플랜별 암호화 수준
  • PLN-FR-BE-049: 시스템은 플랜 관리 체계를 보호해야 한다.
    • 플랜 생성/수정 권한 통제
    • 플랜 변경 승인 프로세스
    • 변경 이력 감사 로그
    • 비인가 변경 방지

7.2 플랜 연속성 관리

백엔드 요구사항

  • PLN-FR-BE-050: 시스템은 플랜 서비스 연속성을 보장해야 한다.
    • 플랜 만료 사전 경고 (30일, 7일, 1일 전)
    • 자동 갱신 메커니즘
    • 플랜 전환 중 서비스 중단 방지
    • 장애 시 비상 플랜 적용

변경 이력

버전날짜작성자변경 내용
1.0.02025-04-27bok@weltcorp.com최초 문서 생성 (IAM 도메인에서 Plan 관련 요구사항 분리)
1.1.02025-07-16bok@weltcorp.comGroup-Plan 독립성 확보 - 사용자가 플랜을 직접 가지도록 변경, Group 의존성 제거
1.2.02025-08-07bok@weltcorp.com요구사항 ID 체계 적용 - PLN 도메인 코드 적용 (PLN-FR-BE-xxx, PLN-NFR-xxx, PLN-CR-xxx, PLN-AR-xxx, PLN-DR-xxx)
1.3.02025-08-12bok@weltcorp.comGDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 플랜별 개인정보 처리, 플랜 기반 보안
1.4.02025-10-27bok@weltcorp.com게스트 플랜 유형과 제한/승격 요구사항 추가 (1.2, 1.4절)