피드로 돌아가기
Dev.toBackend
원문 읽기
UUIDv7과 Soft Delete 전략을 통한 고성능 확장형 Changelog 시스템 설계
How I Built FeedLog: Three Repos, One Product
AI 요약
Context
GitHub Issue를 기반으로 Changelog를 자동 생성하는 서비스 구축 과정에서 관리 효율성과 데이터 무결성 확보가 필요함. 단일 레포지토리 구조의 배포 의존성을 제거하고 데이터 복구 가능성을 극대화하는 구조적 설계에 집중함.
Technical Solution
- 서비스 성격에 따라 API(Private), App(Private), Toolkit(Public)의 3개 레포지토리로 분리하여 독립적 배포 및 버전 관리 체계 구축
- Stencil 기반 Monorepo를 통해 Web Components를 생성하고 React, Vue 래퍼를 자동 제공하여 프레임워크 범용성 확보
- BullMQ와 Redis를 결합한 비동기 큐 도입으로 GitHub Webhook 응답 지연 시간을 최소화하고 AI 처리 프로세스를 분리
- UUIDv7을 Primary Key로 채택하여 B-tree 인덱스의 Page Split을 방지하고 시간 순 정렬 기반의 쓰기 성능 최적화
- 모든 테이블에 deleted_at 컬럼을 포함한 Soft Delete 전략을 적용하여 데이터 복구 가능성을 높이고 Undo 로직의 복잡도 제거
- Opossum 기반 Circuit Breaker를 DB 풀에 적용하여 데이터베이스 장애 시 시스템 전체로의 장애 전파 차단
실천 포인트
- DB 성능 최적화를 위해 순차적 증가 특성을 가진 UUIDv7 도입 검토 - 운영 가시성 확보를 위해 내부 ID와 별개로 prefix가 포함된 Public ID 체계 구축 - 데이터 유실 방지와 디버깅 편의성을 위해 Soft Delete 적용 및 주기적 Hard Delete 스케줄러 설정 - 외부 API 연동 시 Webhook 응답 속도 보장을 위한 비동기 Message Queue 처리 구조 설계