장애 허용 시스템
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
장애 허용 시스템은 일부 구성 요소의 고장에도 불구하고 작동을 지속하는 시스템을 의미하며, 역사적으로는 1951년 안토닌 스보보다가 제작한 SAPO 컴퓨터가 시초이다. 이러한 시스템은 우주 탐사선, 원자력 발전소, 슈퍼컴퓨터 등 다양한 분야에서 사용되며, 안전 실패, 우아한 성능 저하, 견고성, 복원력, 고장 투명성 등의 특징을 갖는다. 장애 허용 시스템은 TCP, HTML과 같은 기술, 그리고 복제, 중복성, 다양성과 같은 이중화 시스템을 통해 구현된다. 하지만, 높은 비용, 테스트의 어려움, 결함 감지 방해, 열등한 구성 요소 사용 가능성 등의 단점도 존재한다. 이러한 단점에도 불구하고, 원자력 발전, 항공우주, 자동차, 금융 등 안전과 신뢰성이 중요한 다양한 분야에서 활용된다.
최초의 장애 허용 컴퓨터는 1951년 체코슬로바키아에서 안토닌 스보보다가 제작한 SAPO였다.[1] 기본 설계는 자기 드럼을 릴레이로 연결하고 메모리 오류 감지(3중 모듈 중복성)의 투표 방식을 사용했다. 이와 유사한 방식으로 여러 대의 기계가 개발되었으며, 대부분 군사용으로 사용되었다.
결함 허용 시스템의 요구 사항은 다음과 같다.
2. 역사
1960년대에 NASA에서 아폴로 계획 및 기타 연구를 위해 장수명, 무유지보수(LLNM) 컴퓨팅 분야의 많은 개발이 이루어졌다.[2] NASA의 첫 번째 기계는 우주 관측소에 설치되었고, 두 번째 시도인 JSTAR 컴퓨터는 보이저에 사용되었다. 이 컴퓨터는 JPL 자체 테스트 및 수리 컴퓨터라고 불렸으며, 메모리 복구 방법을 위해 메모리 어레이의 백업을 가지고 있어 자체 오류를 감지하고 수정하거나 필요에 따라 중복 모듈을 가동할 수 있었다. 2022년 초 현재 이 컴퓨터는 여전히 작동하고 있다.[3]
초신뢰성 컴퓨터는 주로 항공기 제조업체,[1] 원자력 회사, 미국의 철도 산업에서 개척되었다. 이들은 오류 발생 시 지속적인 작동을 허용할 정도로 점진적으로 실패하면서 컴퓨터 출력의 지속적인 인간 모니터링에 의존하여 오류를 감지하는 대량의 가동 시간을 가진 컴퓨터가 필요했다. IBM이 새턴 V 로켓 유도를 위해 NASA를 위해 이러한 종류의 첫 번째 컴퓨터를 개발했지만, 나중에는 BNSF, 유니시스(Unisys), 제너럴 일렉트릭(General Electric)이 자체적으로 개발했다.[1]
1970년대에는 이 분야에서 많은 작업이 이루어졌다.[4][5][6] 예를 들어, F14 CADC는 내장형 자체 테스트 및 중복성을 가지고 있었다.[7]
일반적으로, 장애 허용 설계를 위한 초기 노력은 주로 내부 진단에 초점을 맞추었으며, 오류가 발생하면 무언가가 고장나고 작업자가 이를 교체할 수 있음을 나타냈다. 예를 들어, SAPO는 고장난 메모리 드럼이 고장 전에 소음을 내는 방식을 가지고 있었다.[8] 이후 노력은 시스템이 완전히 효과적이려면 자체 수리 및 진단이 이루어져야 함을 보여주었다. 즉, 오류를 격리한 다음, 수리의 필요성을 알리는 동시에 중복 백업을 구현하는 것이다. 이것은 N-모델 중복성이라고 알려져 있으며, 오류가 발생하면 자동 안전 장치가 작동하고 운영자에게 경고가 표시되며, 이는 오늘날 사용되는 레벨 1 장애 허용 설계의 가장 일반적인 형태이다.
투표는 여러 개의 중복 백업이 지속적으로 작동하고 서로의 결과를 확인하는 초기 방법이었다. 예를 들어, 네 개의 구성 요소가 5라는 답을 보고하고 하나의 구성 요소가 6이라는 답을 보고하면, 다른 네 개의 구성 요소가 다섯 번째 구성 요소에 오류가 있다고 "투표"하여 서비스에서 제외하게 된다. 이것을 M out of N 다수결 투표라고 한다.
역사적으로, 시스템 복잡성과 오류 부정 상태에서 오류 긍정 상태로의 과도 상태가 작동을 방해하지 않도록 하는 어려움 때문에, N-모델에서 M out of N으로 전환하는 추세가 있었다.
탠덤 컴퓨터스(Tandem Computers)는 1976년에[9], 스트라투스 테크놀로지스(Stratus Technologies)는 온라인 거래 처리를 위한 장애 허용 컴퓨터 시스템 설계 전문 회사 중 하나였다.
3. 주요 용어
4. 요구 사항
또한, 결함 허용 시스템은 계획된 서비스 중단과 계획되지 않은 서비스 중단 측면에서 특징지어질 수 있다. 이러한 것들은 일반적으로 하드웨어 수준뿐만 아니라 응용 프로그램 수준에서 측정된다. 성능 지표는 가용성이라고 하며 백분율로 표시된다. 예를 들어, 5 나인 시스템은 통계적으로 99.999%의 가용성을 제공한다.
5. 장애 복구 방식
장애 허용 시스템에서의 장애 복구는 롤 포워드(roll-forward)와 롤백(roll-back) 방식으로 나뉜다. 시스템에 장애가 발생하여 오류가 발생했을 때, 롤 포워드 복구는 그 시점의 시스템 상태에서 복구를 수행하고, 처리를 계속 진행한다. 반면, 롤백 복구는 시스템 상태를 체크포인트를 이용하여 약간 이전으로 되돌리고, 거기서부터 처리를 다시 시작한다. 롤백 복구에서 체크포인트(되돌릴 지점)와 장애 발생 지점 사이의 처리는 멱등성(몇 번 실행해도 한 번 실행한 것과 같음)을 만족해야 한다.[1] 몇몇 시스템은 오류의 종류나 발생 위치에 따라 롤 포워드와 롤백 방식을 적절히 조합하여 사용한다.[1]
구분 | 롤 포워드 복구 | 롤백 복구 |
---|---|---|
복구 시점 | 장애 발생 시점의 시스템 상태 | 이전 체크포인트 |
처리 방식 | 현재 상태에서 복구 후 처리 계속 | 이전 상태로 되돌아가 처리 재시작 |
멱등성 | 필요 없음 | 필요 |
6. 장애 허용 기술
장애 허용 시스템은 장애 발생 시에도 시스템이 완전히 정지하지 않고, 기능을 유지하거나 기능을 저하시키면서 처리를 계속할 수 있도록 설계된다. 이러한 시스템은 연속 가동이 필수적이거나 인명과 관련된 시스템에서 특히 중요하다.
장애 허용 기술은 시스템의 신뢰성을 높이기 위해 다양한 분야에서 연구되고 있다. 소프트웨어 모델링, 하드웨어 설계와 같은 분야뿐만 아니라 확률 모델, 그래프 이론, 병렬 컴퓨팅 등 다양한 학문 분야가 관련되어 있다.[18]
장애 허용은 개별 시스템의 특성뿐만 아니라 시스템 간의 연결에도 적용된다. 예를 들어, TCP는 패킷 통신 네트워크에서 발생할 수 있는 패킷 손실, 중복, 순서 변경 등의 문제에도 불구하고 신뢰성 있는 양방향 통신을 제공한다. HTML 또한 하위 호환을 고려하여 설계되어, 구형 브라우저에서도 새로운 기능을 일부 표시할 수 있다.
장애 복구 방법에는 '''롤 포워드'''와 '''롤백'''이 있다. 롤 포워드는 시스템 장애 발생 시점부터 복구를 수행하여 처리를 계속하는 방식이고, 롤백은 시스템 상태를 이전 체크포인트로 되돌려 처리를 재개하는 방식이다. 롤백 복구에서는 체크포인트와 장애 발생 지점 사이의 처리가 멱등성을 가져야 한다.
개별 시스템 내에서 장애 허용은 예외적인 상황을 예측하고 처리할 수 있도록 시스템을 구축하고, 자기 안정성을 통해 시스템이 오류 없는 상태로 수렴하도록 함으로써 구현된다. 시스템 장애가 심각하고 대처 비용이 큰 경우에는 이중화를 통해 장애 허용을 구현하는 것이 효과적이다. 또한, 장애 발생 지점을 특정하고 격리하기 위해 독립적인 장애 지점 특정 메커니즘이 필요하다.
6. 1. 이중화 시스템
복제는 동일한 시스템을 여러 개 준비하여 병렬로 실행시켜 다수가 만족한 결과를 올바른 결과로 적용하는 방식이다. 중복성은 동일한 시스템을 여러 개 준비하여 장애 발생 시 보조 시스템으로 전환하는 방식이다. 다양성은 같은 사양이지만 서로 다른 하드웨어 시스템을 여러 개 준비하여 복제와 유사하게 운용하는 방식으로, 각 시스템이 동일한 장애를 일으키지 않도록 한다.RAID는 중복성을 활용하여 기억 장치의 장애 허용 시스템을 구현한 예시이다. RAID 0처럼 속도 향상만을 위한 시스템은 엄밀히 말해 장애 허용 시스템에 해당하지 않는다.
락스텝 방식의 장애 허용 시스템은 각 부분을 다중화하여 병렬로 동작시킨다. 다중화된 각 부분은 항상 완전히 같은 상태를 유지해야 하며, 같은 입력을 주었을 때 같은 출력을 기대할 수 있다. 다중화 부분의 출력은 다수결 회로를 통해 비교된다.
각 부품을 이중화한 머신은 DMR(dual modular redundant)이라고 불린다. 이 경우 다수결 회로는 결과의 차이만 감지할 수 있기 때문에, 복구는 다른 방법으로 수행해야 한다. 각 부품을 삼중화한 머신은 TMR(triple modular redundant)이라고 불린다. 다수결 회로는 2대 1의 비교 결과를 통해 오류를 판정하고, 올바른 결과를 출력하며 오류가 있는 결과를 버릴 수 있다. 이후 오류를 일으킨 복제 부품은 고장난 것으로 간주되어 다수결 회로는 DMR 상태로 전환된다. 이 모델은 더 많은 복제본에 대해서도 적용 가능하다.
락스텝 방식의 머신은 각 복제 부품을 같은 클럭으로 동기화하여 동작시키는 것이 일반적이다. 하지만 클럭 동기화를 하지 않는 락스텝 시스템도 구축 가능하다. 복제를 동기화하기 위해서는 각 내부 상태를 일치시켜야 하며, 리셋 상태와 같은 동일한 내부 상태에서 동작을 시작하거나 복제 간에 상태를 복사하는 방법을 사용할 수 있다.
DMR의 변형 중 하나로 '''pair-and-spare''' 방식이 있다. 두 개의 복제 부품이 락스텝으로 같은 처리를 하고, 다수결 회로가 차이를 감지하면 오류 신호를 출력한다. 또 다른 이중화 시스템이 완전히 같은 처리를 수행하며, 두 이중화 시스템의 출력을 비교하여 오류가 없는 쪽을 채택한다. pair-and-spare는 네 개의 복제가 필요하여 TMR보다 복잡하지만, 상용 시스템으로 채택된 사례도 있다.
6. 2. Failure-oblivious computing
오류에도 불구하고 컴퓨터 프로그램이 계속 실행될 수 있도록 하는 기술이다.[19] 이 기술은 유효하지 않은 메모리 읽기를 처리할 때 프로그램에 조작된 값을 반환하는 방식으로 작동하며,[20] 프로그램은 조작된 값을 사용하고 원래 접근하려던 메모리 값은 무시한다. 이는 프로그램에 오류를 알리거나 프로그램을 중단시키는 전형적인 메모리 검사기와는 매우 대조적이다.이러한 접근 방식은 성능 저하를 유발한다. 주소 유효성을 동적으로 검사하기 위해 코드를 다시 작성해야 하므로 실행 시간이 80%에서 500%까지 늘어날 수 있다.[21]
6. 3. Recovery shepherding
복구 셰퍼딩은 널 포인터 역참조 및 0으로 나누기와 같이 치명적인 오류로부터 소프트웨어 프로그램이 복구할 수 있도록 하는 가벼운 기술이다.[22] 실패 무시 컴퓨팅 기술과 비교하여 복구 셰퍼딩은 컴파일된 프로그램 바이너리에서 직접 작동하며 프로그램을 다시 컴파일할 필요가 없다.이 기술은 JIT(Just-in-time) 컴파일 바이너리 계측 프레임워크인 Pin을 사용한다. 오류가 발생하면 응용 프로그램 프로세스에 연결되어 실행을 복구하고, 실행이 계속됨에 따라 복구 효과를 추적하며, 복구 효과를 응용 프로그램 프로세스 내에 포함시키고, 모든 복구 효과가 프로세스 상태에서 플러시된 후 프로세스에서 분리된다. 프로그램의 정상적인 실행을 방해하지 않으므로 무시할 수 있는 오버헤드만 발생한다.[22] 체계적으로 수집된 실제 널 역참조 및 0으로 나누기 오류 18개 중 17개에 대해 프로토타입 구현을 통해 응용 프로그램이 계속 실행되어 오류를 유발하는 입력에 대해 사용자에게 허용 가능한 출력 및 서비스를 제공할 수 있다.[22]
6. 4. 회로 차단기 패턴
회로 차단기 설계 패턴은 분산 시스템에서 치명적인 장애를 피하기 위한 기술이다.7. 중복성
중복성은 결함이 없는 환경에서는 불필요한 기능적 능력을 제공하는 것을 의미한다.[23] 시스템의 신뢰성을 향상시키기 위해 중복성을 통합한다는 아이디어는 1950년대 존 폰 노이만에 의해 개척되었다.[24]
중복성에는 두 가지 종류가 있다:[25]
- 공간 중복성: 결함이 없는 작동에는 불필요한 추가 구성 요소, 기능 또는 데이터 항목을 제공한다. 하드웨어, 소프트웨어, 정보 중복성으로 더 세분화된다.
- 시간 중복성: 계산 또는 데이터 전송을 반복하고, 결과를 이전 결과의 저장된 복사본과 비교한다. 이러한 종류의 테스트에 대한 현재 용어는 '서비스 내 결함 허용 테스트'(In-Service Fault Tolerance Test, ISFTT)이다.
예를 들어, 대형 화물 트럭은 타이어 하나가 펑크 나도 큰 문제 없이 운행할 수 있다. 이는 여러 개의 타이어를 가지고 있어 하나의 타이어가 고장 나도 다른 타이어가 기능을 대신하기 때문이다. (조향에 사용되는 앞 타이어는 예외인데, 일반적으로 다른 타이어보다 각각, 그리고 전체적으로 적은 하중을 받으므로 고장 가능성이 적다.)
8. 고려 사항
장애 허용 시스템은 시스템 일부에 장애가 발생하더라도 전체 시스템이 계속 작동하도록 설계된다. 이러한 시스템을 설계할 때는 다음과 같은 사항들을 고려해야 한다.
- 시스템 지속 동작 및 성능 유지: 시스템에 고장이 발생하더라도 지속적으로 동작해야 하며, 복구 작업 중에도 성능 간섭이 없어야 한다. 예를 들어, 탠덤 컴퓨터즈는 단일 지점 내결함성을 사용하여 가동 시간이 매우 긴 NonStop 시스템을 만들었다.[10][11]
- 단일 지점 내결함성: 단일 백업으로 구현된 시스템을 '단일 지점 내결함' 시스템이라고 하며, 대부분의 내결함성 시스템이 이에 해당한다. 이 경우, 평균 고장 간격이 평균 수리 시간보다 충분히 길어야 한다.
- 데이터 형식 설계: HTML과 같이 데이터 형식을 전방 호환성을 고려하여 설계하면, 웹 브라우저가 새롭고 지원되지 않는 엔티티를 무시하여 문서 사용에 문제가 없도록 할 수 있다.
- 접근성 및 아웃리치 보장: 자바스크립트에 의존하지 않는 경량 프론트엔드를 제공하여, 제한된 웹 브라우징 기능을 가진 게임 콘솔 등에서도 시스템을 사용할 수 있도록 한다. 트위터는 2020년 12월까지 이러한 방식을 사용했다.[10][11]
- 장애 격리 및 특정: 장애 발생 지점을 특정하고 격리할 수 있어야 하며, 독립적인 장애 지점 특정 메커니즘이 필요하다. 또한, 장애가 시스템 전체로 전파되지 않도록 격리해야 한다.
- 안전 모드: 장애로 인해 시스템, 조작자 또는 결과가 위험에 처할 수 있는 경우, 미션 크리티컬 시스템(무기 시스템, 유압 기계 등)은 안전 모드를 갖추어야 한다.
8. 1. 구성 요소 중요도
장애 허용 시스템을 설계할 때, 모든 구성 요소에 대해 내결함성 설계를 하는 것은 일반적인 선택이 아니다. 이는 무게, 크기, 전력 소비, 비용 증가뿐만 아니라 설계, 검증 및 테스트 시간 증가와 같은 여러 불이익을 가져오기 때문이다. 따라서 어떤 구성 요소에 내결함성을 부여해야 할지 결정하기 위해 다음과 같은 사항들을 검토해야 한다.- '''구성 요소의 중요도''': 자동차에서 라디오는 중요하지 않으므로 내결함성이 덜 필요하다.
- '''구성 요소의 고장 가능성''': 자동차의 구동축과 같이 일부 구성 요소는 고장 가능성이 낮으므로 내결함성이 필요하지 않다.
- '''내결함성 구현 비용''': 예를 들어, 중복된 자동차 엔진을 요구하는 것은 경제적으로나 무게와 공간 측면에서 너무 비싸서 고려할 수 없다.
예를 들어 자동차의 탑승자 구속 장치를 보자. 중력은 안전 벨트가 나오기 전 흔했던 탑승자 이탈 사고를 막는 주된 방법이었지만, 차량 전복 등의 상황에서는 실패할 수 있었다. 이러한 사고에서 탑승자 구속은 안전에 매우 중요하며, 안전 벨트와 같은 중복 구속 방법은 비용이 저렴하여 세 가지 평가 기준을 모두 통과한다. 에어백과 같은 "보조 구속 장치"는 더 비싸지만, 여전히 이 기준을 통과한다.
제동 시스템 또한 이 원칙이 적용된 좋은 예시이다. 브레이크 메커니즘은 중요하지만 갑작스러운 고장에 취약하지 않으며, 모든 바퀴에 균등한 제동력을 위해 중복되어 있다. 그러나 운전자가 제어하는 시스템은 케이블(녹, 늘어남, 끊어짐 등)이나 유압 유체(누출, 기포 발생, 물 흡수 등)를 사용하므로 덜 견고하다. 따라서 현대 자동차의 발 브레이크 유압 회로는 대각선으로 분할되어 고장의 작은 지점 두 개를 제공하며, 유압 회로가 완전히 고장 나는 경우에는 케이블로 작동하는 주차 브레이크가 작동하여 차량을 안전하게 정지시킨다.
주차 브레이크 자체는 덜 중요하며, 발 브레이크에 대한 일회성 백업으로 사용하지 않는 한 작동하지 않아도 즉각적인 위험을 초래하지 않는다. 따라서 자체에는 중복이 내장되어 있지 않다.
오토바이의 경우, 전방 및 후방 브레이크 시스템이 완전히 분리되어 있어 하나가 고장 나도 다른 하나는 영향을 받지 않는다. 또한, 후방 브레이크는 자동차에 비해 상대적으로 강력하며, 일부 스포츠 모델에서는 강력한 디스크를 사용한다.
8. 2. 고장 가능성
장애 허용 시스템을 설계할 때, 모든 구성 요소에 대해 내결함성 설계를 적용하는 것은 일반적인 선택이 아니다. 이는 무게, 크기, 전력 소비, 비용 증가뿐만 아니라 설계, 검증 및 테스트 시간 증가와 같은 여러 불이익을 야기하기 때문이다. 따라서 어떤 구성 요소에 내결함성을 부여할지 결정하기 위해 다음과 같은 사항들을 고려해야 한다.- '''구성 요소의 중요성:''' 자동차 라디오처럼 중요하지 않은 구성 요소는 내결함성이 덜 필요하다.
- '''고장 가능성:''' 자동차 구동축처럼 고장 가능성이 낮은 구성 요소는 내결함성이 필요하지 않을 수 있다.
- '''내결함성 구현 비용:''' 중복 엔진처럼 경제적, 무게, 공간 측면에서 비용이 너무 큰 경우는 고려하기 어렵다.
예를 들어, 자동차 탑승자 구속 장치는 중력이라는 '주' 구속 장치가 있지만, 차량 전복 등의 상황에서는 실패할 수 있다. 이러한 사고에서 탑승자 구속은 안전에 매우 중요하며, 안전 벨트가 나오기 전에는 탑승자 이탈 사고가 잦았다. 안전 벨트는 추가 비용이 적고, 무게와 공간 부담도 적어 좋은 해결책이다. 에어백과 같은 '보조 구속 장치'는 더 비싸지만, 여전히 고려할 만하다.
제동 시스템도 좋은 예시이다. 브레이크 메커니즘은 중요하지만 갑작스러운 고장에 취약하지 않고, 모든 바퀴에 균등한 제동력을 위해 중복되어 있다. 그러나 운전자가 제어하는 시스템(케이블, 유압 유체)은 덜 견고하다. 따라서 현대 자동차는 발 브레이크 유압 회로를 대각선으로 분할하여 고장 지점을 두 개로 만들고, 유압 회로 완전 고장 시에는 케이블 작동 주차 브레이크를 사용한다. 주차 브레이크는 덜 중요하며, 발 브레이크 고장 시 임시 방편으로 사용될 수 있다.
오토바이의 경우, 전방 및 후방 브레이크 시스템이 완전히 분리되어 하나가 고장 나도 다른 하나는 영향을 받지 않는다. 또한, 후방 브레이크는 상대적으로 강력하며, 저가형 모델에서는 견고한 로드 작동 드럼 방식을 사용하기도 한다.
장애 허용 시스템은 다음과 같은 기본적인 특성을 요구한다.
# 단일 장애점(single point of failure)이 없을 것 (대책 강구)
# 단일 고장점(single point of repair)이 없을 것
# 장애 부품 격리 가능
# 장애 전파 방지
# 대체 모드 존재
장애 허용 시스템은 예정된 서비스 중단과 예상치 못한 서비스 중단 모두를 척도로 사용할 수 있으며, 이를 가용성이라고 부르고 퍼센트로 나타낸다. 시스템 장애 발생 시, 수리 중에도 서비스가 계속될 수 있어야 하며, 소프트웨어 패치 적용 시에도 마찬가지다.
장애 발생 시, 발생 지점을 특정하고 격리할 수 있어야 하며, 독립적인 장애 지점 특정 메커니즘이 필요하다. 장애가 시스템 전체로 전파되지 않도록 격리해야 한다. 또한, 미션 크리티컬 시스템은 세이프 모드를 갖추어 위험을 방지해야 한다.
8. 3. 비용
장애 허용 시스템을 설계할 때 모든 구성 요소에 대해 내결함성 설계를 하는 것은 일반적인 선택이 아니다. 관련된 중복성은 무게, 크기, 전력 소비, 비용 증가뿐만 아니라 설계, 검증 및 테스트 시간 증가와 같은 여러 불이익을 가져오기 때문이다.[1] 따라서 어떤 구성 요소가 내결함성을 가져야 하는지 결정하기 위해 다음의 여러 선택 사항을 검토해야 한다.[1]- '''구성 요소의 중요성:''' 구성 요소가 얼마나 중요한가? 예를 들어 자동차에서 라디오는 중요하지 않으므로 내결함성이 덜 필요하다.[1]
- '''고장 가능성:''' 구성 요소가 고장날 가능성은 얼마나 큰가? 자동차의 구동축과 같이 일부 구성 요소는 고장날 가능성이 낮으므로 내결함성이 필요하지 않다.[1]
- '''내결함성 구축 비용:''' 구성 요소를 내결함성으로 만드는 데 비용이 얼마나 드는가? 예를 들어, 중복된 자동차 엔진을 요구하는 것은 경제적으로나 무게와 공간 측면에서 너무 비싸서 고려할 수 없다.[1]
이러한 원칙이 실제로 적용된 예시로 자동차의 탑승자 구속 장치, 제동 시스템, 오토바이의 브레이크 시스템 등을 들 수 있다. 자동차의 안전 벨트는 경제적, 무게, 공간 측면에서 비용이 낮아 세 가지 테스트를 모두 통과하여 모든 차량에 추가되었다. 반면 에어백은 더 비싸기 때문에 이 테스트를 약간의 여유로 통과한다.[1]
9. 단점
결함 허용 설계는 분명한 장점을 가지지만, 다음과 같은 잠재적인 단점도 존재한다.[1]
단점 | 설명 |
---|---|
결함 감지 방해 | 시스템 복잡성 증가로 인해 개별 구성 요소의 결함을 조기에 발견하기 어려워진다. |
결함 수정 우선 순위 감소 | 시스템이 정상 작동하는 것처럼 보여 결함 수정의 긴급성이 떨어질 수 있다. |
테스트 어려움 | 백업 구성 요소의 정상 작동 여부를 확인하기 어렵다. (예: 체르노빌 원자력 발전소 사고) |
비용 증가 | 중복 구성 요소 추가 등으로 인해 비용(경제적 비용, 무게 등)이 증가한다. (예: 유인 우주 비행) |
열등한 구성 요소 사용 가능성 | 비용 절감을 위해 성능이 낮은 부품을 사용할 수 있지만, 이는 전체 시스템의 신뢰성을 저하시킬 수 있다. |
9. 1. 결함 감지 방해
- '''동일 구성 요소의 결함 감지 방해.''' 승용차를 예로 들면, 결함 허용 시스템 때문에 운전자는 타이어 펑크 여부를 쉽게 알 수 없다. 이는 보통 별도의 "자동 결함 감지 시스템"으로 처리된다. 타이어의 경우, 공기압 모니터가 압력 손실을 감지하여 운전자에게 알린다. 매 정지 시마다 모든 타이어를 수동으로 검사하는 "수동 결함 감지 시스템"이 대안이 될 수 있다.[1]
- '''다른 구성 요소의 결함 감지 방해.''' 구성 요소 B가 구성 요소 A의 출력을 기반으로 작동하는 경우, B의 결함 허용은 A의 문제를 숨길 수 있다. 나중에 구성 요소 B가 결함 허용이 덜한 설계로 변경되면, 시스템이 갑자기 실패하고 새 구성 요소 B가 문제인 것처럼 보일 수 있다. 시스템을 주의 깊게 검토해야만 근본적인 문제가 실제로 구성 요소 A에 있다는 것이 명확해진다.[1]
9. 2. 결함 수정 우선 순위 감소
작업자가 결함을 인지하더라도 결함 허용 시스템이 있으면 결함 수리의 중요성이 줄어들 수 있다.[1] 결함이 수정되지 않으면, 결함 허용 구성 요소가 완전히 고장 나거나 모든 중복 구성 요소가 고장 났을 때 결국 시스템 고장으로 이어진다.[1]9. 3. 테스트 어려움
원자력 발전소와 같은 특정 중요 장애 허용 시스템의 경우, 백업 구성 요소가 제대로 작동하는지 확인하는 쉬운 방법이 없다. 이와 관련하여 가장 악명 높은 예는 체르노빌인데, 작업자가 1차 및 2차 냉각을 비활성화하여 비상 백업 냉각을 테스트했다. 백업이 실패하여 노심 용융과 방대한 양의 방사능이 방출되었다.[4]9. 4. 비용 증가
장애 허용 구성 요소와 중복 구성 요소는 모두 비용을 증가시키는 경향이 있다. 이는 순전히 경제적인 비용일 수도 있고, 무게와 같은 다른 측면을 포함할 수도 있다. 예를 들어, 유인 우주 비행은 너무 많은 중복 및 장애 허용 구성 요소를 가지고 있어 동일한 수준의 안전이 필요하지 않은 무인 시스템에 비해 무게가 크게 증가한다.[1]장애 허용 설계는 비용 증가를 완화하기 위해 열등한 구성 요소의 사용을 허용할 수 있지만, 여러 개의 열등한 구성 요소를 사용하면 시스템의 신뢰성이 낮아질 수 있다.[1]
9. 5. 열등한 구성 요소 사용 가능성
결함 허용 설계는 시스템을 작동 불가능하게 만들었을 열등한 구성 요소의 사용을 허용할 수 있다. 이러한 관행은 비용 증가를 완화할 수는 있지만, 여러 개의 열등한 구성 요소를 사용하면 시스템의 신뢰성이 유사한 비결함 허용 시스템과 같거나 더 나빠질 수 있다.[1]10. 활용 분야
안전필수(safety-critical) 및 임무필수(mission-critical) 임베디드 시스템에서 장애가 발생하면 인명이나 재산 피해를 초래하는 사고로 이어질 수 있다. 이러한 시스템에는 장애 허용 시스템이 사용된다. 구체적으로는 원자력, 발전, 에너지, 국방, 항공, 우주, 자동차, 철도, 조선, 플랜트, 금융, 의료 등 다양한 분야의 임베디드 시스템에서 활용되고 있다.[1]
11. 같이 보기
참조
[1]
서적
Computer Structures: Principles and Examples
https://archive.org/[...]
McGraw-Hill
[2]
웹사이트
The STAR (Self-Testing And Repairing) Computer: An Investigation Of the Theory and Practice Of Fault-tolerant Computer Design
https://www.computer[...]
[3]
웹사이트
Voyager Mission state (more often than not at least three months out of date)
https://voyager.jpl.[...]
2022-04-01
[4]
간행물
Reliability Issues in Computing System Design
http://portal.acm.or[...]
1978-06
[5]
간행물
Fault tolerant operating systems
http://portal.acm.or[...]
1976-12
[6]
간행물
Operating System Structures to Support Security and Reliable Software
http://portal.acm.or[...]
1976-12
[7]
문서
The F14A Central Air Data Computer, and the LSI Technology State-of-the-Art in 1968
http://www.firstmicr[...]
[8]
간행물
Fault tolerant computing in computer design
2003-04
[9]
웹사이트
History of TANDEM COMPUTERS, INC.
http://www.fundingun[...]
2023-03-01
[10]
웹사이트
Why your website should work without JavaScript.
https://dev.to/shado[...]
2021-05-16
[11]
웹사이트
Legacy Twitter Shutdown Means You Can't Tweet From The 3DS Anymore
https://screenrant.c[...]
2021-07-01
[12]
간행물
Evaluation and comparison of fault-tolerant software techniques
https://ieeexplore.i[...]
1993
[13]
문서
Operating Systems. Internals and Design Principles
2009
[14]
논문
Introduction to Distributed Systems
2009-11-23
[15]
웹사이트
Control
http://grouper.ieee.[...]
2016-04-06
[16]
문서
Essentials of Equipment in Anaesthesia, Critical Care, and Peri-Operative Medicine
2017
[17]
서적
Fault-Tolerant Design
Springer
2013
[18]
서적
Reliability evaluation of some fault-tolerant computer architectures
Springer-Verlag
1980-11
[19]
서적
2012 Seventh International Conference on Availability, Reliability and Security
IEEE
2012
[20]
문서
Context-Aware Failure-Oblivious Computing as a Means of Preventing Buffer Overflows
http://dx.doi.org/10[...]
Springer International Publishing
2020-10-07
[21]
서적
Characterizing Software Self-Healing Systems
Springer Science+Business Media
[22]
서적
Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
ACM
2014
[23]
문서
Dependable Computing and Fault Tolerance: Concepts and Terminology
http://www.macedo.uf[...]
1985
[24]
문서
Probabilistic Logics and Synthesis of Reliable Organisms from Unreliable Components
http://www.cyclify.c[...]
Princeton University Press
1956
[25]
간행물
Fault-Tolerant Systems
https://www.computer[...]
1976
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com