피드로 돌아가기
Dev.toBackend
원문 읽기
Redis 버퍼 기반 비동기 처리를 통한 0ms 요청 블로킹의 Self-hosted 모니터링 설계
FindBug - Self-hosted Error Tracking & Performance Monitoring for Rails (v0.5.0)
AI 요약
Context
SaaS 기반 에러 트래킹 도구의 과도한 시트당 비용 발생 및 PII 데이터 외부 유출 위험 존재. 외부 네트워크 의존도로 인한 텔레메트리 유실 가능성과 복잡한 SDK 설정 과정의 비효율성 확인.
Technical Solution
- Request-Response 사이클의 지연을 방지하기 위한 Thread.new 기반의 Fire-and-forget 구조 채택
- 전용 Redis Connection Pool을 활용한 LPUSH 방식으로 캡처 오버헤드를 1~2ms 수준으로 최소화
- Redis 장애 시 애플리케이션 가용성 확보를 위해 5회 연속 실패 시 30초간 작동을 중단하는 Circuit Breaker 도입
- DB 부하 분산을 위해 백그라운드 스레드가 30초 간격으로 100개 배치 단위의 데이터를 DB에 Flush 하는 구조 설계
- ActiveRecord 어댑터 런타임 감지를 통한 PostgreSQL, MySQL, SQLite 간 JSON 컬럼 및 SQL 함수 추상화 계층 구현
- 알림 설정을 코드 기반이 아닌 DB 기반 런타임 설정으로 분리하여 재배포 없는 Webhook 관리 체계 구축
실천 포인트
- 모니터링 도구 도입 시 메인 애플리케이션의 Connection Pool을 공유하지 않고 전용 풀을 사용하는지 확인 - 외부 서비스 의존성 제거를 위해 데이터 저장소의 추상화 계층(Adapter Pattern)을 통한 DB Agnostic 구조 검토 - 텔레메트리 수집 시 PII 데이터 필터링(Scrubbing) 단계를 데이터 버퍼링 직전 단계에 배치하여 보안 강화