피드로 돌아가기
Dev.toInfrastructure
원문 읽기
외부 의존성 없이 Erlang/OTP pg로 구현한 다중 지역 합의 시스템
How we built multi-region uptime consensus on the BEAM — zero external dependencies
AI 요약
Context
단일 지역 모니터링의 네트워크 경로 이슈로 인한 False Alert 문제 발생. DB 기반 상태 관리 시 발생하는 데이터 Staleness와 PgBouncer 환경의 Advisory Lock 불안정성으로 인한 병목 현상 직면.
Technical Solution
- BEAM Process 모델 기반의 Monitor-per-Process 구조 설계로 개별 모니터링 대상의 독립적 상태 관리
- OTP
pg모듈을 활용한 분산 노드 간 Process Group핑 및 실시간 결과 Broadcast 체계 구축 - Deterministic Hash-based Assignment 알고리즘 적용을 통한 Alert 트리거 노드의 단일화 및 자동 Failover 구현
- 다수결 원칙(Majority Consensus) 기반의 가용성 판단 로직을 통해 지역적 네트워크 장애와 실제 서버 다운 구분
- Gun HTTP 클라이언트를 통한 TLS Handshake 최적화로 체크당 HTTP 처리 시간 50ms 수준 유지
- 10초 Timeout 설정을 통해 응답 없는 지역을 합의 대상에서 제외하는 동적 쿼럼 관리
실천 포인트
- 분산 노드 간 상태 동기화 시 DB Polling 대신 Pub/Sub 또는 프로세스 메시징 검토 - 중복 알림 방지를 위해 중앙 제어 장치 대신 결정론적 해싱(Deterministic Hashing)을 통한 역할 분배 고려 - 네트워크 파티션 상황을 대비해 가시 노드 기반의 다수결 합의 로직 설계