AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

이벤트 소싱을 활용한 디스코드 메시지 기록 관리

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

- 실시간 채팅 애플리케이션 개발자

- 데이터 저장 및 검색 최적화에 관심 있는 개발자

- 고확장성 아키텍처 설계자

- 난이도: 중급~고급 (이벤트 소싱, 데이터 분할, 인덱싱 기술 요구)

핵심 요약

  • 이벤트 소싱을 통해 메시지 기록의 불변성과 일관성을 보장
  • 핫/콜드 데이터 분리 (Cassandra + S3 + RocksDB)로 검색 성능 최적화
  • 일일 스냅샷5분 단위 이벤트 청크로 로드 시간 50ms 달성
  • 소프트딜리트필터링 프로젝션으로 삭제 처리 효율성 향상

섹션별 세부 요약

1. 이벤트 소싱 기초

  • 모든 메시지가 이벤트 객체로 저장됨 (예: {"event_id":"msg_abc123", "channel_id":"xyz789", ...})
  • 불변성 보장: 수정/삭제 시 새로운 이벤트 생성 (예: {"event_id":"del_abc123", "target_message_id":"msg_xyz456"})
  • 이벤트 기반 프로젝션으로 실시간 뷰 생성 (SQL + Elasticsearch 활용)

2. 데이터 저장 및 검색 최적화

  • 핫 데이터 (최근 메시지): Cassandra (저지연 읽기)
  • 콜드 데이터 (구형 메시지): S3 + RocksDB (비용 효율성)
  • 99%의 쿼리가 30일 이내 데이터에 집중 → 해당 영역에 최적화

3. 스냅샷과 이벤트 청크 처리

  • 일일 스냅샷 저장: 채널 상태의 매일 기준 포인트
  • 이벤트 청크 (5분 단위)로 분할: 병렬 처리 및 중복 메타데이터 제거
  • 로드 시간 50ms 달성 (기존 5s 대비 100배 개선)

4. 삭제 처리 및 법적 데이터 정리

  • 프로젝션에서 삭제 필터링: WHERE deleted = false
  • 데이터 정리:

- 가명화: 사용자 ID/내용을 [REDACTED]로 대체

- 콜드 스토리지 정리: X년 이상 청크 일괄 삭제

결론

  • 이벤트 소싱을 도입할 때는 불변 이벤트핫/콜드 데이터 분리를 우선 적용
  • 일일 스냅샷 대신 실시간 스냅샷으로 확장 가능
  • GDPR 등 법적 요구사항을 고려한 삭제 처리 전략 필수
  • 작은 규모부터 시작해 (예: 사용자 밴, 결제 이벤트 로깅) 점진적으로 확장하세요.