본 문서는 Mobile 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 모바일 앱 초기화, 시스템 설정 및 정책 정보 조회, 버전 관리, 캐싱, 보안 등과 관련된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.
바운디드 컨텍스트 참조
- Mobile 도메인은 모바일 앱의 초기화 및 시스템 설정/정책 정보 통합 제공 역할을 수행하며 여러 다른 도메인과 상호작용합니다.
- Auth 도메인: 사용자 인증 토큰 관리, 세션 유효성 검증 등.
- User 도메인: 사용자 프로필 정보, 치료 기간, 사용 기간, 계정 상태 등 조회.
- IAM 도메인: 사용자 플랜, 역할, 권한에 따른 기능 접근 제어 로직.
- Configuration 도메인: 서비스 전반의 설정 정보(API 엔드포인트, 기능 플래그 등) 제공.
- Agreement 도메인: 활성화된 약관 버전 및 내용 제공.
- Questionnaire 도메인: 활성화된 설문지 버전 및 구조 제공.
- Notification/Announcement 도메인: 시스템 공지사항 제공.
- 상세한 컨텍스트 매핑은 각 도메인의
bounded-context.md 또는 requirements.md 문서를 참조하세요.
도메인 이벤트
도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.
1. 앱 초기화 및 시스템 설정 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| AppInitialized | 모바일 앱 초기화가 시작되었음 | InitializeApp (앱 시작 시) |
| IntegratedInfoRequested | 통합 정보 조회가 요청되었음 | RequestIntegratedInfo |
| IntegratedInfoRetrieved | 통합 정보 조회가 성공적으로 완료되었음 | 서버 응답 (요청 처리 성공) |
| SystemSettingsUpdated | 시스템 설정 정보가 업데이트되었음 | Configuration 도메인 변경 사항 반영 |
| AgreementVersionsUpdated | 약관 버전 정보가 업데이트되었음 | Agreement 도메인 변경 사항 반영 |
| QuestionnaireVersionsUpdated | 설문지 버전 정보가 업데이트되었음 | Questionnaire 도메인 변경 사항 반영 |
| AnnouncementUpdated | 공지사항 정보가 업데이트되었음 | Notification/Announcement 도메인 변경 사항 반영 |
| IntegratedInfoCached | 통합 정보가 로컬에 캐싱되었음 | CacheIntegratedInfo |
| IntegratedInfoRetrievalFailed | 통합 정보 조회 실패 | 서버 응답 (요청 처리 실패) |
| AppTokenRefreshed | 앱 토큰이 갱신되었음 | RefreshAppToken |
| AppTokenRefreshFailed | 앱 토큰 갱신 실패 | 서버 응답 (토큰 갱신 실패) |
| CachedDataExpired | 캐싱된 데이터 유효기간 만료 | 시간 경과 또는 유효성 검사 |
| SensitiveDataEncrypted | 민감 정보가 암호화되었음 | EncryptSensitiveData |
| AppVersionCompatibilityChecked | 앱 버전 호환성 검사가 수행되었음 | CheckAppVersionCompatibility |
| ForceUpdateRequired | 강제 업데이트가 필요함 | IsForceUpdateRequired |
| AppIntegrityCheckPassed | 앱 무결성 검사 통과 | CheckAppIntegrity |
2. 앱 운영 및 알림 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| AppEnterBackground | 앱이 백그라운드로 전환되었음 | 사용자 또는 시스템 동작 |
| AppEnterForeground | 앱이 포그라운드로 전환되었음 | 사용자 동작 |
| NetworkStatusChanged | 네트워크 상태가 변경되었음 | 기기 네트워크 변경 |
| OfflineModeActivated | 오프라인 모드가 활성화되었음 | 네트워크 연결 실패 시 |
| OfflineModeDeactivated | 오프라인 모드가 비활성화되었음 | 네트워크 연결 복구 시 |
| NotificationReceived | 푸시 알림이 수신되었음 | 푸시 알림 서비스 |
| ImportantAnnouncementPublished | 중요 공지사항이 게시되었음 | Notification/Announcement 도메인 이벤트 |
| NewAnnouncementNotified | 새 공지사항 알림이 전송되었음 | NotifyNewAnnouncement |
| DataSynchronizationStarted | 데이터 동기화가 시작되었음 | StartDataSynchronization |
| DataSynchronizationCompleted | 데이터 동기화가 완료되었음 | 동기화 프로세스 완료 |
| DataSynchronizationFailed | 데이터 동기화 실패 | 동기화 프로세스 실패 |
3. 보안 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| RootedDeviceDetected | 루팅/탈옥된 기기가 감지되었음 | CheckDeviceSecurity |
| SecurityPolicyViolated | 보안 정책 위반이 감지되었음 | 다양한 보안 검사 |
| SensitiveDataExposureAttempted | 민감 데이터 노출 시도가 감지되었음 | 보안 모니터링 |
| AppIntegrityCheckFailed | 앱 무결성 검사 실패 | CheckAppIntegrity |
| AppIntegrityCheckPassed | 앱 무결성 검사 통과 | CheckAppIntegrity |
4. 사용자 설정 관리 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| UserTreatmentCycleStarted | 사용자의 새로운 치료주기가 시작되었음 | User 도메인에서 발생하는 치료주기 시작 이벤트 |
| UserMobileSettingsResetRequested | 사용자 Mobile App 설정 초기화가 요청되었음 | ResetUserMobileSettings |
| UserMobileSettingsReset | 사용자 Mobile App 설정이 초기화되었음 | 설정 초기화 처리 완료 |
| ScreenshotSettingReset | 스크린샷 허용 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
| AppNotificationSettingReset | 앱 알림 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
| SystemNotificationSettingReset | 시스템 알림 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
| AnalyticsSettingReset | Analytics 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
| HealthKitPermissionReset | iOS HealthKit 접근 권한 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
| HealthConnectPermissionReset | Android Health Connect 접근 권한 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
| LocationPermissionReset | 위치 접근 권한 설정이 초기화되었음 | 치료주기 시작 시 자동 초기화 |
5. 앱 설정 이력 관리 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| AppSettingsNewVersionCreated | AppSettings 새 버전이 생성되었음 (기존 버전 이력 이관) | CreateNewVersionAppSettings |
| AppSettingsHistoryRecorded | AppSettings 변경 이력이 기록되었음 | AppSettings 생성/수정/삭제 시 |
| AppSettingsRolledBack | AppSettings가 이전 버전으로 롤백되었음 | RollbackAppSettings |
| AppSettingsHistoryQueried | AppSettings 변경 이력이 조회되었음 | GetAppSettingsHistory |
| AppSettingsAuditReportGenerated | AppSettings 감사 리포트가 생성되었음 | GenerateAppSettingsAuditReport |
정책(Policies)
시스템의 자동화된 비즈니스 규칙입니다.
앱 초기화 정책
- 앱 시작 시 통합 정보 조회 자동 실행.
- 조회된 통합 정보는 자동으로 로컬에 캐싱.
- 캐싱된 정보의 유효 기간 설정 및 관리.
- 유효 기간 만료 또는 앱 재시작 시 통합 정보 갱신.
- 통합 응답에는 모든 필수 정보(시스템 설정, 약관/설문지 버전, 공지사항 등)를 포함.
버전 관리 정책
- 앱 실행 시 최소 지원 버전 검사 자동 수행.
- 앱 버전이 최소 지원 버전 미만인 경우 강제 업데이트 요구.
- 최신 약관/설문지 버전이 현재 캐싱된 버전과 다른 경우 업데이트 알림.
데이터 보안 정책
- 모든 API 통신은 HTTPS 사용 필수.
- 민감 정보는 안전한 방식으로 암호화하여 저장.
- App Token은 주기적 갱신 및 유효 기간 관리.
- 루팅/탈옥된 기기에서는 보안 정책에 따라 기능 제한.
- 민감 정보는 앱 백그라운드 전환 시 메모리에서 제거.
오프라인 지원 정책
- 네트워크 연결 실패 시 캐싱된 정보 기반으로 제한된 기능 제공.
- 오프라인 상태에서의 작업은 네트워크 복구 시 자동 동기화.
- 필수 기능의 오프라인 동작을 위한 데이터 우선 순위 설정.
에러 처리 정책
- API 요청 실패 시 재시도 메커니즘 적용 (단계적 백오프).
- 반복적인 실패 시 사용자에게 적절한 오류 메시지 제공.
- 치명적인 오류 발생 시 로그 기록 및 서버 보고.
알림 관리 정책
- 중요도에 따른 알림 분류 및 표시 처리.
- 사용자 설정에 따른 알림 필터링.
- 알림 빈도 제한을 통한 사용자 피로 방지.
사용자 설정 초기화 정책
- 새로운 치료주기 시작 시 Mobile App 사용자별 설정을 자동으로 기본값으로 초기화.
- 스크린샷 허용 설정: 개발환경에서는 true, 프로덕션 환경에서는 false로 초기화.
- 앱 알림 및 시스템 알림 설정: 사용자가 새로 설정하도록 유도하거나 시스템 정책에 따른 기본값 적용.
- Analytics 설정: 기본값으로 초기화 (isEnabled: true, 모든 추적 유형: ['all']).
- Health 데이터 접근 권한: iOS HealthKit과 Android Health Connect 접근 권한을 비허용 상태로 초기화하여 사용자가 새로 설정하도록 유도.
- 위치 접근 권한: 날씨정보 제공을 위한 위치 접근 권한을 비허용 상태로 초기화하여 사용자가 새로 설정하도록 유도.
- 설정 초기화는 치료주기 시작 이벤트 수신 시 자동으로 트리거.
앱 설정 이력 관리 정책
- AppSettings 변경 시 자동으로 이력 기록 생성.
- 변경 이력은 삭제되지 않으며, 읽기 전용으로만 접근 허용.
- 버전 번호는 순차적으로 자동 할당.
- 감사 목적으로 모든 변경 사항 추적 가능.
- 정기적인 이력 데이터 아카이빙 및 성능 최적화.
- 변경 이력 조회 시 적절한 권한 검증 수행.
명령(Commands)
도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.
1. 앱 초기화 및 시스템 설정 명령
| 명령 | 설명 | 영향 |
|---|
| InitializeApp | 앱 초기화 프로세스 시작 | AppInitialized 이벤트 발생 |
| RequestIntegratedInfo | 통합 정보 조회 요청 | IntegratedInfoRequested 이벤트 발생 |
| CacheIntegratedInfo | 통합 정보 로컬 캐싱 | IntegratedInfoCached 이벤트 발생 |
| RefreshAppToken | 앱 토큰 갱신 요청 | AppTokenRefreshed 이벤트 발생 |
| CheckCachedDataValidity | 캐싱된 데이터 유효성 검사 | CachedDataExpired 이벤트 가능성 |
| EncryptSensitiveData | 민감 정보 암호화 | SensitiveDataEncrypted 이벤트 발생 |
| CheckAppVersionCompatibility | 앱 버전 호환성 검사 | AppVersionCompatibilityChecked 이벤트 발생 |
| IsForceUpdateRequired | 강제 업데이트 필요 여부 확인 | ForceUpdateRequired 이벤트 가능성 |
| GetAgreementDetails | 특정 버전 약관 상세 내용 조회 | Agreement 도메인 API 호출 |
| GetQuestionnaireStructure | 특정 버전 설문지 구조 조회 | Questionnaire 도메인 API 호출 |
| GetAnnouncementDetails | 공지사항 상세 내용 조회 | Notification/Announcement 도메인 API 호출 |
2. 앱 운영 및 알림 명령
| 명령 | 설명 | 영향 |
|---|
| HandleAppBackground | 앱 백그라운드 전환 처리 | AppEnterBackground 이벤트 발생 |
| HandleAppForeground | 앱 포그라운드 전환 처리 | AppEnterForeground 이벤트 발생 |
| MonitorNetworkStatus | 네트워크 상태 모니터링 | NetworkStatusChanged 이벤트 가능성 |
| ActivateOfflineMode | 오프라인 모드 활성화 | OfflineModeActivated 이벤트 발생 |
| DeactivateOfflineMode | 오프라인 모드 비활성화 | OfflineModeDeactivated 이벤트 발생 |
| ProcessPushNotification | 푸시 알림 처리 | NotificationReceived 이벤트 처리 |
| NotifyNewAnnouncement | 새 공지사항 알림 | NewAnnouncementNotified 이벤트 발생 |
| StartDataSynchronization | 데이터 동기화 시작 | DataSynchronizationStarted 이벤트 발생 |
| CompleteDataSynchronization | 데이터 동기화 완료 처리 | DataSynchronizationCompleted 이벤트 발생 |
3. 보안 명령
| 명령 | 설명 | 영향 |
|---|
| CheckDeviceSecurity | 기기 보안 상태 검사 | RootedDeviceDetected 이벤트 가능성 |
| ApplySecurityPolicy | 보안 정책 적용 | SecurityPolicyViolated 이벤트 가능성 |
| MonitorSensitiveData | 민감 데이터 모니터링 | SensitiveDataExposureAttempted 이벤트 가능성 |
| CheckAppIntegrity | 앱 무결성 검사 | AppIntegrityCheckFailed/Passed 이벤트 발생 |
| SecureLocalStorage | 로컬 저장소 보안 설정 | 데이터 암호화 및 접근 제어 |
4. 사용자 설정 관리 명령
| 명령 | 설명 | 영향 |
|---|
| ResetUserMobileSettings | 사용자 Mobile App 설정 초기화 | UserMobileSettingsReset 이벤트 발생 |
| ResetScreenshotSetting | 스크린샷 허용 설정 초기화 | ScreenshotSettingReset 이벤트 발생 |
| ResetAppNotificationSetting | 앱 알림 설정 초기화 | AppNotificationSettingReset 이벤트 발생 |
| ResetSystemNotificationSetting | 시스템 알림 설정 초기화 | SystemNotificationSettingReset 이벤트 발생 |
| ResetAnalyticsSetting | Analytics 설정 초기화 | AnalyticsSettingReset 이벤트 발생 |
| ResetHealthKitPermission | iOS HealthKit 접근 권한 설정 초기화 | HealthKitPermissionReset 이벤트 발생 |
| ResetHealthConnectPermission | Android Health Connect 접근 권한 설정 초기화 | HealthConnectPermissionReset 이벤트 발생 |
| ResetLocationPermission | 위치 접근 권한 설정 초기화 | LocationPermissionReset 이벤트 발생 |
| ListenUserTreatmentCycleStart | User 도메인의 치료주기 시작 이벤트 구독 | 치료주기 시작 시 자동 설정 초기화 트리거 |
5. 앱 설정 이력 관리 명령
| 명령 | 설명 | 영향 |
|---|
| CreateNewVersionAppSettings | AppSettings 새 버전 생성 (기존 버전 이력 이관) | AppSettingsNewVersionCreated 이벤트 발생 |
| RecordAppSettingsHistory | AppSettings 변경 이력 기록 | AppSettingsHistoryRecorded 이벤트 발생 |
| GetAppSettingsHistory | AppSettings 변경 이력 조회 | AppSettingsHistoryQueried 이벤트 발생 |
| RollbackAppSettings | AppSettings를 특정 버전으로 롤백 | AppSettingsRolledBack 이벤트 발생 |
| GenerateAppSettingsAuditReport | AppSettings 감사 리포트 생성 | AppSettingsAuditReportGenerated 이벤트 발생 |
| ArchiveOldAppSettingsHistory | 오래된 AppSettings 이력 아카이빙 | 성능 최적화 및 데이터 관리 |
액터(Actors)
시스템과 상호작용하는 주체들입니다.
내부 액터
| 액터 | 설명 | 주요 명령 |
|---|
| 모바일 앱 사용자 | 모바일 앱을 실행하는 최종 사용자 | InitializeApp (간접적), GetAgreementDetails, GetQuestionnaireStructure |
| 앱 클라이언트 | 모바일 앱 클라이언트 시스템 | RequestIntegratedInfo, CacheIntegratedInfo, CheckAppVersionCompatibility |
| 백그라운드 서비스 | 앱 내 백그라운드에서 실행되는 서비스 | RefreshAppToken, MonitorNetworkStatus, StartDataSynchronization |
| 보안 모니터 | 앱 보안 상태를 모니터링하는 구성 요소 | CheckDeviceSecurity, ApplySecurityPolicy, CheckAppIntegrity |
| 시스템 관리자 | AppSettings를 관리하는 관리자 | RecordAppSettingsHistory, RollbackAppSettings, GenerateAppSettingsAuditReport |
| 감사 담당자 | 변경 이력을 검토하는 감사 담당자 | GetAppSettingsHistory, GenerateAppSettingsAuditReport |
외부 시스템/도메인 액터
| 액터 | 설명 | 주요 상호작용 |
|---|
| Mobile API 서버 | Mobile 도메인 서비스를 제공하는 서버 | 통합 정보 제공, 앱 토큰 관리 |
| Auth 도메인 | 인증/인가 및 관련 기능 담당 | 사용자 인증 정보 제공 |
| Configuration 도메인 | 시스템 설정 정보 관리 | 시스템 설정 정보 제공 |
| Agreement 도메인 | 약관 관리 | 약관 버전 및 내용 제공 |
| Questionnaire 도메인 | 설문지 관리 | 설문지 버전 및 구조 제공 |
| Notification/Announcement 도메인 | 알림 및 공지사항 관리 | 공지사항 정보 제공 |
| 푸시 알림 서비스 | 모바일 푸시 알림 전송 서비스 | 푸시 알림 전송 (FCM, APNS 등) |
| 앱 스토어 | 앱 배포 및 업데이트 플랫폼 | 앱 업데이트 제공 |
집계(Aggregates)
연관된 엔티티와 값 객체들의 클러스터입니다.
AppSettings 집계
- 루트:
AppSettings
- 엔티티:
FeatureFlags (기능 플래그 목록)
AppVersion (앱 버전 정보)
AgreementVersion (약관 버전 정보)
QuestionnaireVersion (설문지 버전 정보)
AnnouncementSummary (공지사항 요약 정보)
- 값 객체:
MinimumSupportedVersion (Android/iOS 최소 지원 버전)
AuthenticationMethod (지원하는 인증 방식)
FeatureFlag (기능 플래그 정보)
VersionInfo (버전 번호, 릴리스 날짜 등)
CacheTimestamp (캐시 생성 및 만료 시간)
AppToken (앱 인증 토큰)
- 불변식:
- 모든 API 엔드포인트는 유효한 URL 형식을 가짐.
- 앱 토큰은 항상 유효한 상태여야 함 (만료 시 자동 갱신).
- 버전 정보는 의미있는 비교가 가능해야 함 (예: 1.0.0 < 1.0.1).
- 캐시된 데이터는 유효 기간을 초과하면 자동으로 갱신되어야 함.
AppState 집계
- 루트:
AppState
- 엔티티:
NetworkStatus (네트워크 상태 정보)
SecurityState (보안 상태 정보)
NotificationState (알림 상태 정보)
SynchronizationState (동기화 상태 정보)
- 값 객체:
ConnectionType (Wi-Fi, 모바일 데이터 등)
SecurityLevel (보안 수준)
DeviceInfo (기기 정보)
NotificationSettings (알림 설정)
SyncStatus (동기화 상태, 마지막 동기화 시간 등)
- 불변식:
- 네트워크 상태와 오프라인 모드는 일관성을 유지해야 함.
- 보안 수준에 따라 접근 가능한 기능이 결정됨.
- 동기화 중에는 관련 데이터 수정이 제한될 수 있음.
AppSettingsHistory 집계
- 루트:
AppSettingsHistory
- 엔티티:
HistoryRecord (개별 변경 이력 기록)
AuditTrail (감사 추적 정보)
- 값 객체:
VersionNumber (버전 번호)
OperationType (변경 유형: INSERT, UPDATE, DELETE)
ChangeMetadata (변경자, 변경 시점, 변경 사유)
HistorySnapshot (변경 시점의 데이터 스냅샷)
- 불변식:
- 이력 데이터는 수정 불가능하며 읽기 전용이어야 함.
- 버전 번호는 순차적으로 증가해야 함.
- 모든 변경 사항이 추적 가능해야 함.
- 감사 목적으로 장기간 보관되어야 함.
UserMobileSettings 집계
- 루트:
UserMobileSettings
- 엔티티:
ScreenshotSetting (스크린샷 허용 설정)
NotificationSettings (알림 설정)
AnalyticsConfiguration (Analytics 설정)
HealthPermissionSettings (Health 데이터 접근 권한 설정)
- 값 객체:
AppNotificationSetting (앱 알림 허용 여부)
SystemNotificationSetting (시스템 알림 허용 여부)
AnalyticsTrackingConfig (Analytics 추적 설정)
HealthKitPermission (iOS HealthKit 접근 권한)
HealthConnectPermission (Android Health Connect 접근 권한)
LocationPermission (위치 접근 권한)
- 불변식:
- 새로운 치료주기 시작 시 모든 설정이 기본값으로 초기화되어야 함.
- 스크린샷 설정은 환경(개발/프로덕션)에 따른 기본값을 가져야 함.
- Analytics 설정은 AnalyticsConfigurationDto 구조를 따라야 함.
핫스팟 및 해결책
1. 네트워크 불안정성 대응
문제: 모바일 환경에서의 네트워크 불안정성으로 인한 앱 초기화 및 정보 조회 실패
해결책:
- 효율적인 로컬 캐싱 전략으로 오프라인 동작 지원
- 단계적 백오프를 적용한 재시도 메커니즘 구현
- 부분적 데이터 동기화로 네트워크 사용량 최적화
- 네트워크 상태 변화에 따른 adaptive 동작 구현
2. 다중 도메인 데이터 통합
문제: 여러 도메인에서 제공하는 데이터를 효율적으로 통합하고 일관성 유지
해결책:
- 캐시 무효화 전략 및 버전 관리 메커니즘 구현
- 도메인별 데이터 변경 이벤트 구독 및 캐시 업데이트
- 일관성 있는 데이터 형식 및 버전 체계 정의
- 장애 도메인 발생 시에도 부분적 기능 제공 방안 구현
3. 모바일 보안 위협 대응
문제: 루팅/탈옥 기기, 코드 변조, 민감 정보 노출 등 모바일 특화 보안 위협
해결책:
- 다층 보안 검사 및 대응 전략 구현
- 민감 정보 암호화 및 안전한 저장소 활용
- 앱 무결성 검사 및 변조 감지 기능
- 보안 위협 수준에 따른 단계적 기능 제한
4. 앱 버전 관리 복잡성
문제: 다양한 기기와 OS 버전에서의 호환성 유지 및 업데이트 관리
해결책:
- 체계적인 버전 관리 및 호환성 체크 메커니즘
- 강제 업데이트가 필요한 조건 명확화
- 사용자 친화적인 업데이트 안내 프로세스
- 점진적 기능 출시 및 A/B 테스트 지원
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|
| 0.1.0 | 2025-05-15 | bok@weltcorp.com | 최초 작성 |
| 0.2.0 | 2025-06-04 | bok@weltcorp.com | 새로운 치료주기 시작 시 사용자 설정 초기화 관련 이벤트, 명령, 정책, 집계 추가 |
| 0.3.0 | 2025-01-09 | bok@weltcorp.com | AppSettings 이력 관리 관련 이벤트, 명령, 정책, 액터, 집계 추가 - 변경 이력 추적 및 감사 기능 지원 |
| 0.3.1 | 2025-08-03 | bok@weltcorp.com | AppSettings 구조 개선 - Immutable 버전 관리로 변경, CreateNewVersionAppSettings 명령 및 이벤트 추가 |