신뢰성

시스템 공학에서 **신뢰성**(dependability)은 시스템의 **가용성**, **신뢰도**, **유지보수성** 및 경우에 따라 **내구성**, **안전** 및 **보안**과 같은 기타 특성을 측정하는 척도이다. 실시간 컴퓨팅에서 **신뢰성**은 일정 기간 내에 신뢰할 수 있는 서비스를 제공하는 능력이다. 시스템이 공격이나 자연적인 고장에 노출되더라도 서비스 보증은 유지되어야 한다.

국제전기기술위원회 (IEC)는 기술위원회 TC 56을 통해 장비, 서비스 및 시스템의 수명 주기 전반에 걸쳐 신뢰성 평가 및 관리를 위한 체계적인 방법과 도구를 제공하는 국제 표준을 개발하고 유지한다. "신뢰할 수 있는 컴퓨팅 및 오류 허용"에 관한 IFIP 워킹 그룹 10.4는 이 분야의 기술 커뮤니티의 발전을 종합하는 역할을 하며, 결과를 전파하기 위해 매년 두 번의 워크숍을 개최한다.

신뢰성은 세 가지 요소로 나눌 수 있다.
* **속성** - 시스템의 신뢰성을 평가하는 방법
* **위협** - 시스템의 신뢰성에 영향을 미칠 수 있는 요소에 대한 이해
* **수단** - 시스템의 신뢰성을 높이는 방법

## 역사
일부 출처에 따르면 이 단어는 1910년대 닷지 브라더스 자동차 인쇄 광고에서 만들어졌다고 한다. 그러나 이 단어는 그 이전부터 존재했으며, 옥스포드 영어사전은 1901년에 처음 사용된 것을 발견했다.

1960년대와 1970년대에 오류 허용 및 시스템 신뢰성에 대한 관심이 증가하면서 신뢰성은 신뢰성의 척도가 안전 및 무결성과 같은 추가적인 척도를 포함하게 되면서 [x]의 척도가 되었다. 1980년대 초, 장-클로드 라프리는 신뢰성 고유의 의미 확장을 포함하지 않고 오류 허용 및 시스템 신뢰성 연구를 포괄하는 용어로 신뢰성을 선택했다.

신뢰성 분야는 이러한 시작부터 신뢰할 수 있는 시스템 및 네트워크에 관한 국제 회의, 신뢰할 수 있는 분산 시스템 국제 심포지엄 및 소프트웨어 신뢰성 공학 국제 심포지엄과 같은 여러 저명한 국제 회의에 의해 육성되는 국제적으로 활발한 연구 분야로 발전해왔다.

전통적으로 시스템의 신뢰성은 가용성, 신뢰성, 유지보수성을 포함했지만 1980년대부터 안전과 보안이 신뢰성 측정에 추가되었다.

## 신뢰성의 요소
### 속성

섬네일|신뢰성 및 보안과 속성, 위협 및 수단 간의 관계를 보여주는 분류 (라프리 외)

속성은 시스템의 품질이다. 이는 정성적 또는 정량적 측정값을 사용하여 전반적인 신뢰성을 결정하기 위해 평가될 수 있다. 아비제니스 외 https://lt.wikipedia.org/wiki/Algirdas_Antanas_Avi%C5%BEienis는 다음 신뢰성 속성을 정의한다.

* 가용성 - 올바른 서비스 준비 상태
* 신뢰성 - 올바른 서비스의 연속성
* 안전 - 사용자 및 환경에 대한 치명적인 결과의 부재
* 인티그리티 - 부적절한 시스템 변경의 부재
* 유지보수성 - 쉬운 유지보수 (수리) 능력

이러한 정의가 시사하듯이, 가용성과 신뢰성만이 직접 측정으로 정량화될 수 있는 반면 다른 것들은 더 주관적이다. 예를 들어 안전은 지표를 통해 직접 측정될 수 없지만, 신뢰 수준을 제공하기 위해 판단 정보를 적용해야 하는 주관적인 평가이며, 신뢰성은 시간에 따른 고장으로 측정될 수 있다.

기밀성, 즉 무단 정보 공개의 부재도 보안을 다룰 때 사용된다. 보안은 기밀성, 인티그리티, 가용성의 복합체이다. 보안은 때때로 속성으로 분류되기도 하지만 현재의 견해는 이를 신뢰성과 함께 묶어 신뢰성 및 보안이라는 복합 용어로 취급하는 것이다.

실제로 시스템의 기기에 보안 조치를 적용하면 일반적으로 외부에서 발생하는 오류의 수를 제한하여 신뢰성을 향상시킨다.

### 위협

위협은 시스템에 영향을 미치고 신뢰성을 떨어뜨릴 수 있는 것들이다. 명확하게 이해해야 할 세 가지 주요 용어가 있다.

* 결함(Fault): 결함(역사적인 이유로 버그라고도 함)은 시스템의 결함이다. 시스템에 결함이 존재한다고 해서 항상 고장으로 이어지는 것은 아니다. 예를 들어 시스템에 결함이 포함되어 있더라도 입력 및 상태 조건으로 인해 이 결함이 실행되어 오류가 발생하지 않을 수 있다. 따라서 특정 결함은 고장으로 나타나지 않을 수 있다.
* 오류(Error): 오류는 시스템의 의도된 동작과 시스템 경계 내의 실제 동작 간의 불일치이다. 오류는 결함 활성화로 인해 시스템의 일부가 예기치 않은 상태로 진입할 때 런타임에 발생한다. 오류는 잘못된 상태에서 생성되므로 디버거 또는 로그에 디버그 출력을 사용하는 것과 같은 특별한 메커니즘 없이는 관찰하기 어렵다.
* 고장(Failure): 고장은 시스템이 사양과 반대되는 동작을 나타내는 순간이다. 오류가 반드시 고장을 유발하는 것은 아니다. 예를 들어 시스템에서 예외가 발생할 수 있지만, 오류 허용 기법을 사용하여 이를 포착하고 처리할 수 있으므로 시스템의 전체 작동은 사양을 준수한다.

고장은 시스템 경계에서 기록된다는 점에 유의하는 것이 중요하다. 고장은 기본적으로 시스템 경계로 전파되어 관찰 가능한 오류이다.
결함, 오류 및 고장은 메커니즘에 따라 작동한다. 이 메커니즘은 때때로 결함-오류-고장 체인으로 알려져 있다. 일반적으로 결함이 활성화되면 오류(잘못된 상태)로 이어질 수 있으며, 오류로 인해 생성된 잘못된 상태는 또 다른 오류 또는 고장(시스템 경계에서 지정된 동작에서 관찰 가능한 편차)으로 이어질 수 있다.

결함이 활성화되면 오류가 생성된다. 오류는 결함과 동일하게 작동하여 추가 오류 조건을 생성할 수 있으므로 오류는 관찰 가능한 고장을 유발하지 않고 시스템 경계 내에서 여러 번 전파될 수 있다. 오류가 시스템 경계 밖으로 전파되면 고장이 발생했다고 말한다. 고장은 기본적으로 서비스가 사양을 충족하지 못한다고 말할 수 있는 지점이다. 한 서비스의 출력 데이터가 다른 서비스로 유입될 수 있으므로 한 서비스의 고장이 다른 서비스에 결함으로 전파될 수 있으며, 따라서 결함이 오류로 이어지고 고장으로 이어지고 오류로 이어지는 등의 체인이 형성될 수 있다.

### 수단

결함-오류-체인의 메커니즘이 이해되면 이러한 체인을 끊고 시스템의 신뢰성을 높일 수 있는 수단을 구축할 수 있다.
현재까지 네 가지 수단이 확인되었다.
# 방지
# 제거
# 예측
# 허용

결함 방지는 시스템에 결함이 도입되는 것을 방지하는 것과 관련이 있다. 이는 개발 방법론과 좋은 구현 기술을 사용하여 달성할 수 있다.

결함 제거는 개발 중 제거와 사용 중 제거라는 두 가지 하위 범주로 나눌 수 있다.
개발 중 제거는 시스템이 생산에 들어가기 전에 결함을 감지하고 제거할 수 있도록 검증을 필요로 한다. 시스템이 생산에 들어가면 고장을 기록하고 유지보수 주기를 통해 고장을 제거하기 위한 시스템이 필요하다.

결함 예측은 발생할 가능성이 있는 결함을 예측하여 제거하거나 그 영향을 회피할 수 있도록 한다.

결함 허용은 결함이 있는 상황에서도 시스템이 필요한 서비스를 제공할 수 있도록 메커니즘을 마련하는 것과 관련이 있으며, 서비스 수준이 저하될 수도 있다.

신뢰성 수단은 시스템 최종 사용자에게 보이는 고장의 수를 줄이는 것을 목표로 한다.

### 지속성

결함이 나타나거나 지속되는 방식에 따라 다음과 같이 분류된다.

* 일시적: 명백한 원인 없이 나타났다가 명백한 원인 없이 다시 사라진다.
* 간헐적: 식별 가능한 패턴 없이 여러 번 나타났다가 저절로 사라진다.
* 영구적: 일단 나타나면 저절로 해결되지 않는다.

## 정보 시스템의 신뢰성 및 생존성

신뢰성에 관한 일부 연구에서는 구조화된 **[[정보 시스템]]**을 사용한다(예: SOA 포함). 이는 속성 **[[생존성]]**을 도입하여 정보 시스템이 마스킹 불가능한 고장 후에 유지하거나 재개하는 저하된 서비스를 고려하기 위함이다.

현재 프레임워크의 유연성은 시스템 아키텍트가 사용 가능한 안전한 리소스의 초점을 가장 중요한 서비스를 지원하도록 재구성 메커니즘을 활성화하도록 장려하며, 실패 방지 시스템을 구축하기 위해 과도하게 프로비저닝하는 대신 이를 활용한다.

네트워크 정보 시스템의 일반화와 함께 사용자 경험에 더 큰 중요성을 부여하기 위해 **[[접근성]]**이 도입되었다.

성능 수준을 고려하기 위해 **성능성** 측정은 "지정된 기간 동안 결함이 있는 상황에서 객체 시스템이 얼마나 잘 작동하는지 정량화"하는 것으로 정의된다.

## 같이 보기
* 
* 
* 
* 
* 
* 
* 
* 

## 더 읽어보기
### 논문
* 윌프레도 토레스-포말레스: 소프트웨어 결함 허용: 튜토리얼, 2002
* 스테파노 포르카렐리, 마르코 카스탈디, 펠리치타 디 지안도메니코, 안드레아 본다발리, 파올라 인베라르디 오류 허용 분산 시스템에서 재구성 관리 접근 방식

### 컨퍼런스
*신뢰할 수 있는 시스템 및 네트워크 국제 심포지엄 (DSN): 1970년부터 매년 개최되는 커뮤니티의 주요 컨퍼런스.
*신뢰할 수 있는 분산 시스템 국제 심포지엄 (SRDS): 2021년에 40번째 개최.
지역별 컨퍼런스:
*라틴 아메리카 신뢰할 수 있는 컴퓨팅 심포지엄 (LADC): 2021년에 10번째 개최.
*환태평양 신뢰할 수 있는 컴퓨팅 국제 심포지엄 (PRDC): 2021년에 25번째 개최.

### 저널
* IEEE 신뢰할 수 있는 보안 컴퓨팅 트랜잭션 (TDSC)은 IEEE 오류 허용 컴퓨팅 기술 위원회 (TCFTC)의 범위에 속하는 주요 저널이다.
* 예지학 저널은 시스템 신뢰성 및 예지학의 모든 분야에서 독창적인 연구 및 산업 경험 기사를 전자적으로 출판하는 국제 포럼을 제공하는 오픈 액세스 저널이다.
* 국제 임계 컴퓨터 기반 시스템 저널

### 서적
* J.C. 라프리, 신뢰성: 기본 개념 및 용어, Springer-Verlag, 1992. 
*다니엘 P. 시위오렉, 로버트 S. 스와르츠, 신뢰할 수 있는 컴퓨터 시스템: 설계 및 평가, A K Peters/CRC Press, 1998. ISBN 978-1568810928

### 연구 프로젝트
* DESEREC, 향상된 재구성을 통한 신뢰성 및 보안, FP6/IST 통합 프로젝트 2006–2008
* NODES, 신뢰할 수 있는 시스템 네트워크
* ESFORS, 웹 서비스, 소프트웨어 및 시스템을 위한 유럽 보안 포럼, FP6/IST 조정 활동
* HIDENETS 고도로 신뢰할 수 있는 IP 기반 네트워크 및 서비스, FP6/IST 대상 프로젝트 2006–2008
* RESIST FP6/IST 네트워크 오브 엑설런스 2006–2007
* RODIN 복합 시스템을 위한 엄격한 개방형 개발 환경 FP6/IST 대상 프로젝트 2004–2007
* SERENITY 보안 및 신뢰성을 위한 시스템 공학, FP6/IST 통합 프로젝트 2006–2008
* Willow 생존성 아키텍처, 및 STILT, 테러 개입 및 대규모 팀워크 시스템 2002–2004
* ANIKETOS  신뢰할 수 있는 안전한 서비스 구성, FP7/IST 통합 프로젝트 2010–2014

## 각주

분류:안전
분류:보안
분류:안전공학
분류:컴퓨터 용어
분류:정형 기법
분류:품질