단일 장애 지점(SPOF)이란 무엇인가요
SPOF(Single Point of Failure)는 특정 구성 요소 하나가 제대로 동작하지 않을 때 전체 시스템 장애로 이어지는 지점입니다.
가용성과 고가용성
시스템을 정상적으로 사용할 수 있는 정도를 가용성이라고 합니다. 가용성은 정상 사용 시간(Uptime)을 전체 시간(Uptime + Downtime)으로 나누어 계산할 수 있습니다. 높은 가용성을 유지하려면 SPOF를 식별하고 개선해야 합니다.
예시
API Server가 1대만 운영된다면 OOM, 네트워크 장애, 하드웨어 장애가 발생했을 때 전체 서비스가 중단될 수 있습니다. 이 API Server가 SPOF입니다.
개선 방법
서버를 여러 대로 이중화하고 로드 밸런싱을 적용할 수 있습니다. 로드 밸런서는 요청을 여러 서버로 분산하고, 특정 서버가 실패하면 정상 서버로 요청을 보냅니다.
DB는 Master-Replica와 Failover 구성을 둘 수 있습니다. 다만 Master가 1대라면 Master 장애 시 Failover가 정상적으로 작동하는지 점검해야 합니다.
서버 이중화 시 점검할 점
- 로컬 락이나 메모리 상태가 분산 환경에서도 안전한지 확인합니다.
- 세션 기반 인증을 사용한다면 세션 클러스터링, 스티키 세션, 외부 세션 저장소, 토큰 기반 인증을 고려합니다.
- 로그와 메트릭을 중앙에서 수집해야 합니다.
- 로드 밸런싱 알고리즘과 헬스체크를 적절히 설정해야 합니다.
- 서버가 늘어날수록 배포와 롤백 전략도 함께 설계해야 합니다.
정리
SPOF는 하나의 구성 요소 장애가 전체 장애로 이어지는 위험 지점입니다. 고가용성을 위해서는 이중화, 로드 밸런싱, Failover, 중앙화된 관측 체계를 통해 SPOF를 줄여야 합니다.