피드로 돌아가기
Dev.toBackend
원문 읽기
MTProto 기반 Event-driven 구조로 구현한 Telegram 통합 피드 시스템
I built my own Google Reader, but for Telegram channels
AI 요약
Context
Telegram Bot API의 관리자 권한 제약으로 인한 외부 채널 수집 불가 한계 직면. 다수 채널의 개별 인박스 구조로 인한 정보 파편화와 낮은 가시성 문제를 해결하기 위한 통합 피드 아키텍처 필요성 대두.
Technical Solution
- Bot API 대신 사용자 권한을 그대로 사용하는 MTProto Client(Telethon) 채택으로 접근 제약 제거
- Polling 방식의 Latency 및 API Rate-limit 문제를 해결하기 위한 Event-driven handler 기반 실시간 수집 구조 설계
- PostgreSQL LISTEN/NOTIFY를 통한 In-memory 라우팅 테이블의 실시간 동기화 및 즉각적인 설정 반영 구현
- Telegram Album의 개별 메시지 전송 특성을 해결하기 위해 2초 Debounce Buffer를 도입한 Batch 전송 로직 적용
- Redis 기반의 Per-source/Per-feed Rate limiting 및 15초 의도적 지연 설계를 통한 계정 Ban 리스크 최소화
실천 포인트
1. API Rate-limit 제약이 심한 환경에서는 Polling보다 Event-driven 모델을 우선 검토할 것
2. 분산된 메시지 그룹(Album 등) 처리 시 Debounce Buffer를 통한 데이터 정합성 확보 전략을 활용할 것
3. 외부 API 사용 시 ToS 준수를 위해 의도적인 지연(Artificial Delay)과 Rate limiting 계층을 설계에 포함할 것
4. 동적 설정 변경이 빈번한 라우팅 테이블은 DB Notify와 In-memory 캐시를 조합하여 성능과 유연성을 동시에 확보할 것