단일 장애 지점(SPOF, Single Point of Failure)이란 시스템의 특정 요소가 고장 났을 때 전체 시스템이 작동을 멈추는 약점을 말한다. 아무래도 시스템의 취약점으로 작용하고, 해결하지 않으면 예기치 못한 상황에서 전체 시스템이 마비될 수 있다.
따라서, 고가용성의 아키텍처를 위해서는 SPOF를 식별하고 제거하는 것이 중요하다.
장애는 다양한 상황에서 발생할 수 있다.
그렇기 때문에 아래 그림에서처럼, SPOF는 시스템 어디에서나 존재할 수 있다. 심지어 하드웨어에서도...!

이러한 SPOF를 제거하기 위한 핵심 축을 나누면 크게 두 가지를 뽑을 수 있을 것이다.
1. 다중화
"단일" 장애 지점이 사라지도록, 같은 기능을 하는 자원을 여러 개 두는 것을 말한다.
이를 통해 서비스의 연속성을 확보할 수 있다.
다중화의 예시로는 로드 밸런싱, Active-Standby DB, AZ 이중화, 멀티 레플리카 등이 있다.
2. 복구
장애가 나더라도, 서비스 중단 시간을 최소화하면서 정상 상태로 되돌리는 체계를 말한다.
이를 통해 서비스가 다운되는 시간을 제한하고, 장애로 인한 피해를 통제 가능한 범위로 억제할 수 있다.
복구의 예시로는 Failover 자동화, 헬스 체크+재기동, 백업/복구 체계, IaC 기반 재구축 등이 있다.
즉, SPOF에 대응한다는 것은 단일 장애점 제거(다중화) + 장애 발생 시 신속 복구 능력(복구 체계) 둘 다 필요한 영역이다.
💡 다중화 (Redundancy)
다중화는 하나의 구성요소가 고장 나도 서비스 전체가 멈추지 않도록 동일한 역할을 하는 대체 자원을 미리 배치하는 설계 방식이다.
다중화의 핵심 원리는 다음과 같다.
- 같은 역할을 여러 개 둔다. 즉, 한 대가 죽어도 나머지가 이어받는다.
- 서로 다른 도메인에 분리한다. 같은 곳에 몰아두면 함께 죽기 때문이다.
이렇게 다중화가 적용되는 예시를 살펴보자.
| 장애 지점 (SPOF 가능한 지점) | 대표적인 다중화 방식 | 기대 효과 |
| 웹/애플리케이션 서버 | - 로드 밸런서 + 다중 인스턴스 - Auto Scaling |
단일 서버 장애에도 서비스 지속 부하 분산 |
| 데이터베이스 | - Replica 구성 - HA 클러스터링 - 샤딩 |
장애 시 대체 노드로 전환 읽기/쓰기 부하 분산 |
| 메시지 브로커/캐시 | - Kafka의 Broker Cluster - Redis의 Sentinel/Cluster |
데이터 유실 방지 메시지 흐름 유지 캐시 지속 |
| 스토리지 | - AZ 간 복제 - Versioning - RAID |
데이터 내구성 확보 특정 디스크 장애에도 데이터 유지 |
| 네트워크 진입점/DNS | - Anycast DNS - 이중화 LB - 다중 ISP |
외부 접근 경로 유지 외부 장애에 대한 회복 탄력 |
| 클라우드 리전/존 | - Multi-AZ - Multi-Region 배포 |
광역 장애에도 서비스 생존 |
| Control Plane (예: K8s) | - Control Plane 3노드 이상(Quorum) | 오케스트레이션 지속성 확보 노드 장애 시에도 조정 기능 유지 |
정리하면, 다중화는 "하나가 죽어도 전체가 멈추지 않게" 만드는 구조적인 대비책이라고 할 수 있다.
그러나, 다중화만으로 SPOF가 완전히 제거되지는 않는다. 실제 장애 상황에서는 장애를 감지하고, 정상 노드로 전환하고, 손실 데이터를 복구하는 복구 체계가 반드시 있어야 한다.
💡 복구 (Recovery)
다중화가 장애를 피하는 설계라면, 복구는 장애가 났을 때 빠르게 감지하고 전환하며 원복하는 체계를 말한다. 즉, "장애가 난 다음"을 다루는 영역이다.
복구 대상별로 복구 방법을 살펴보면 다음과 같다.
| 복구 대상 | 대표적인 복구 방식 | 기대 효과 |
| 서비스 트래픽 | - Failover(자동 전환) - Health Check |
다운타임 최소화 무중단 서비스 유지 |
| 데이터 무결성/손실 | - 백업/스냅샷 - PITR(특정 시점 복구) - WAL Replay |
장애에도 데이터 복원 가능 RPO(복구 시점 목표) 충족으로 연속성 유지 |
| 인프라 전체 | - IaC 기반 재생성 (Terraform, Ansible) | 수작업 없이 동일한 구성을 반복 생성 MTTR(평균 수리 시간) 단축 장애 복구 속도의 예측 가능성 확보 |
| 광역 장애(리전/존) | - DR(Disaster Recovery) - Multi-Region Failover |
정전/재해 등 광역 장애에도 생존성 확보 장애 이벤트가 지역적으로 제한 전체 서비스 다운 대신 축소/감소 상태로 유지 |
참고
