피드로 돌아가기
Dev.toBackend
원문 읽기
Webhook 부재를 극복한 Polling 기반 Event Bus 설계로 50개 이상 계정 실시간 모니터링 구현
Build a Social Media Event Bus: React to Posts, Comments, and Follows in Real-Time
AI 요약
Context
소셜 미디어 플랫폼의 Webhook 미지원으로 인한 실시간 이벤트 수집의 기술적 제약 발생. 개별 스크립트 기반의 단순 Polling 방식은 기능 확장 시 코드 복잡도가 급증하는 Spaghetti Code 문제 직면.
Technical Solution
- State Store 도입을 통한 이전 상태 저장 및 현재 데이터와의 Diff 분석으로 유의미한 변경 사항만 Event로 추출
- EventEmitter 기반의 Event Bus 구조를 설계하여 데이터 수집(Poller)과 후속 처리(Handler) 간의 완전한 Decoupling 달성
- follower_change(±5% 또는 ±1000명)와 같이 비즈니스 로직 기반의 임계치 필터링을 적용하여 불필요한 이벤트 발생 억제
- Node-cron을 활용해 데이터 중요도에 따라 Profile(30분), Post(15분), Comment(1시간) 단위의 차등 Polling 주기 설정
- 단일 프로세스 한계 극복을 위해 Redis Pub/Sub으로의 확장 경로를 고려한 인터페이스 설계
실천 포인트
- 외부 API의 Webhook 미지원 시 State DB를 활용한 Diff 기반 이벤트 추출 전략 검토 - Poller와 Handler 사이의 결합도를 낮추기 위한 Event Bus 패턴 적용 - 데이터 특성에 따른 Polling 주기 최적화로 API Rate Limit 관리 - 단일 프로세스에서 분산 환경으로의 전환을 고려한 Redis Pub/Sub 마이그레이션 계획 수립