피드로 돌아가기
Dev.toBackend
원문 읽기
평균 Latency 380ms, FastAPI와 Telegram으로 구축한 실시간 알림 시스템
FastAPI + Telegram: Building a Real-Time Alert Bot in 30 Minutes
AI 요약
Context
서버 CPU 급증 등 장애 발생 시 인지 지연으로 인한 복구 시간 증대. 이메일이나 cron-job 로그 확인 방식의 낮은 즉각성 및 알림 누락 문제 발생.
Technical Solution
- FastAPI를 Webhook 수신기로 활용하여 이벤트 발생 즉시 알림을 처리하는 푸시 기반 구조 설계
- 리소스 소모와 지연 시간을 유발하는 Polling 방식 대신 Webhook 방식을 채택하여 실시간성 확보
- WEBHOOK_SECRET 검증 로직을 도입하여 외부의 무작위 트래픽에 의한 가짜 알림 트리거 방지
- httpx AsyncClient를 활용한 비동기 HTTP 통신으로 Telegram API 호출 시 발생하는 I/O 블로킹 최소화
- HTTP 429 Rate Limit 대응을 위해 Retry-After 헤더 기반의 지수 백오프(Exponential Backoff) 재시도 전략 적용
- Pydantic 모델을 통한 입력 데이터 유효성 검증 및 severity 단계별 알림 분류 체계 구축
Impact
- 이벤트 발생부터 알림 수신까지의 End-to-End Latency 평균 380ms 달성
- FastAPI 엔드포인트 응답 속도 5ms 미만 기록
- Uvicorn 워커 2개 기준 메모리 사용량 약 45MB RSS 유지
- 일일 약 2,000건의 알림을 안정적으로 처리
Key Takeaway
단순한 도구의 조합보다 전송 채널의 특성과 전송 방식(Push vs Pull)의 선택이 시스템의 실시간성과 리소스 효율성을 결정하는 핵심 요소임.
실천 포인트
외부 API 연동 시 Rate Limit 대응을 위한 재시도 로직과 보안을 위한 Webhook Secret 검증을 반드시 포함할 것