본문으로 건너뛰기

User 도메인 개요

1. 소개​

User 도메인은 시스템 사용자의 핵심 정보(계정, 프로필, 상태, 유형 등)를 관리하고, 서비스 이용 기간, 개인정보 보호 관련 기능을 제공하며, 다른 도메인과의 사용자 관련 상호작용의 중심점 역할을 수행합니다.

2. 폴더 구조​

  • technical-docs/ - 기술 문서 (구현 상세, 오류 처리 가이드 등)
  • business-rules.md - 비즈니스 규칙
  • bounded-context.md - 바운디드 컨텍스트 정의
  • domain-model.md - 도메인 모델 (엔티티, 값 객체, Prisma 스키마 등)
  • endpoints.md - API 엔드포인트 목록
  • event-storming.md - 이벤트 스토밍 결과
  • glossary.md - 용어 사전 (필요시 생성)
  • overview.md - 도메인 개요 (현재 문서)
  • requirements.md - 요구사항
  • test-spec.md - 테스트 명세 (필요시 생성)

기술 문서는 technical-docs/ 디렉토리 내에 구현, 오류 처리, 특정 기능 구현 가이드 등으로 구성됩니다.

3. 유비쿼터스 언어 (Ubiquitous Language)​

  • User: 시스템 사용자 계정 엔티티
  • UserProfile: 사용자 프로필 정보 (언어, 타임존 등)
  • UserStatus: 사용자 계정 상태 (ACTIVE, INACTIVE, PENDING, LOCKED, SUSPENDED, BANNED)
  • UserType: 사용자 유형 (USER, SERVICE_ACCOUNT)
  • UserId: 사용자 고유 식별자 (UUID)
  • Email: 사용자 이메일 주소 (Auth 도메인 관리, User는 참조)
  • UserName: 사용자 이름
  • ServiceUsagePeriod: 사용자 서비스 이용 기간 관련 정보 집합 (시작일, 만료일, 중단/재개 이력 등)
  • isSuspended: 서비스 이용 기간 중단 여부 플래그
  • expiresAt: (계산된) 서비스 만료일
  • UserSuspensionHistory: 서비스 이용 기간 중단/재개 상세 이력

상세 도메인 모델은 도메인 모델 문서를 참조하세요.

4. 주요 기능​

  1. 사용자 계정 관리: 생성, 조회, 수정, 상태 관리 (ACTIVE, INACTIVE 등)
  2. 사용자 프로필 관리: 이름, 언어, 타임존 등 개인화 정보 관리
  3. 사용자 유형 관리: 일반 사용자(USER)와 서비스 계정(SERVICE_ACCOUNT) 구분 및 관리
  4. 서비스 이용 기간 관리: 서비스 이용 기간 설정, 중단, 재개, 만료일 계산 및 관련 이력 관리
  5. 개인정보 보호 기능 지원: GDPR 등 규정 준수를 위한 데이터 접근 및 삭제/익명화 요청 처리 지원
  6. 상태/이력 관리: 계정 상태 변경 이력, 서비스 이용 중단 이력 추적
  7. 타 도메인 연동 지원: IAM(그룹, 플랜 연결 정보), Auth(인증 상태 연계), Sleep(사용자 식별) 등 다른 도메인과 사용자 정보 연동

기능별 상세 구현은 technical-docs/ 디렉토리 내 관련 문서를 참조하세요.

5. 핵심 정책 및 규칙​

  • 신규 사용자 계정은 PENDING 상태로 시작하며, 이메일 인증 후 ACTIVE 상태로 전환됩니다.
  • 서비스 이용 기간 중단 시, 중단된 기간만큼 만료일이 연장됩니다.
  • 사용자 상태 변경 및 서비스 이용 기간 변경 시 이력을 기록합니다.
  • 개인 식별 정보(PII)는 암호화하여 private 스키마에 저장합니다.
  • USER 타입 사용자는 반드시 하나 이상의 그룹 및 하나의 플랜에 연결되어야 합니다 (IAM 연동).

전체 정책 및 규칙은 비즈니스 규칙 문서를 참조하세요.

6. 주요 프로세스 흐름 (예시)​

6.1 사용자 가입 및 활성화 흐름​

6.2 서비스 이용 기간 중단/재개 흐름​

7. 기술 스택​

  • NestJS
  • TypeScript
  • PostgreSQL (주 데이터 저장소, private 및 user 스키마 사용)
  • Prisma (ORM)
  • (필요시) Redis (캐싱 등)
  • (필요시) GCP Pub/Sub 또는 Kafka (이벤트 메시징)

8. 도메인 모델 개요​

User 도메인의 핵심 모델은 User, UserProfile, UserStatusHistory, UserSuspensionHistory 엔티티와 관련 값 객체(UserId, Email, UserStatus 등)로 구성됩니다. User 엔티티는 Auth 도메인과 공유되는 private.users 테이블에 해당하며, User Aggregate의 루트 역할을 합니다.

상세 도메인 모델 및 Prisma 스키마는 도메인 모델 문서를 참조하세요.

9. 컨텍스트 경계​

User 도메인은 사용자 정보 관리의 중심 역할을 하며 여러 도메인과 상호작용합니다.

  • Upstream (User가 의존하는): Auth(인증), IAM(그룹/플랜 정의), Access Code(가입 시 코드 검증)
  • Downstream (User 정보를 사용하는): Sleep(사용자 식별), Learning(사용자 식별), Audit(로그 기록)
  • Peer (상호 협력): IAM (사용자-그룹/플랜 연결 정보 관리)

바운디드 컨텍스트에 대한 상세 내용은 바운디드 컨텍스트 문서를 참조하세요.

10. 도메인 이벤트​

  • UserCreated, UserActivated, UserDeactivated, UserReactivated: 계정 생명주기 이벤트
  • UserProfileUpdated, UserNameUpdated, UserLanguagePreferenceUpdated, UserTimezoneUpdated: 프로필 변경 이벤트
  • UserLocked, UserUnlocked, UserSuspended, UserUnsuspended, UserBanned: 계정 상태 변경 이벤트 (관리/시스템)
  • UserAssignedToGroup, UserRemovedFromGroup, UserLinkedToPlan, UserUnlinkedFromPlan: IAM 연동 결과 이벤트
  • ServicePeriodSuspended, ServicePeriodResumed, ServicePeriodExpired: 서비스 이용 기간 상태 변경 이벤트
  • UserDataDeletionRequested, UserDataAccessRequested: 개인정보 관련 요청 이벤트

전체 이벤트 목록 및 설명은 이벤트 스토밍 문서를 참조하세요.

11. 모니터링 및 감사 (예상)​

  • 사용자 상태 변경 빈도 및 추이
  • 서비스 중단/재개 요청 빈도
  • 만료 예정 사용자 수
  • API 응답 시간 (사용자 조회, 수정 등)
  • 개인정보 관련 요청 처리 현황
  • 관련 도메인(IAM, Auth) 연동 성공/실패율
  • 주요 상태 변경 및 개인정보 관련 작업에 대한 감사 로그 ([Audit 도메인] 연동)

12. 핵심 요구사항​

  • 사용자 계정 및 프로필 정보의 정확한 관리
  • 정의된 규칙에 따른 사용자 상태 및 서비스 이용 기간 관리
  • GDPR 등 개인정보 보호 규정 준수
  • IAM 도메인과의 연동을 통한 역할 및 플랜 기반 접근 제어 지원
  • 안정적인 성능 및 확장성 보장 (최소 1만 사용자 지원)

상세 요구사항은 요구사항 문서를 참조하세요.

13. 관련 문서​

TBD

14. 변경 이력​

버전날짜작성자변경 내용
0.1.02025-07-30AI Assistant최초 작성