본문으로 건너뛰기

Agent Board 도메인 이벤트 스토밍

개요

본 문서는 Agent Board 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. Agent Board는 Message Delivery & Tracking Layer로서 Agent Treatment Flow로부터 완성된 Board 데이터를 받아 적절한 클라이언트에게 실시간으로 전달하고, 사용자의 모든 상호작용을 저장하여 치료 효과 분석을 지원하는 도메인입니다. Agent Board는 템플릿 렌더링이나 메시지 생성을 수행하지 않으며, 순수하게 Board의 저장, 표시, 상호작용 추적에만 집중합니다.

도메인 이벤트

도메인에서 발생하는 메시지 저장, 전달, 상호작용 추적 관련 이벤트들입니다.

1. 메시지 저장 및 전달 이벤트

1.1 백엔드 이벤트

이벤트설명트리거
MessageReceivedTreatment Flow로부터 메시지 수신API 호출
MessagePersisted메시지가 PostgreSQL에 저장됨DB 저장 완료
MessageQueued메시지가 전달 대기 큐에 추가됨메시지 저장
MessageDelivered메시지가 클라이언트에 전달됨SSE 전송
MessageViewed사용자가 메시지를 확인함클라이언트 이벤트
MessageInteracted사용자가 메시지와 상호작용함클라이언트 이벤트
MessageExpired메시지 TTL 만료타이머
MessageArchived메시지가 아카이빙됨30일 경과
SSEConnectedSSE 연결 성공연결 시도
SSEDisconnectedSSE 연결 끊김네트워크 오류
HeartbeatReceived하트비트 응답 수신클라이언트 응답

1.2 프론트엔드 이벤트

이벤트설명트리거
MessageRendering메시지 렌더링 시작메시지 수신
MessageRendered메시지 렌더링 완료DOM/View 마운트
MessageVisible메시지가 뷰포트에 진입Intersection Observer
MessageHidden메시지가 뷰포트를 벗어남Intersection Observer
AnimationStarted애니메이션 시작렌더링/제거
AnimationCompleted애니메이션 완료애니메이션 종료
MessageExpiredOnClient클라이언트에서 TTL 만료타이머
MessageRemoved메시지가 DOM에서 제거됨remove() 호출

2. 상호작용 저장 및 추적 이벤트

2.1 백엔드 이벤트

이벤트설명트리거
InteractionBatchReceived상호작용 배치 수신클라이언트 전송
InteractionPersisted상호작용이 PostgreSQL에 저장됨DB 저장 완료
DailySummaryGenerated일별 상호작용 통계 생성됨자정 스케줄러
AnalyticsQueryExecutedTreatment Flow가 분석 데이터 조회API 호출
InteractionForwardedTreatment Flow에 전달 완료API 호출
CacheUpdatedRedis 캐시 업데이트됨데이터 변경
OldInteractionsArchived90일 지난 상호작용 아카이빙스케줄러

2.2 프론트엔드 이벤트

이벤트설명트리거
UserTapped사용자 탭/클릭터치/클릭 이벤트
UserSwiped사용자 스와이프스와이프 제스처
ActionTriggered액션 버튼 클릭버튼 터치
DismissTriggered닫기 버튼 클릭닫기 터치
ViewTimeStarted노출 시간 측정 시작메시지 50% 이상 보임
ViewTimeEnded노출 시간 측정 종료메시지 50% 미만 보임
ViewThresholdReached3초 노출 달성타이머
InteractionQueued상호작용 큐에 추가이벤트 발생
BatchSent배치 전송 완료네트워크 전송
OfflineQueued오프라인 큐에 저장네트워크 없음

3. 연결 관리 이벤트

3.1 백엔드 이벤트

이벤트설명트리거
ConnectionRegistered새 연결이 Redis에 등록됨SSE 연결
ConnectionStatusUpdated연결 상태 변경됨상태 변화
StaleConnectionsCleaned오래된 연결 정리됨타이머
MissedMessagesSynced놓친 메시지 동기화됨재연결

4. 데이터 관리 이벤트

4.1 백엔드 이벤트

이벤트설명트리거
DatabaseQueryExecutedDB 쿼리 실행됨데이터 조회
IndexOptimizedDB 인덱스 최적화됨정기 작업
DataIntegrityVerified데이터 정합성 검증 완료정기 검사
BackupCompleted데이터 백업 완료스케줄러

정책(Policies)

시스템의 자동화된 메시지 관리 및 데이터 저장 규칙입니다.

메시지 저장 및 전달 정책

백엔드 정책

  • Treatment Flow로부터 받은 모든 메시지는 PostgreSQL에 영구 저장
  • 사용자 접속 시 미전달/미확인 메시지를 우선순위에 따라 전달
  • 메시지 상태 추적: PENDING → DELIVERED → VIEWED → INTERACTED → ARCHIVED
  • TTL 만료 또는 30일 경과 시 자동 아카이빙
  • 연결이 끊어진 경우 메시지를 큐에 저장 (사용자당 최대 1000개)
  • 재연결 시 큐의 메시지를 순서대로 전송

프론트엔드 정책

  • displayRules.layout에 따라 적절한 렌더러 선택
  • 알 수 없는 레이아웃은 DefaultRenderer 사용
  • 렌더링 실패 시 FallbackRenderer로 텍스트만 표시
  • TTL 만료 시 자동으로 메시지 제거
  • displayRules.priority 값으로 표시 순서 결정
  • 오프라인 상태에서도 캐시된 메시지 표시 (최근 7일)

상호작용 저장 및 추적 정책

백엔드 정책

  • 모든 사용자 상호작용을 PostgreSQL에 영구 저장
  • 일별로 상호작용 통계 자동 집계 (매일 자정)
  • 원본 데이터는 90일 보관, 집계 데이터는 영구 보관
  • Treatment Flow의 실시간 분석 요청에 100ms 이내 응답
  • 중복 상호작용 이벤트 자동 제거

프론트엔드 정책

  • 모든 터치 이벤트를 즉시 캡처
  • 3초 이상 50% 이상 노출되어야 'viewed' 기록
  • 상호작용은 배치로 모아서 전송 (최대 10개 또는 5초)
  • 오프라인 시 로컬 저장 후 온라인 전환 시 전송

실시간 통신 정책

백엔드 정책

  • 사용자당 플랫폼별로 하나의 SSE 연결만 허용
  • 30초마다 하트비트로 연결 확인
  • 60초 동안 하트비트 없으면 연결 종료
  • 연결 상태는 Redis에서 관리

프론트엔드 정책

  • SSE 연결 실패 시 지수 백오프로 재연결
  • 최대 재연결 시도: 10회
  • 백그라운드 전환 시 연결 유지 (플랫폼 제약 내에서)

데이터 관리 정책

백엔드 정책

  • 자주 조회되는 데이터는 Redis에 캐싱
  • 캐시 만료 시간: 활성 메시지 5분, 집계 데이터 1시간
  • DB 인덱스 전략: userId + status, userId + createdAt, messageId + type
  • 트랜잭션으로 데이터 정합성 보장

성능 최적화 정책

백엔드 정책

  • 쿼리 응답 시간 목표: 조회 < 100ms, 저장 < 50ms
  • 배치 처리를 통한 DB 부하 분산
  • 읽기 전용 복제본 활용 (분석 쿼리)

프론트엔드 정책

  • 60 FPS 유지를 위해 requestAnimationFrame 사용
  • 화면 밖 메시지는 DOM에서 제거
  • 동일한 레이아웃의 렌더러는 재사용
  • 메모리 사용량 200MB 초과 시 오래된 메시지 정리

명령(Commands)

도메인 이벤트를 발생시키는 메시지 관리 및 데이터 저장 동작입니다.

1. Board 관리 명령

1.1 백엔드 명령

명령설명영향
CreateUserBoard완성된 Board 데이터 저장BoardPersisted 이벤트 발생
GetActiveBoards활성 Board 조회DatabaseQueryExecuted 이벤트 발생
UpdateBoardStatusBoard 상태 업데이트상태별 이벤트 발생
ArchiveExpiredBoards만료 Board 아카이빙BoardArchived 이벤트 발생
EstablishSSESSE 연결 수립SSEConnected 이벤트 발생
DeliverBoardBoard 전달BoardDelivered 이벤트 발생
SyncMissedBoards놓친 Board 동기화MissedBoardsSynced 이벤트 발생

1.2 프론트엔드 명령

명령설명영향
RenderMessage메시지 렌더링 실행MessageRendering 이벤트 발생
RemoveMessage메시지 제거MessageRemoved 이벤트 발생
StartAnimation애니메이션 시작AnimationStarted 이벤트 발생
UpdateLayout레이아웃 업데이트LayoutChanged 이벤트 발생
ShowFallbackFallback UI 표시FallbackRendered 이벤트 발생
CacheMessage메시지 로컬 캐싱MessageCached 이벤트 발생

2. 상호작용 관리 명령

2.1 백엔드 명령

명령설명영향
SaveInteraction상호작용 저장InteractionPersisted 이벤트 발생
ProcessBatch배치 처리InteractionBatchReceived 이벤트 발생
GenerateDailySummary일별 통계 생성DailySummaryGenerated 이벤트 발생
GetUserEngagement참여도 조회AnalyticsQueryExecuted 이벤트 발생
ArchiveOldInteractions오래된 데이터 아카이빙OldInteractionsArchived 이벤트 발생

2.2 프론트엔드 명령

명령설명영향
CaptureInteraction상호작용 캡처상호작용 타입별 이벤트 발생
StartViewTracking노출 시간 측정 시작ViewTimeStarted 이벤트 발생
QueueInteraction상호작용 큐에 추가InteractionQueued 이벤트 발생
SendBatch배치 전송BatchSent 이벤트 발생
SaveOffline오프라인 저장OfflineQueued 이벤트 발생

3. 연결 관리 명령

3.1 백엔드 명령

명령설명영향
RegisterConnection연결 등록ConnectionRegistered 이벤트 발생
UpdateHeartbeat하트비트 업데이트HeartbeatReceived 이벤트 발생
CloseConnection연결 종료SSEDisconnected 이벤트 발생
CleanupStaleConnections오래된 연결 정리StaleConnectionsCleaned 이벤트 발생

4. 데이터 관리 명령

4.1 백엔드 명령

명령설명영향
UpdateCache캐시 업데이트CacheUpdated 이벤트 발생
OptimizeIndexes인덱스 최적화IndexOptimized 이벤트 발생
VerifyDataIntegrity데이터 정합성 검증DataIntegrityVerified 이벤트 발생
BackupData데이터 백업BackupCompleted 이벤트 발생

액터(Actors)

시스템과 상호작용하는 주체들입니다.

사용자

  • 표시된 메시지를 보고 상호작용
  • 탭, 스와이프, 액션 실행 등의 동작 수행

Agent Treatment Flow

  • 표시할 메시지와 displayRules 전달
  • 상호작용 데이터 및 분석 결과 조회
  • 사용자 참여도 기반 치료 과제 생성

시스템 스케줄러

  • 일별 상호작용 통계 집계
  • 만료 메시지 아카이빙
  • 오래된 데이터 정리
  • 데이터 백업 실행

플랫폼 (iOS/Android)

  • 네이티브 제스처 이벤트 제공
  • 메모리 경고 알림
  • 백그라운드/포그라운드 전환 알림

애그리게잇(Aggregates)

도메인의 핵심 개념들입니다.

BoardMessage

  • 메시지 ID
  • 사용자 ID
  • 메시지 타입
  • 콘텐츠
  • displayRules
  • actions
  • metadata
  • 상태 (PENDING, DELIVERED, VIEWED, INTERACTED, ARCHIVED)
  • 우선순위
  • 생성/만료/전달 시간

BoardInteraction

  • 상호작용 ID
  • 메시지 ID
  • 사용자 ID
  • 상호작용 타입
  • 타임스탬프
  • 세션 정보
  • 플랫폼 정보

BoardInteractionSummary

  • 사용자 ID
  • 날짜
  • 일별 집계 (전달/조회/클릭/무시 건수)
  • 타입별 집계
  • 평균 응답 시간

SSEConnection

  • 연결 ID
  • 사용자 ID
  • 연결 상태
  • 마지막 하트비트
  • 클라이언트 정보

MessageQueue

  • 사용자 ID
  • 대기 중인 메시지
  • 큐 크기
  • 업데이트 시간

읽기 모델(Read Models)

조회 최적화를 위한 데이터 구조입니다.

Active Messages View

  • 사용자별 활성 메시지 목록
  • 우선순위 기반 정렬
  • 캐시 레이어 지원

User Engagement View

  • 사용자별 참여도 메트릭
  • 기간별 상호작용 통계
  • 메시지 타입별 반응률

Daily Analytics View

  • 일별 집계 데이터
  • 사용자별 활동 패턴
  • 시간대별 분포

Connection Status View

  • 활성 연결 상태
  • 플랫폼별 분포
  • 연결 품질 메트릭

변경 이력

버전날짜작성자변경 내용
0.1.02025-06-27bok@weltcorp.com초기 작성