결함 허용(Fault Tolerance)이란?
- 어떤 시스템 전체 또는 그 일부의 하드웨어나 소프트웨어 결함에도 불구하고 정상 작동할 수 있는 능력
- 시스템의 신뢰성을 높이기 위해 여분의 설비를 준비해두고 결함에 대비
- 결함 허용의 수준을 높이면 시스템의 신뢰성은 높아지지만, 그만큼 경제적 비용과 시스템의 성능 하락 또한 감수해야 하기 때문에 Trade-off한 면이 있다.
측정
시스템이 결함 허용을 어느 수준까지 지원하는지를 측정할 수 있는 기본 척도는 신뢰성(reliability) 과 결함이 발생하기까지의 평균 시간(MTTF: mean time to Failure)**, 가용성(availability)로 결정됨.

- MTTF(Mean Time To Failure)의 경우 결함이 발생하기까지의 평균시간을 구하는 것이므로 총 수행시간에서 사용한 자원의 수로 나눔
- 수리 완료까지 평균시간(MTTR: mean time to repair) 도 있는데 결함이 발생한 부품이나 소프트웨어 모듈 수리까지 걸리는 평균 시간을 의미

- MTTR(Mean Time To Repair)의 경우 총 수리시간에서 수리한 횟수로 나눔

- 위 사진에서
- MTTF의 경우 총 운용시간 B1+B2+B3를 사용한 Asset의 수 3으로 나눔
- MTTR의 경우 수리하는데 걸린 총 시간 A1+A2+A3를 수리한 횟수 3으로 나눔
- 시스템이나 서비스의 가용성은 해당 시스템이나 서비스가 기동된 후 어느 시점까지의 총 시간 중 사용자의 요청을 서비스할 수 있었던 시간이 얼마나 되는지의 비율로 정의됨
- 가용성 A는 다음과 같이 표현됨
| 등급 | 가용성 | 연간 다운타임 |
|---|---|---|
| 항상 가용 | 1.0 | 0 |
| 결함 허용 | 0.99999 | 5분 |
| 결함 감내 | 0.9999 | 53분 |
| 고가용성 | 0.999 | 8.3시간 |
| 보통 가용성 | 0.99-0.995 | 44-87시간 |
- 위 표는 가용성 수준과 그 수준마다의 연간 다운타임(시스템이 가용하지 않은 시간)
- 결함 허용까지는 무고장 시스템으로 허용한다.
- 가용성이 높아도 다운타임과 업타임이 조각나있으면 업타입이 짧아 서비스가 원할히 돌아갈 수 없는 상황이 있을 수도 있으므로 평균 업타임을 더 자세히 볼 수 있는 MTTF가 더 유용한 척도로 활용됨
결함
결함 유형
- 영구적(permanent)
- 영구적으로 존재하는 결함. 수리 전까지 계속 결함상태.
- 하드웨어의 고장 or 소프트웨어 버그들
- 일시적(temporary)
- 단발적
- 일시적 전기충격이나 전원 불안정에 의한 전송 오류와 같은 단발적인 결함 유형
- 간헐적
- 예상할 수 없을 때 수차례 발생.
- 접촉 불량 등
- 단발적
여분 설비 추가 기법
결함허용 구축은 여분의 설비(redundancy)를 추가함으로써 이루어진다. 여분 설비 추가 기법은 다음과 같다.
- 공간적(물리적) 여분 설비
- 여분의 부품 여러개 설치
- 여분의 부품이 백업 역할
- 시간적 여분 설비
- 오류가 발생했을 때 동일한 기능이나 동작을 계속 반복할 수 있도록 하는 방식
- 영구적 결함에는 효과가 없지만 일시적 결함에 큰 효과
- 데이터 전송 중 오류 발생 시 데이터 블록 재전송과 같은 해결방식
- 정보 여분 설비
- 데이터 복사, 복구 코드를 데이터에 덧붙이는 방식의 설비
운영체제의 결함 허용 기법
- 프로세스 분리(Process isolation)
- 결함을 일으킨 프로세스가 다른 프로세스에 영향을 미치는 것을 막을 수 있게 보호설계
- 병행성 제어(Concurrency controls)
- 가상 기계(Virtual machines)
- 가상 기계를 통한 응용 간 분리
- 한 응용에서 발생한 결함이 다른 응용으로 옮아가지 못하게 하는 결함 차단도 지원
- 가상 기계는 여러 개가 동시에 실행될 수 있기 때문에 여분 설비에 의한 결함허용도 해결
- 체크포인트와 롤백(Checkpoints and rollbacks)
- 체크포인트
- 어느 지점으로 돌아오기 위한 상태 정보를 모아놓은 것
- 롤백
- 최근의 체크포인트로 돌아가 결함에 대처
- 체크포인트