본문으로 건너뛰기

Mobile 도메인 이벤트 스토밍

개요

본 문서는 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시스템 알림 설정이 초기화되었음치료주기 시작 시 자동 초기화
AnalyticsSettingResetAnalytics 설정이 초기화되었음치료주기 시작 시 자동 초기화
HealthKitPermissionResetiOS HealthKit 접근 권한 설정이 초기화되었음치료주기 시작 시 자동 초기화
HealthConnectPermissionResetAndroid Health Connect 접근 권한 설정이 초기화되었음치료주기 시작 시 자동 초기화
LocationPermissionReset위치 접근 권한 설정이 초기화되었음치료주기 시작 시 자동 초기화

5. 앱 설정 이력 관리 이벤트

이벤트설명트리거
AppSettingsNewVersionCreatedAppSettings 새 버전이 생성되었음 (기존 버전 이력 이관)CreateNewVersionAppSettings
AppSettingsHistoryRecordedAppSettings 변경 이력이 기록되었음AppSettings 생성/수정/삭제 시
AppSettingsRolledBackAppSettings가 이전 버전으로 롤백되었음RollbackAppSettings
AppSettingsHistoryQueriedAppSettings 변경 이력이 조회되었음GetAppSettingsHistory
AppSettingsAuditReportGeneratedAppSettings 감사 리포트가 생성되었음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 이벤트 발생
ResetAnalyticsSettingAnalytics 설정 초기화AnalyticsSettingReset 이벤트 발생
ResetHealthKitPermissioniOS HealthKit 접근 권한 설정 초기화HealthKitPermissionReset 이벤트 발생
ResetHealthConnectPermissionAndroid Health Connect 접근 권한 설정 초기화HealthConnectPermissionReset 이벤트 발생
ResetLocationPermission위치 접근 권한 설정 초기화LocationPermissionReset 이벤트 발생
ListenUserTreatmentCycleStartUser 도메인의 치료주기 시작 이벤트 구독치료주기 시작 시 자동 설정 초기화 트리거

5. 앱 설정 이력 관리 명령

명령설명영향
CreateNewVersionAppSettingsAppSettings 새 버전 생성 (기존 버전 이력 이관)AppSettingsNewVersionCreated 이벤트 발생
RecordAppSettingsHistoryAppSettings 변경 이력 기록AppSettingsHistoryRecorded 이벤트 발생
GetAppSettingsHistoryAppSettings 변경 이력 조회AppSettingsHistoryQueried 이벤트 발생
RollbackAppSettingsAppSettings를 특정 버전으로 롤백AppSettingsRolledBack 이벤트 발생
GenerateAppSettingsAuditReportAppSettings 감사 리포트 생성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.02025-05-15bok@weltcorp.com최초 작성
0.2.02025-06-04bok@weltcorp.com새로운 치료주기 시작 시 사용자 설정 초기화 관련 이벤트, 명령, 정책, 집계 추가
0.3.02025-01-09bok@weltcorp.comAppSettings 이력 관리 관련 이벤트, 명령, 정책, 액터, 집계 추가 - 변경 이력 추적 및 감사 기능 지원
0.3.12025-08-03bok@weltcorp.comAppSettings 구조 개선 - Immutable 버전 관리로 변경, CreateNewVersionAppSettings 명령 및 이벤트 추가