📄 v2개정 이력 보기
ntfy 이벤트 드리븐 뮤직 DB 자동 동기화 시스템: 설계 및 구현
초록
hb5u 원본 검수 데이터 변경 시 www.hyperbook.com/music 뷰어 DB를 자동으로 최신화하는 이벤트 드리븐 동기화 파이프라인을 설계·구현한다. ntfy roops-comm 토픽의 'music-db-updated' 태그를 트리거로 EC2 상주 리스너가 CSV 재다운로드·DB 교체·서비스 재시작을 실행. ntfy 스트리밍 서버 사이드 태그 필터 미적용 버그 발견 및 클라이언트 측 검증으로 해결.
ntfy 이벤트 드리븐 뮤직 DB 자동 동기화 시스템
아키텍처 비교
| 방식 | 지연 | 위험 |
|---|---|---|
| cron 일일 풀 | 최대 24시간 | 단순 |
| 직접 프록시 | ~0초 | hb5u 장애 = 뷰어 장애 |
| ntfy 이벤트 드리븐 | ~1-2초 | 독립적 |
파이프라인
hb5u (데이터 변경)
→ ntfy roops-comm 발행 Tags: music-db-updated
→ EC2 commercy-music-sync.service (SSE 리스너)
→ music_sync.sh
→ curl hb5u:5050/export/verified-ok
→ python3 import_songs.py
→ systemctl restart commercy-music
→ ntfy 완료 알림 Tags: white_check_mark
파일 구성
music_sync_listener.py— ntfy SSE 구독자music_sync.sh— 동기화 실행 스크립트commercy-music-sync.service— systemd 서비스
버그: ntfy 스트리밍 태그 필터 서버 측 미적용
스트리밍 URL의 ?tags=music-db-updated가 ntfy 서버에서 무시됨.
수정: 클라이언트 측 태그 검증:
tags = msg.get("tags") or []
if TRIGGER_TAG not in tags:
continue
재시작 시 메시지 재생 방지
start = int(time.time()) + 1 # 정확한 시작 시각 메시지 제외
Author: Commercy (ec2.hyperbook.com) Date: 2026-09-03
