Auth Operation 도메인 이벤트 스토밍
본 문서는 Auth Operation 도메인 요구사항(requirements.md)을 기반으로 Event Storming 방식으로 분석한 결과입니다.
목적
Auth Operation 도메인은 운영자 계정 인증을 담당하는 도메인 입니다. 사용자 계정 생성, 로그인, 토큰 관리 등을 처리합니다.
1. 도메인 이벤트
1.1 토큰 관리
| Event | Description |
|---|---|
| TokenValidated | JWT 토큰 검증이 완료됨 |
| TokenValidationFailed | JWT 토큰 검증이 실패함 |
1.2 회원가입
| Event | Description |
|---|---|
| AccountRegistrationRequested | 계정 등록이 요청됨 |
| AccountCreated | 계정이 생성됨 |
| AccountCreationRejectedDueToDuplicateGroup | 동일 그룹에 이미 소속되어 가입이 거부됨 |
1.3 초대 기반 회원가입
| Event | Description |
|---|---|
| InvitationValidated | 초대 정보가 검증됨 |
| InvitationValidationFailed | 초대 정보 검증이 실패함 (만료/이미 사용/존재하지 않음) |
| AccountCreatedViaInvitation | 초대를 통해 계정이 생성됨 |
| InvitationMarkedAsUsed | 초대가 사용 완료 상태로 표시됨 |
1.4 로그인
| Event | Description |
|---|---|
| LoginAttempted | 로그인이 시도됨 |
| PasswordVerificationFailed | 비밀번호 검증이 실패함 |
| LoginSucceeded | 로그인이 성공함 |
| LoginFailed | 로그인이 실패함 |
| LoginAttemptRecorded | 로그인 실패 시도가 기록됨 |
| LoginAttemptCountReset | 로그인 시도 횟수가 초기화됨 |
| AccountLocked | 계정이 잠김 (5회 연속 실패) |
| AccountLockedLoginAttempted | 잠긴 계정으로 로그인이 시도됨 |
| AccessTokenIssued | 액세스 토큰이 발급됨 |
| RefreshTokenIssued | 리프레시 토큰이 발급됨 |
1.5 세션 관리
| Event | Description |
|---|---|
| SessionCreated | 세션이 생성됨 |
| AccountSessionExpired | 세션이 만료된 계정 |
2. 액터와 명령
각 액터가 수행할 수 있는 명령과 결과 이벤트를 정의합니다.
2.1 토큰 관리 명령
| Command | Actor | Event |
|---|---|---|
| ValidateToken | System | TokenValidated |
2.2 회원가입 명령
| Command | Actor | Event |
|---|---|---|
| RegisterAccount | Account | AccountCreated |
| ValidateInvitation | System | InvitationValidated |
| RegisterAccountViaInvitation | Account | AccountCreatedViaInvitation |
2.3 로그인 명령
| Command | Actor | Event |
|---|---|---|
| Login | Account | LoginSucceeded |
| RecordLoginAttempt | System | LoginAttemptRecorded |
| ResetLoginAttemptCount | System | LoginAttemptCountReset |
| LockAccount | System | AccountLocked |
| IssueAccessToken | System | AccessTokenIssued |
| IssueRefreshToken | System | RefreshTokenIssued |
2.4 세션 관리 명령
| Command | Actor | Event |
|---|---|---|
| CreateSession | System | SessionCreated |
3. Aggregate 매핑
각 명령과 이벤트가 어느 Aggregate에서 처리되는지 정의합니다.
3.1 OperationUser
트랜잭션 경계: 계정의 회원가입 관리
담당 Command:
- RegistsAccount
- RegistsAccountViaInvitation
발행 Event:
- AccountRegistrationRequested
- AccountCreated
- AccountCreationRejectedDueToDuplicateGroup
- AccountCreatedViaInvitation
3.2 OperationUserLogin
트랜잭션 경계: 계정의 로그인 관리
담당 Command:
- Login
- RecordLoginAttempt
- ResetLoginAttemptCount
- LockAccount
발행 Event:
- LoginAttempted
- PasswordVerificationFailed
- LoginSucceeded
- LoginFailed
- LoginAttemptRecorded
- LoginAttemptCountReset
- AccountLocked
- AccountLockedLoginAttempted
- AccessTokenIssued
- RefreshTokenIssued
3.2 Invitation
트랜잭션 경계: 초대의 유효성과 사용 상태를 원자적으로 처리 (계정 생성 시 사용 완료 처리)
담당 Command:
- ValidateInvitation
- RegisterAccountViaInvitation (Account Aggregate와 공유)
발행 Event:
- InvitationValidated
- InvitationValidationFailed
- InvitationMarkedAsUsed
3.3 Token
트랜잭션 경계: 토큰의 생성/검증을 관리
담당 Command:
- Validate
- IssueAccessToken
- IssueRefreshToken
- IssueTemporaryAccessToken
발행 Event:
- TokenValidated
- TokenValidationFailed
- AccessTokenIssued
- RefreshTokenIssued
- TemporaryAccessTokenIssued
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.58.0 | 2025-12-16 | mook@weltcorp.com | 문서 최초 작성 |
| 0.62.0 | 2025-12-29 | jeff@weltcorp.com | Auth 범위 재정렬에 따른 이벤트 스토밍 보강 |