본 문서는 Group 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. Group 도메인 요구사항 명세서(requirements.md)와 비즈니스 규칙 문서(business-rules.md)를 기반으로 도출된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.
바운디드 컨텍스트 참조
Group 도메인은 다른 도메인(IAM, User, Audit 등)과 상호작용합니다. 특히 IAM 도메인의 역할 및 권한 관리, User 도메인의 사용자 정보에 의존합니다. 감사 기능은 Audit 도메인(supporting-domains/audit)에서 제공됩니다. Plan 도메인과는 독립적으로 운영되며, 서로 다른 차원의 권한을 제공합니다. 자세한 내용은 각 도메인 문서를 참조하십시오.
도메인 이벤트
도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.
1. 그룹(Group) 생명주기 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| GroupCreated | 새 그룹이 생성되었음 | CreateGroup |
| GroupRead | 그룹 정보가 조회되었음 | GetGroup |
| GroupUpdated | 그룹 정보가 수정되었음 | UpdateGroup |
| GroupDeleted | 그룹이 삭제되었음 | DeleteGroup |
| GroupActivated | 그룹이 활성화 상태로 변경됨 | ActivateGroup |
| GroupDeactivated | 그룹이 비활성화 상태로 변경됨 | DeactivateGroup |
| GroupDeprecated | 그룹이 폐기 예정 상태로 변경됨 | DeprecateGroup |
| GroupArchived | 그룹이 보관 상태로 변경됨 | ArchiveGroup |
| GroupValidationFailed | 그룹 생성/수정 시 유효성 검증 실패 | CreateGroup, UpdateGroup |
2. 그룹 유형 및 분류 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| PatientGroupCreated | 환자 그룹이 생성되었음 | CreatePatientGroup |
| OperationGroupCreated | 운영자 그룹이 생성되었음 | CreateOperationGroup |
| DevelopmentGroupCreated | 개발 그룹이 생성되었음 | CreateDevelopmentGroup |
| GroupTypeChanged | 그룹 유형이 변경되었음 | ChangeGroupType |
| GroupCategoryAssigned | 그룹에 카테고리가 할당되었음 | AssignGroupCategory |
| ClinicGroupCreated | 클리닉별 그룹이 생성되었음 | CreateClinicGroup |
| GuestGroupCreated | 게스트 전용 그룹이 생성되었음 (patients.guest.{region}) | CreateGuestGroup |
3. 그룹-역할 연결 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| RoleAssignedToGroup | 그룹에 역할이 할당되었음 | AssignRoleToGroup |
| RoleUnassignedFromGroup | 그룹에서 역할이 해제되었음 | UnassignRoleFromGroup |
| GroupRolesChanged | 그룹의 역할이 변경되었음 | ChangeGroupRoles |
| GroupRoleValidationFailed | 그룹-역할 할당 시 검증 실패 | AssignRoleToGroup |
| GroupRolesSynchronized | 그룹-역할 연결이 동기화되었음 | SynchronizeGroupRoles |
4. 사용자-그룹 할당 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| UserAssignedToGroup | 사용자가 그룹에 할당되었음 | AssignUserToGroup |
| GuestAssignedToGuestGroup | 게스트 사용자가 게스트 그룹에 자동 할당되었음 | AssignGuestToGuestGroup (auth.guest.onboarded) |
| UserUnassignedFromGroup | 사용자가 그룹에서 해제되었음 | UnassignUserFromGroup |
| UserGroupBatchAssigned | 여러 사용자가 그룹에 일괄 할당되었음 | BatchAssignUsersToGroup |
| UserGroupBatchUnassigned | 여러 사용자가 그룹에서 일괄 해제되었음 | BatchUnassignUsersFromGroup |
| UserGroupAssignmentValidationFailed | 사용자-그룹 할당 시 검증 실패 | AssignUserToGroup |
| UserGroupConflictDetected | 사용자 그룹 할당 충돌이 감지되었음 | ValidateUserGroupAssignment |
| GuestGroupMigrationCompleted | 게스트 사용자가 정규 그룹으로 이관되었음 | MigrateGuestToRegisteredGroup (Step-up 후) |
5. 그룹 계층 구조 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| GroupHierarchyCreated | 그룹 계층 구조가 생성되었음 | CreateGroupHierarchy |
| ParentGroupAssigned | 그룹에 부모 그룹이 할당되었음 | AssignParentGroup |
| ChildGroupAdded | 그룹에 자식 그룹이 추가되었음 | AddChildGroup |
| GroupHierarchyUpdated | 그룹 계층 구조가 수정되었음 | UpdateGroupHierarchy |
| GroupHierarchyValidationFailed | 그룹 계층 구조 검증 실패 (순환 참조 등) | CreateGroupHierarchy |
| GroupInheritanceApplied | 그룹 상속이 적용되었음 | ApplyGroupInheritance |
6. 그룹 템플릿 및 프리셋 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| GroupTemplateCreated | 그룹 템플릿이 생성되었음 | CreateGroupTemplate |
| GroupTemplateApplied | 그룹 템플릿이 적용되었음 | ApplyGroupTemplate |
| GroupTemplateUpdated | 그룹 템플릿이 수정되었음 | UpdateGroupTemplate |
| DefaultGroupSet | 기본 그룹이 설정되었음 | SetDefaultGroup |
| GroupCopied | 그룹이 복사되었음 | CopyGroup |
| GroupPresetConfigured | 그룹 프리셋이 설정되었음 | ConfigureGroupPreset |
7. 동적 그룹 관리 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| DynamicGroupRuleCreated | 동적 그룹 규칙이 생성되었음 | CreateDynamicGroupRule |
| DynamicGroupRuleEvaluated | 동적 그룹 규칙이 평가되었음 | EvaluateDynamicGroupRule |
| UserAutomaticallyAssigned | 사용자가 자동으로 그룹에 할당되었음 | 동적 규칙 평가 결과 |
| UserAutomaticallyUnassigned | 사용자가 자동으로 그룹에서 해제되었음 | 동적 규칙 평가 결과 |
| TemporaryGroupCreated | 임시 그룹이 생성되었음 | CreateTemporaryGroup |
| TemporaryGroupExpired | 임시 그룹이 만료되었음 | 자동 만료 프로세스 |
8. 그룹 모니터링 및 분석 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| GroupUsageMonitored | 그룹 사용량이 모니터링되었음 | 자동 모니터링 |
| GroupMetricsCalculated | 그룹 지표가 계산되었음 | CalculateGroupMetrics |
| GroupPerformanceAnalyzed | 그룹 성능이 분석되었음 | AnalyzeGroupPerformance |
| GroupUsageAlertTriggered | 그룹 사용량 알림이 발생했음 | 자동 알림 시스템 |
| EmptyGroupDetected | 빈 그룹이 감지되었음 | 자동 모니터링 |
| GroupCleanupRecommended | 그룹 정리가 권장되었음 | AnalyzeGroupUsage |
9. 조직 연동 및 통합 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| GroupOrganizationSynced | 그룹이 조직 구조와 동기화되었음 | SyncGroupWithOrganization |
| GroupHRIntegrated | 그룹이 HR 시스템과 통합되었음 | IntegrateGroupWithHR |
| GroupLDAPSynced | 그룹이 LDAP와 동기화되었음 | SyncGroupWithLDAP |
| GroupCRMIntegrated | 그룹이 CRM 시스템과 통합되었음 | IntegrateGroupWithCRM |
| GroupEventPublished | 그룹 관련 이벤트가 이벤트 버스에 발행되었음 | 모든 그룹 변경 시 |
정책(Policies)
시스템의 자동화된 비즈니스 규칙입니다.
1. 그룹 데이터 및 스키마 정책
- Group 도메인 관련 모든 데이터는
group PostgreSQL 스키마에 저장되어야 함
- 그룹 이름(
name)은 시스템 내에서 고유해야 함
- 그룹 식별자(
id)는 생성 후 변경 불가
- 그룹 코드(
code)가 있는 경우 시스템 내에서 고유해야 함
2. 그룹 유형 및 분류 정책
- 그룹은 사용자 유형(환자/내부 운영자/개발자)에 따라 분류됨
- 그룹은 기능별 역할(임상/기술/지원)에 따라 분류됨
- 그룹은 조직 구조(부서/팀/클리닉)에 따라 분류될 수 있음
- 표준 그룹 유형은 사전 정의됨 (patients, operators, testers, developers)
3. 그룹 생명주기 정책
- 그룹은 ACTIVE, INACTIVE, DEPRECATED, ARCHIVED 상태를 가짐
- 그룹 변경 시 버전 관리를 지원해야 함
- 그룹 구조 변경 시 기존 사용자에 대한 영향을 분석해야 함
- 그룹 마이그레이션은 단계적으로 진행되어야 함
4. 그룹-역할 연결 정책
- 그룹은 여러 역할(Role)을 가질 수 있음 (다대다 관계)
- 그룹의 역할 변경은 비즈니스 규칙에 따라 검증되어야 함
- 역할 변경 시 해당 그룹의 모든 사용자에게 영향을 미침
- 그룹에 할당된 역할은 해당 그룹의 모든 멤버에게 적용됨
5. 사용자-그룹 할당 정책
- 사용자는 하나 이상의 그룹에 속할 수 있음 (다대다 관계)
- 모든 사용자는 최소 하나 이상의 그룹에 속해야 함
- 사용자 유형에 따라 적절한 그룹 유형에만 할당될 수 있음
- 사용자가 상충되는 그룹에 동시 할당되는 것을 방지해야 함
- 게스트 사용자는 온보딩 시 반드시
patients.guest.{region} 그룹에 자동 할당되어야 함
- Step-up 완료 시 게스트 그룹 멤버십을 종료하고 등록 사용자 그룹으로 이관해야 함 (게스트 멤버십 이력 기록)
6. 그룹 계층 구조 정책
- 그룹 간 부모-자식 관계를 설정할 수 있음
- 계층 구조는 최대 3단계까지 지원
- 순환 참조는 허용되지 않음
- 자식 그룹은 부모 그룹의 특성을 상속받을 수 있음
7. 그룹 템플릿 및 프리셋 정책
- 사용자 유형별 기본 그룹을 지정할 수 있음
- 새로운 사용자 등록 시 자동으로 기본 그룹에 할당됨
- 기본 그룹은 삭제할 수 없음
- 자주 사용되는 그룹 구성을 템플릿으로 저장할 수 있음
8. 동적 그룹 정책
- 특정 조건을 만족하는 사용자를 자동으로 그룹에 할당할 수 있음
- 사용자 상태 변경 시 동적으로 그룹 할당을 업데이트함
- 조건식의 복잡도는 제한하여 성능을 보장해야 함
- 임시 그룹 만료 시 자동으로 사용자를 기본 그룹으로 이동함
9. 그룹 모니터링 및 분석 정책
- 그룹별 사용자 수를 실시간으로 모니터링해야 함
- 그룹별 활동 패턴을 추적해야 함
- 그룹 사용자 수가 임계치를 초과할 때 알림을 발송해야 함
- 빈 그룹이나 미사용 그룹에 대한 정리 알림을 제공해야 함
10. 보안 및 접근 제어 정책
- 그룹 정보에 대한 접근은 적절한 권한을 가진 사용자만 가능
- 그룹 수정은 관리자 권한을 가진 사용자만 수행할 수 있음
- 민감한 그룹 정보는 암호화하여 저장해야 함
- 모든 그룹 관련 활동을 감사 로그로 기록해야 함
11. 성능 및 캐싱 정책
- 그룹 조회 API 평균 응답 시간: < 50ms
- 사용자-그룹 할당 API 평균 응답 시간: < 100ms
- 그룹 정보를 캐싱하여 조회 성능을 향상시켜야 함
- 사용자-그룹 매핑 정보를 캐싱해야 함
12. 데이터 제약 정책
- 그룹 이름은 시스템 내에서 고유해야 함
- 그룹 설명의 최대 길이는 500자로 제한
- 그룹에 할당될 수 있는 사용자의 최대 개수는 10,000명으로 제한
- 기본 그룹으로 지정된 그룹은 삭제할 수 없음
명령(Commands)
도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.
1. 그룹 생명주기 명령
| 명령 | 설명 | 영향 |
|---|
| CreateGroup | 새 그룹 생성 | GroupCreated 또는 GroupValidationFailed 이벤트 발생 |
| GetGroup | 그룹 정보 조회 | GroupRead 이벤트 발생 |
| UpdateGroup | 그룹 정보 수정 | GroupUpdated 또는 GroupValidationFailed 이벤트 발생 |
| DeleteGroup | 그룹 삭제 | GroupDeleted 이벤트 발생 |
| ActivateGroup | 그룹 활성화 | GroupActivated 이벤트 발생 |
| DeactivateGroup | 그룹 비활성화 | GroupDeactivated 이벤트 발생 |
| DeprecateGroup | 그룹 폐기 예정 설정 | GroupDeprecated 이벤트 발생 |
| ArchiveGroup | 그룹 보관 | GroupArchived 이벤트 발생 |
2. 그룹 유형 및 분류 명령
| 명령 | 설명 | 영향 |
|---|
| CreatePatientGroup | 환자 그룹 생성 | PatientGroupCreated 이벤트 발생 |
| CreateOperationGroup | 운영자 그룹 생성 | OperationGroupCreated 이벤트 발생 |
| CreateDevelopmentGroup | 개발 그룹 생성 | DevelopmentGroupCreated 이벤트 발생 |
| CreateGuestGroup | 게스트 그룹 생성 | GuestGroupCreated 이벤트 발생 |
| ChangeGroupType | 그룹 유형 변경 | GroupTypeChanged 이벤트 발생 |
| AssignGroupCategory | 그룹 카테고리 할당 | GroupCategoryAssigned 이벤트 발생 |
| CreateClinicGroup | 클리닉별 그룹 생성 | ClinicGroupCreated 이벤트 발생 |
3. 그룹-역할 연결 명령
| 명령 | 설명 | 영향 |
|---|
| AssignRoleToGroup | 그룹에 역할 할당 | RoleAssignedToGroup 또는 GroupRoleValidationFailed 이벤트 발생 |
| UnassignRoleFromGroup | 그룹에서 역할 해제 | RoleUnassignedFromGroup 이벤트 발생 |
| ChangeGroupRoles | 그룹의 역할 변경 | GroupRolesChanged 이벤트 발생 |
| SynchronizeGroupRoles | 그룹-역할 연결 동기화 | GroupRolesSynchronized 이벤트 발생 |
4. 사용자-그룹 할당 명령
| 명령 | 설명 | 영향 |
|---|
| AssignUserToGroup | 사용자를 그룹에 할당 | UserAssignedToGroup 또는 UserGroupAssignmentValidationFailed 이벤트 발생 |
| AssignGuestToGuestGroup | 게스트를 게스트 그룹에 자동 할당 | GuestAssignedToGuestGroup 이벤트 발생 |
| MigrateGuestToRegisteredGroup | Step-up 완료 시 게스트를 정규 그룹으로 이동 | GuestGroupMigrationCompleted 이벤트 발생 |
| UnassignUserFromGroup | 사용자를 그룹에서 해제 | UserUnassignedFromGroup 이벤트 발생 |
| BatchAssignUsersToGroup | 여러 사용자를 그룹에 일괄 할당 | UserGroupBatchAssigned 이벤트 발생 |
| BatchUnassignUsersFromGroup | 여러 사용자를 그룹에서 일괄 해제 | UserGroupBatchUnassigned 이벤트 발생 |
| ValidateUserGroupAssignment | 사용자-그룹 할당 검증 | UserGroupConflictDetected 이벤트 발생 |
5. 그룹 계층 구조 명령
| 명령 | 설명 | 영향 |
|---|
| CreateGroupHierarchy | 그룹 계층 구조 생성 | GroupHierarchyCreated 또는 GroupHierarchyValidationFailed 이벤트 발생 |
| AssignParentGroup | 그룹에 부모 그룹 할당 | ParentGroupAssigned 이벤트 발생 |
| AddChildGroup | 그룹에 자식 그룹 추가 | ChildGroupAdded 이벤트 발생 |
| UpdateGroupHierarchy | 그룹 계층 구조 수정 | GroupHierarchyUpdated 이벤트 발생 |
| ApplyGroupInheritance | 그룹 상속 적용 | GroupInheritanceApplied 이벤트 발생 |
6. 그룹 템플릿 및 프리셋 명령
| 명령 | 설명 | 영향 |
|---|
| CreateGroupTemplate | 그룹 템플릿 생성 | GroupTemplateCreated 이벤트 발생 |
| ApplyGroupTemplate | 그룹 템플릿 적용 | GroupTemplateApplied 이벤트 발생 |
| UpdateGroupTemplate | 그룹 템플릿 수정 | GroupTemplateUpdated 이벤트 발생 |
| SetDefaultGroup | 기본 그룹 설정 | DefaultGroupSet 이벤트 발생 |
| CopyGroup | 그룹 복사 | GroupCopied 이벤트 발생 |
| ConfigureGroupPreset | 그룹 프리셋 설정 | GroupPresetConfigured 이벤트 발생 |
7. 동적 그룹 관리 명령
| 명령 | 설명 | 영향 |
|---|
| CreateDynamicGroupRule | 동적 그룹 규칙 생성 | DynamicGroupRuleCreated 이벤트 발생 |
| EvaluateDynamicGroupRule | 동적 그룹 규칙 평가 | DynamicGroupRuleEvaluated 이벤트 발생 |
| CreateTemporaryGroup | 임시 그룹 생성 | TemporaryGroupCreated 이벤트 발생 |
8. 그룹 모니터링 및 분석 명령
| 명령 | 설명 | 영향 |
|---|
| CalculateGroupMetrics | 그룹 지표 계산 | GroupMetricsCalculated 이벤트 발생 |
| AnalyzeGroupPerformance | 그룹 성능 분석 | GroupPerformanceAnalyzed 이벤트 발생 |
| AnalyzeGroupUsage | 그룹 사용량 분석 | GroupCleanupRecommended 이벤트 발생 |
9. 조직 연동 및 통합 명령
| 명령 | 설명 | 영향 |
|---|
| SyncGroupWithOrganization | 그룹 조직 구조 동기화 | GroupOrganizationSynced 이벤트 발생 |
| IntegrateGroupWithHR | 그룹 HR 시스템 통합 | GroupHRIntegrated 이벤트 발생 |
| SyncGroupWithLDAP | 그룹 LDAP 동기화 | GroupLDAPSynced 이벤트 발생 |
| IntegrateGroupWithCRM | 그룹 CRM 시스템 통합 | GroupCRMIntegrated 이벤트 발생 |
액터(Actors)
시스템과 상호작용하는 주체들입니다.
내부 액터
| 액터 | 설명 | 주요 명령 |
|---|
| Group Manager | 그룹 관리자 | 그룹 CRUD, 그룹 유형 관리, 그룹-플랜 연결, 그룹 템플릿 관리 |
| System Admin | 시스템 관리자 | 모든 그룹 관리 권한, 그룹 정책 설정, 기본 그룹 관리 |
| HR Manager | HR 관리자 | 조직 기반 그룹 관리, 사용자-그룹 할당, HR 시스템 연동 |
| Organization Admin | 조직 관리자 | 조직 구조 기반 그룹 관리, 그룹 계층 구조 설정 |
외부 액터 (시스템)
| 액터 | 설명 | 주요 명령 |
|---|
| IAM Service | 권한 관리 시스템 | 그룹 기반 권한 부여, 그룹-역할 매핑 조회 |
| Plan Service | 플랜 관리 시스템 | 그룹-플랜 연결 정보 제공 |
| User Service | 사용자 정보 시스템 | 사용자-그룹 할당 정보 조회, 사용자 상태 기반 그룹 관리 |
| Organization Service | 조직 관리 시스템 | 조직 구조 기반 그룹 생성 및 관리 |
| HR Service | HR 시스템 | 조직 구조 정보 제공, 직원 정보 동기화 |
| LDAP/AD Service | 디렉토리 서비스 | 그룹 정보 동기화, 외부 그룹 연동 |
| CRM Service | CRM 시스템 | 고객 분류 정보 제공, 고객 그룹 관리 |
| Notification Service | 알림 시스템 | 그룹 관련 알림 발송 |
| Analytics Service | 분석 시스템 | 그룹 사용 데이터 수집, 그룹 성능 지표 제공 |
| Audit Service | 감사 로그 시스템 | 그룹 관련 감사 로그 기록 |
집계(Aggregates)
연관된 엔티티와 값 객체들의 클러스터입니다.
Group 집계
- 루트: Group
- 엔티티: GroupRole (연관 테이블), UserGroup (연관 테이블), GroupMetadata
- 값 객체: GroupName (string, unique), GroupCode (string, unique), Description, GroupType, GroupStatus
- 참조: Role (IAM 도메인, 다대다), User (User 도메인, 다대다)
- 불변식:
- Group 이름은 고유해야 함
- Group은 ACTIVE, INACTIVE, DEPRECATED, ARCHIVED 상태를 가짐
- Group은 여러 Role을 가질 수 있음
- 사용자는 최소 하나 이상의 그룹에 속해야 함
GroupHierarchy 집계
- 루트: GroupHierarchy
- 엔티티: HierarchyRelation
- 값 객체: HierarchyLevel, InheritanceRule
- 참조: Group (다대다 - 부모/자식 관계)
- 불변식:
- 계층 구조는 최대 3단계까지 지원
- 순환 참조는 허용되지 않음
- 계층 구조의 일관성 유지
- 상속 규칙의 충돌 방지
UserGroupAssignment 집계
- 루트: UserGroupAssignment
- 엔티티: AssignmentHistory, AssignmentRule
- 값 객체: AssignmentDate, AssignmentStatus, AssignmentType
- 참조: User (User 도메인), Group
- 불변식:
- 사용자는 최소 하나 이상의 그룹에 속해야 함
- 사용자 유형에 따른 그룹 제약 준수
- 할당 이력의 일관성
- 동적 할당 규칙의 일관성
GroupTemplate 집계
- 루트: GroupTemplate
- 엔티티: TemplateGroup, TemplateRule
- 값 객체: TemplateName, TemplateVersion, TemplateDescription
- 참조: Group (생성 기반), Role (IAM 도메인, 다대다)
- 불변식:
- Template 이름은 고유해야 함
- Template 버전 관리 일관성
- Template 기반 Group 생성의 일관성
- Template 규칙의 유효성
DynamicGroup 집계
- 루트: DynamicGroup
- 엔티티: GroupRule, RuleEvaluation
- 값 객체: RuleCondition, EvaluationResult, RulePriority
- 참조: Group, User (User 도메인)
- 불변식:
- 동적 규칙의 조건 유효성
- 규칙 평가 결과의 일관성
- 규칙 우선순위의 충돌 방지
- 임시 그룹의 만료 처리
핫스팟 및 해결책
1. 사용자-그룹 할당 성능
- 문제: 대량의 사용자-그룹 할당 처리 시 성능 저하
- 해결책:
- 배치 처리: 대량 할당을 배치 작업으로 수행
- 비동기 처리: 할당 작업을 비동기로 처리
- 캐싱 전략: 자주 조회되는 사용자-그룹 매핑 정보 캐싱
2. 그룹 계층 구조의 복잡성
- 문제: 복잡한 그룹 계층 구조로 인한 관리 및 성능 문제
- 해결책:
- 계층 제한: 최대 3단계 계층 구조로 제한
- 순환 참조 방지: 계층 생성 시 순환 참조 검증
- 상속 규칙 단순화: 명확하고 단순한 상속 규칙 정의
3. 동적 그룹 규칙 처리
- 문제: 동적 그룹 규칙의 실시간 평가로 인한 성능 부담
- 해결책:
- 배치 평가: 동적 규칙을 정기적으로 배치 평가
- 조건 복잡도 제한: 규칙 조건의 복잡도 제한
- 증분 업데이트: 변경된 사용자에 대해서만 규칙 재평가
4. 그룹-플랜 연결 관리
- 문제: 그룹과 플랜 간의 연결 관리 복잡성
- 해결책:
- 강제 연결: 모든 그룹은 반드시 플랜과 연결되도록 강제
- 연결 검증: 그룹-플랜 연결 시 유효성 검증
- 변경 영향 분석: 플랜 변경 시 영향받는 그룹과 사용자 분석
5. 외부 시스템 연동
- 문제: HR, LDAP, CRM 등 외부 시스템과의 연동 복잡성
- 해결책:
- 이벤트 기반 동기화: 그룹 변경 이벤트를 통한 외부 시스템 동기화
- API 계약 관리: 명확한 연동 API 계약 정의
- 회복성 설계: 외부 시스템 장애 시 대체 로직 구현
6. 그룹 데이터 일관성
- 문제: 분산된 그룹 관련 데이터의 일관성 유지
- 해결책:
- 트랜잭션 관리: 그룹 변경 시 관련 데이터의 트랜잭션 일관성 보장
- 이벤트 소싱: 그룹 변경 이벤트를 통한 데이터 일관성 추적
- 보상 트랜잭션: 분산 트랜잭션 실패 시 보상 로직 구현
7. 그룹 확장성
- 문제: 대규모 조직의 복잡한 그룹 구조 관리
- 해결책:
- 샤딩 전략: 대규모 그룹 데이터의 샤딩 처리
- 템플릿 시스템: 그룹 템플릿을 통한 신속한 그룹 생성
- 자동화: 조직 변경에 따른 그룹 자동 생성/수정
8. 그룹 보안
- 문제: 그룹 정보의 보안과 접근 제어
- 해결책:
- 세밀한 권한 제어: 그룹 관리 기능별 세밀한 권한 설정
- 데이터 암호화: 민감한 그룹 정보의 암호화 저장
- 감사 로깅: 모든 그룹 관련 활동의 상세 로깅
9. MAO 티어/동의/라우팅 이벤트
- AnonymousGrouped: tier 누락/anonymous 사용자를 anonymous 기본 그룹에 배정
- GuestGrouped: guest 사용자를 guest-consented-min 그룹에 배정하고 TTL/보존 정책 적용
- GuestUpgraded: guest→member 승격 시 멤버십 이관 이벤트 발행
- ConsentVersionMismatchForGroup: consent_version 불일치 시 그룹 이관/제한 필요 알림
- AllowedDomainsUpdatedForGroup: allowed_domains 변경으로 그룹 정책 재평가/캐시 무효화
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|
| 0.1.0 | 2025-04-27 | bok@weltcorp.com | 최초 문서 생성 (IAM 도메인에서 분리) |
| 0.2.0 | 2025-07-16 | bok@weltcorp.com | Group-Plan 독립성 확보: 그룹-플랜 연결을 그룹-역할 연결로 변경, Plan 참조 제거 |
| 0.3.0 | 2025-10-27 | assistant | 게스트 그룹 온보딩/승격/만료 이벤트 및 명령 추가, 게스트 정책 반영 |
| 0.4.0 | 2025-11-26 | bok@weltcorp.com | MAO 라우팅을 위한 tier/consent/allowed_domains/data_persistence 기반 그룹 배정/이관 이벤트 추가 |