결함허용컴퓨터로 설계하는 무중단 고가용성 시스템
결함허용컴퓨터의 중복성·오류 검출·복구 원리와 듀플렉스, TMR, 네트워크·소프트웨어 결함허용 설계를 정리한다.
2026-08-14 · 최초 발행 2026-01-12
결함허용컴퓨터(Fault Tolerant Computer)는 하드웨어나 소프트웨어 구성 요소에 장애가 생겨도 시스템이 정상 동작을 이어가도록 만든 고신뢰성 시스템이다. 중복 구성, 오류 검출, 복구 메커니즘을 결합해 금융·의료·항공·통신처럼 중단 비용이 큰 환경에서 99.999% 이상의 가용성을 목표로 한다.
멈추지 않는 설계와 빠르게 복구하는 설계의 차이
결함허용의 목표는 단일 장애점(SPOF)을 제거하고, 장애가 난 구성 요소를 서비스 흐름에서 투명하게 처리하는 데 있다. 중복성, 오류 검출, 복구가 이를 구성하는 기본 수단이며 가용성은 보통 5-Nine(99.999%) 이상으로 본다.
고가용성(High Availability)도 장애에 대응하지만, 짧은 서비스 중단 후 복구되는 구조를 포함한다. 결함허용은 장애 중에도 중단이 없어야 하며 전환 시간은 0초다. 반면 고가용성의 전환 시간은 수초~수분이고, 가용성 범위는 99.9% ~ 99.99%다. 그만큼 결함허용은 비용과 복잡도가 매우 높고, 고가용성은 둘 다 중간 수준이다.
중복 실행 결과를 검출하고 복구하는 방식
중복성은 CPU, 메모리, 디스크, 전원, 네트워크처럼 시스템을 이루는 구성 요소를 이중화하는 데서 시작한다. RAID와 미러링으로 데이터를 복제할 수 있고, 같은 연산을 반복한 뒤 결과를 비교하는 시간 중복도 가능하다. ECC나 체크섬처럼 오류 검출 정보를 더하는 방식은 정보 중복에 해당한다.
오류는 ECC 메모리, 패리티 체크, CRC 같은 하드웨어 수단으로 찾을 수 있다. 소프트웨어에서는 체크섬, 해시, 디지털 서명을 사용하며, 중복 실행 결과 비교와 응답 시간 모니터링도 오류 검출에 쓰인다.
검출 후에는 자동 페일오버로 장애 구성 요소를 전환하고, 체크포인트로 저장한 상태까지 롤백할 수 있다. 장애 구성 요소를 격리한 뒤 재구성하거나 일시적 오류를 재시도하는 것도 복구 경로에 포함된다.
중복 구조가 결과를 처리하는 방법
듀플렉스 시스템의 동기화와 비교
듀플렉스(Duplex) 시스템은 두 프로세서가 동일한 작업을 동기화해 수행한다. 매 명령어 또는 주기마다 결과를 비교하고, 불일치가 발생하면 오류를 검출한다. 오류가 확인되면 재실행하거나 체크포인트에서 복구한다.
다수결로 결과를 선택하는 TMR
트리플 모듈러 리던던시(TMR)는 세 개의 독립 모듈이 같은 작업을 수행하고, 다수결로 올바른 결과를 선택한다. 단일 장애는 자동으로 마스킹하며 두 개 모듈까지 장애를 허용한다.
모든 노드가 처리에 참여하는 액티브-액티브
액티브-액티브(Active-Active) 구성에서는 모든 노드가 동시에 작업을 처리한다. 로드 밸런서가 작업을 분배하고, 장애 노드는 자동으로 제외된다. 노드를 추가해 성능을 높일 수 있다.
하드웨어 계층에서 장애를 흡수하는 구성
CPU는 듀얼 프로세서를 락스텝 모드로 동기화해 실행하고, 매 사이클 결과를 비교할 수 있다. 불일치가 검출되면 즉시 처리하며, 장애 CPU는 서비스가 이어지는 중에도 핫 스왑으로 교체한다.
메모리는 ECC로 단일 비트 오류를 수정하고 다중 비트 오류를 검출한다. 모든 쓰기를 두 메모리 뱅크에 복제하는 메모리 미러링, 주기적으로 검사·수정하는 메모리 스크러빙, 예비 메모리를 자동 활성화하는 핫 스페어도 사용한다.
스토리지는 RAID로 디스크 장애에 대비한다.
- RAID 1: 미러링
- RAID 5: 분산 패리티
- RAID 6: 이중 패리티
핫 스페어를 통한 자동 재구성, 실시간 미러링, 주기적인 데이터 무결성 검증을 위한 체크포인팅도 스토리지 결함허용의 일부다.
전원 경로는 독립적인 이중 전원 공급 라인, UPS, 장기 정전에 대비한 발전기, 다중 PSU로 중복한다.
프로세스 상태와 예외를 다루는 소프트웨어 계층
프로세스 복제는 동일 작업을 여러 프로세스로 실행하고, 프로세스 간 상태를 공유하는 방식이다. 헬스 체크로 상태를 주기적으로 확인하며 장애 프로세스는 자동으로 재시작한다.
체크포인팅은 프로세스 상태를 정기적으로 저장해 두었다가 장애 시 마지막 체크포인트로 되돌리는 방법이다. 변경된 부분만 저장하는 증분 저장과 원자적 상태 저장을 위한 트랜잭션을 함께 고려한다.
예외 처리에서는 Try-Catch로 예외를 처리하고, 일시적 오류에는 Retry 로직을 적용한다. 응답이 없는 작업은 Timeout으로 종료하며, 필요한 경우 Fallback 경로를 제공한다.
네트워크 경로가 끊어져도 연결을 유지하려면
네트워크 결함허용은 서버의 여러 네트워크 카드, 독립적인 스위치와 라우터 경로를 구성하는 데서 출발한다. NIC 티밍으로 여러 네트워크 카드를 묶고, VRRP·HSRP 같은 라우팅 프로토콜로 자동 페일오버를 수행한다. 트래픽은 여러 경로로 분산할 수 있다.
프로토콜 수준에서는 TCP 재전송으로 패킷 손실에 대응한다. 연결 상태를 주기적으로 확인하는 헬스 체크, 무응답 연결의 종료와 재연결을 위한 타임아웃, 연결 상태를 복제하는 세션 복제도 함께 사용한다.
목표 가용성을 수치로 판단하는 기준
가용성은 MTBF와 MTTR의 관계로 계산한다.
Availability = MTBF / (MTBF + MTTR)
MTBF: Mean Time Between Failures (평균 무고장 시간)
MTTR: Mean Time To Repair (평균 수리 시간)
99.999%인 Five 9s는 연간 5.26분 다운타임이고, 99.9999%인 Six 9s는 연간 31.5초 다운타임이다. 목표 가용성은 시스템 요구사항에 맞춰 정한다.
신뢰성은 주어진 시간 동안 정상 작동할 확률이며, MTBF로 측정한다. 중복성을 늘리고 품질을 높여 장기간 무고장 운영을 목표로 한다.
복구 시간 역시 설계 목표가 된다. RTO(Recovery Time Objective)는 목표 복구 시간이고, 결함허용 환경에서는 0초의 투명한 페일오버를 목표로 한다. RPO(Recovery Point Objective)는 목표 복구 시점이며, 결함허용에서는 0초와 데이터 손실 없음을 목표로 한다.
중요도와 비용에 따라 적용 범위를 넓히기
결함허용은 미션 크리티컬 구성 요소부터 적용하고, 이후 코어 인프라와 지원 시스템으로 범위를 확장할 수 있다.
비용을 조정할 때는 미션 크리티컬 구성 요소를 우선순위에 두고, FT와 HA를 혼합 구성할 수 있다. 중요도별로 다른 수준의 결함허용을 적용하며, 다운타임 비용과 투자 비용을 비교하는 ROI 분석이 필요하다.
중단을 허용하기 어려운 환경
금융 시스템의 주식 거래와 환전 시스템은 거래 손실 방지와 무중단 서비스를 요구한다. 듀플렉스 시스템, TMR, 실시간 복제를 적용하며 99.999% 이상의 가용성을 목표로 한다.
항공 관제는 항공기 안전과 직접 연결되는 미션 크리티컬 환경이다. 절대 중단 불가와 정확성을 요구하며, 삼중화 시스템과 다중 투표로 99.9999% 이상의 가용성을 목표로 한다.
ICU 모니터링과 인공호흡기 같은 생명 유지 장치는 실시간 모니터링과 즉각 대응이 필요하다. 하드웨어 중복과 실시간 백업을 적용해 99.999% 이상의 가용성을 요구한다.
기간망을 포함한 핵심 통신 인프라는 24/7 무중단 서비스를 요구한다. N+1 중복과 지리적 분산을 적용하며 99.999% 이상의 가용성을 목표로 한다.
장애를 주입해 복구 경로를 검증하기
장애 주입(Fault Injection)은 정상 운영 중인 시스템에 장애를 주입하고, 반응과 복구를 확인한 뒤 결과를 기록하는 테스트다.
프로세서를 비활성화하는 CPU 장애, 비트 플립을 주입하는 메모리 오류, 링크 단절 형태의 네트워크 장애, 디스크 제거를 테스트 대상으로 삼을 수 있다.
카오스 엔지니어링은 예측 불가능한 시점에 무작위 장애를 주입하는 방식이다. 프로덕션 또는 프로덕션 유사 환경에서 시스템 반응과 복구 과정을 관찰하고, 발견된 약점을 보완한다.
설계부터 운영까지 남는 과제
설계 단계에서는 모든 SPOF를 식별·제거하고 가능한 장애 시나리오를 분석해야 한다. 각 장애에 대한 복구 방법을 정의하고, 가용성 목표에 맞는 비용도 평가한다.
구현 단계에서는 산업 표준과 베스트 프랙티스를 적용한다. 장애 시나리오를 철저히 검증하고, 아키텍처·절차·장애 대응 매뉴얼을 문서화하며 운영 인력을 교육한다.
운영 단계에서는 24/7 실시간 모니터링과 주기적인 시스템 건강 검사가 이어져야 한다. 정기적인 DR 훈련을 수행하고, 장애 사례를 분석해 시스템을 개선한다.