검수요청.png검수요청.png

"장애 (정보통신)"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (내용을 "'''장애'''는 다음을 의미한다. * '''장애 (정보통신)''' : 정보통신(ICT) 분야에서 사용되는 의미로 하드웨어나 소프트..."(으)로 바꿈)
잔글
 
(같은 사용자의 중간 판 3개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''장애'''는 다음을 의미한다.
+
[[파일:장애 허용 시스템.png|썸네일|400 픽셀|장애 허용 시스템]]
  
* '''[[장애 (정보통신)]]''' : [[정보통신]](ICT) 분야에서 사용되는 의미로 [[하드웨어]]나 [[소프트웨어]] 시스템에서 결함 즉, 오류를 말한다.
+
'''장애'''(障礙)란 [[정보통신]](ICT) 분야에서 사용되는 의미로 [[하드웨어]]나 [[소프트웨어]] 시스템에서 결함 즉, 오류를 말한다.
* '''[[장애 (신체)]]'''(障礙) : [[신체]]나 정신에 기능적으로 문제가 있어서 제 기능을 하지 못하는 것을 말한다.
 
  
 +
==개요== 
 +
흔히 서버에 많은 접속자가 몰려 게임 접속이 안 되거나 웹 사이트에 접속자가 몰려 네트워크의 속도가 지연되고 에러가 발생한다는 이야기를 한 번쯤은 들어보았을 것이다. 또 물리적인 장치가 내부의 결함으로 인해 작동되지 않을 때도 있다. 이러한 모든 것을 정보통신의 장애라고 흔히 이야기한다. 하드웨어에서 장애가 발생할 수도있고 반대로 소프트웨어(서버,코딩) 부분에서도 장애가 발생할 수 있다. 최근 [[4차 산업혁명]]이 대두 되면서 [[사물인터넷]](IoT) 기술들이 발전되고 있다. [[헬스케어]], [[스마트워치]], [[GPS]] 등이 여기에 해당한다. 사물인터넷의 확장에 따라 장애 허용 시스템(FTS, Fault tolerant system)이 발달하게 되었다. 장애 허용 시스템은 하드웨어나 소프트웨어 시스템에서 결함, 장애가 발생하여도 정상적인 운영할 수 있도록 만든 시스템이다. 장애 발생 시 어느 한 부분에서의 기능이 마비되고 지속해서 반복될 경우 부품의 기능을 점점 사용하지 못하여 마지막에는 시스템이 정지하게 된다. 장애 허용 시스템은 단계별로 성능이 저하되는 특징을 가지고 있으며 장애 허용 시스템이 없는 일반 시스템에서는 어느 한 부분만 고장 나도 제대로 사용할 수 없는 문제가 나타난다.<ref name="FTS"> 장애 허용 시스템 위키디피아 -https://ko.wikipedia.org/wiki/%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C </ref>
  
{{동음이의어}}
+
이런 기능을 보안하기 위해 장애 허용 시스템 즉, 결함 허용 시스템과 [[페일오버]] 방식이 나타나게 되었다. 페일오버 방식은 사전에 소프트웨어나 운영체제를 다른 장비에 백업해놓고 내 외부적으로 문제 발생 시 백업 장소에서 데이터를 가져와 실행하는 것이고 장애 허용 시스템은 시스템 장애 발생 시에 관리자가 조치하는 동안 정상 상태와 마찬가지로 구동할 수 있도록 해주는 것이다. 장애 문제가 지속되면 다른 시스템의 결함까지 이어져 치명적인 시스템 손상을 일으킬 수 있다. 따라서 시스템의 사용 불가를 대비할 수 있는 시간을 최대한 확보해 주는 것이 장애 허용 시스템의 핵심 기술이다. 장애 허용 시스템은 시스템의 가동률을 극대화해주며 데이터의 무결성과 일관성을 지원하고 전력선 배분 시스템이나 신호등 제어 시스템처럼 사회 기반 시설에 가장 많이 적용되고 있는데 비행기나 배에서 사용하는 항로 제어 시스템에도 장애 허용 시스템이 적용된다. 보통 고장이 발생하면 인명이나 재산에 피해를 일으키는 안전 필수 및 임무 필수분야에 적용되는 임베디드 시스템이다.<ref name= "홈피">스마트 학주니, 〈[https://poem23.com/2945 IoT에서 활용하는 장애허용시스템. 이제는 옵션이 아닌 필수 기술이 되어가고 있는데..]〉,《학주니닷컴》, 2015-04-15</ref>
 +
 
 +
==특징==
 +
===시스템===
 +
====장애 허용 시스템====
 +
장애 허용 시스템이 되어있는 컴퓨터는 완전한 하드웨어 중복성의 한 형태이다. 두 개 이상의 시스템이 동시에 작동하여 동일한 응용 프로그램을 미러링(복사)하고 서로 잠금 단계에서 명령을 실행한다. 기본 시스템에서 하드웨어 오류가 발생하면 동일한 응용 프로그램을 실행하는 보조 시스템이 동시에 서비스 손실 없이 정보를 받게 된다. 이 접근 방식은 하드웨어가 동일한 시스템에 의해 완전히 백업되도록 하여 데이터 센터 중단을 방지하는 데 사용될 수 있다. 장애 허용 시스템 컴퓨터에 구성 요소의 결함을 즉시 감지하고 미러링된 시스템을 완벽하게 실행할 수 있는 특수 하드웨어가 필요하다. 일반적인 네트워크의 경우 서버 다운 타임을 완전히 제거할 수 있는데 이 방식의 장점은 오류 발생 시 모든 프로그램의 메모리 내 응용 프로그램 상태가 손실되지 않으며 다른 응용 프로그램 및 데이터에 대한 접근이 유지된다는 것이다. 더욱 복잡한 시스템 및 네트워크에서 장애 보호 시스템은 모든 시스템 요청의 실패와 관계없이 실행되도록 보장하지만, 시스템이 중복성을 통해 요청을 조정하고 다시 라우팅하면 시간이 더 걸릴 수 있다. 그러나 중복 시스템이 서로 동기화되어 작동하기 때문에 하나의 장애를 유발하는 소프트웨어 문제는 미러링 된 시스템으로 전송되어 장애 보호 시스템이 운영 체제 또는 응용 프로그램 오류에 취약하여 여전히 서버 다운 타임 또는 서버 중단을 초래할 수 있고 데이터 전송이 중단될 수 있다.<ref name="주소"> Ali Marashi , 〈[https://www.vxchnge.com/blog/fault-tolerance-vs-high-availability What Is Fault Tolerance and Why It Differs From High Availability]〉, 《vxchange 블로그》, 2019-05-31</ref> 흔히 장애 허용 시스템을 품격있는 저하라고도 부른다. 그 이유는 시스템의 장애가 있더라도 성능 그대로 사용할 수 있으며 다른 모듈에도 장애가 발생하여도 성능이 떨어지긴 하지만 계속 사용할 수 있기 때문이다. 장애 보호 시스템은 원래금 높은 수준의 시스템 가용성과 성능을 유지하기 위해 백업 구성 요소를 교체한다. 성능이 저하 되더라도 시스템이 정상 작동만 한다면 해당 시스템은 문제가 없다.
 +
 
 +
* '''역사'''
 +
:* 제1세대 : 특별한 하드웨어 구조와 그에 맞는 고유의 동작 시스템, 프로그램 언어, 구현된 응용 소프트웨어를 요구한다. 장애 허용 시스템을 구현하는 데는 상당한 비용이 필요하며 아주 제한적인 응용 분야에서만 사용되었다.
 +
:* 제2세대 : 특별하게 고안된 고유의 운영체제를 요구하지만, 유닉스에서 사용되는 표준 응용 소프트웨어를 큰 변경 없이 그대로 사용할 수 있도록 설계되어 있다. 장애 허용 시스템만의 독자적인 운영체제를 사용하기 때문에 이것을 유지하는 일은 매우 어렵고 번거로운 일이 되며, 유닉스의 기능 중 여러 기능이 구현되지 않아 일반적인 시스템(Non-Fault Tolerant)에서 사용된 소프트웨어들이 장애 허용 시스템에 그대로 사용할 수 없게 되는 일이 항상 존재하게 되었다.
 +
:* 제3세대 : 상업적으로 사용 가능한 운영체제를 장애 보호 시스템에 돌아가기 위해, 이식기법을 사용할 수 있도록 설계되었다. 따라서 시장에 나와 있는 다양한 소프트웨어를 사용할 수 있는 이점이 있다. 그러나 특별하게 고안된 시스템 하드웨어 플랫폼에 상용 운영체제가 돌아갈 수 있도록 하여야 하는 번거로움과 어려움이 여전히 존재한다.
 +
:* 제4세대 : 표준 운영체제와 상용 하드웨어를 거의 수정하지 않고 사용할 수 있도록 설계되었다. 따라서 이러한 시스템의 사용자는 일반적인 시스템에서 사용되는 가장 최신의 운영체제, 데이터베이스, 그리고 다양한 응용 소프트웨어를 손쉽게 사용할 수 있다.
 +
:* 제5세대 : 앞으로는 장애 허용 컴퓨터 시스템의 기술이 보편화 될 것으로 전망되며, 일반 컴퓨터 시스템 구조 설계에도 이러한 장애 허용 핵심 기술이 많이 적용되어 장애 허용 시스템과 일반 시스템의 개념이 사라질 것이라는 전망이다.
 +
 
 +
* '''활용'''
 +
: 장애 보호 시스템은 컴퓨터 내부 모듈에 장애에 장애가 발생하여도 즉각적인 조치가 가능하다. 이는 컴퓨터 내의 시스템이나 응용프로그램이 수행되고 있다 해도 모듈을 빼내어 다른 것으로 교체할 수 있다. 고장 난 모듈은 온라인 상태에서 사용자가 전혀 모르게 교환이 가능하여 어떠한 장애가 발생하더라도 아무런 데이터의 손실 및 파괴 없이 시스템은 정상작동을 유지한다. 이는 내부적 장애(결함)를 감지하여 진단하고 복구하는데 컴퓨터의 응용 소프트웨어에 아무런 영향을 주지 않는다. 은행이나 여행사 또는 통신 서비스를 제공하는 전화국에서는 높은 신뢰도를 가지며 동시에 확장 가능한 장애 허용 시스템 컴퓨터를 시스템을 이용한다. 그뿐만 아니라 인터넷 사물에서도 많이 사용되는데 이중화 방식의 복제와 다중화 방식을 가장 많이 사용한다. 복제 방식의 경우 인터넷 사물 시스템에서 장애로 인해 잘못된 값을 생산하는 것을 막을 뿐만이 아니라 정상적인 상황에서도 생성된 값의 보정 역할을 수행하는 장점이 있다. 다만 같은 시스템을 2개 이상 준비해서 운용해야 하므로 실제로 시스템에 들어가는 자원의 소모가 많다는 단점이 존재한다. 인터넷 사물 시스템이 대부분 임베디드 시스템을 기반으로 하므로 일반 PC처럼 시스템 자원을 폭넓게 사용할 수 있는 환경은 아니다. 제한적인 자원을 이용하기 때문에 복제 방식을 이용하게 되면 자원 사용에 대한 효율성 문제가 생기게 된다. 다중화 방식의 경우 동일한 시스템을 2대 정도 운영하지만 메인으로 사용되는 시스템에 주력 자원이 들어가고 나머지는 대기 자원이 들어가기 때문에 복제 방식보다는 자원 효율성은 좋은 편이다. 하지만 시스템 자체에서 생긴 문제로 인한 잘못된 데이터 생산이 일어날 수 있다는 문제는 존재한다. 장애 허용 시스템을 도입하는 입장에서 복제 방식이 성능적인 면에서 다중화 방식보다 우수하지만, 시스템 환경의 제약으로 인해 복제 방식보다는 다중화 방식을 인터넷 사물 시스템에서 많이 사용하고 있다. 과거 장애 허용 시스템은 서버 시스템에서 지속적인 서비스 유지를 위해서 이중화 시스템(다중화 방식을 이용한) 방식으로 많이 이용했다. 그리고 이제는 그 영역을 클라이언트로 넓히게 되었고 단순한 PC나 노트북, 스마트폰과 같은 클라이언트를 포함하여 센서, 웨어러블 시스템, 그 외의 다양한 임베디드 시스템에 도입되기 시작했다. 인터넷 사물로 그 영역이 확대되면서 지속해서 정확한 데이터를 수집해야 하는 시스템 영역에서 장애 허용 시스템의 역할은 더 커지고 있다. 앞서 소개했던 자동차 분야에서도 인터넷 사물이 도입되기 시작했는데 차량 제어 부분에 있어서 시스템의 장애로 인해 잘못된 데이터가 생성되게 되면 그 피해가 엄청나게 커지게 될 것이다. 그 때문에 부분에 장애 허용 시스템은 옵션이 아닌 필수 기능으로 곧 자리를 잡게 될 것으로 보인다.<ref name= "홈피"></ref>
 +
 
 +
====고가용성====
 +
고가용성 솔루션은 서버 다운 타임을 최소화 하기위한 소프트웨어 기반 접근 방식이다. 고가용성을 이용하여 장애 문제를 해결하기도 한다. 중복된 물리적 하드웨어를 복제하는 대신 서로를 모니터링하고 장애 조치 기능이 있는 일련의 서버를 클러스터링한다. 소프트웨어 오류, 응용 프로그램 오류 또는 하드웨어 오류 등 기본 서버에서 문제가 발생하면 백업 서버 중 하나가 작동하여 충돌한 서버에서 활성화 된 응용 프로그램을 다시 시작한다. 고가용성 기술은 장애를 매우 신속하게 복구할 수 있지만, 서버 다운 타임 지연이 발생하여 시스템을 재부팅 하는 동안 중요한 데이터와 응용 프로그램을 사용할 수 없게 된다. 일반적으로 클러스터의 다른 서버에서 실행 중인 데이터를 복구할 수 있을 만큼 유연하지만, 메모리 응용 프로그램 상태는 종종 손실된다. 고가용성 기술의 백업 서버는 서로 독립적이기 때문에 소프트웨어 장애 및 데이터 센터 중단으로부터 실질적인 보호 기능을 제공하고 운영 체제 오류로 인해 기본 서버가 다운되면 독립 백업 서버에서 문제가 복제되지 않는다.<ref name="주소"></ref>
 +
 
 +
===작동방식===
 +
:{|class=wikitable width=1000
 +
|+장애 보호 시스템 동작
 +
!align=center|구성단계
 +
!align=center|기법
 +
!align=center|상세내용
 +
|-
 +
|align=center|장애감지
 +
|align=center|핑/에코 테스트 실시
 +
|align=center|하드웨어로 구성된 비교기를 통하여 수행한다. 시스템 내에서 장애가 발생하면<br>해당 모듈 또는 시스템은 장애 상태로 들어가게 되고 운영체제는 각 모든 하드웨어 모듈들의 상태를 분석하여<br>어느 모듈이 장애를 유발했는지 분석하여 알아낸다.
 +
|-
 +
|align=center|장애진단
 +
|align=center|모니터링, 비교,<br>시뮬레이션, 오류비트
 +
|align=center|장애를 진단하여 장애가 영구적인 경우에만 해당 모듈을 시스템 구성에서 제거한다.<br>만약 일시적인 문제라면 장애진단을 통해 시스템 동작에 아무런 영향을 끼치지 않는다면 장애 보호 시스템으로 인식하여<br>기존의 동작시스템을 유지한다. 하지만 결함이 계속 발생한다면 해당 시스템을 제거한다.
 +
|-
 +
|align=center|장애복구
 +
|align=center|중복, 교체, 격리
 +
|align=center|장애를 유발한 모듈을 시스템에서 제거하여 시스템을 재구성한다
 +
|}
 +
:{|class=wikitable width=1000
 +
|+실현 기법
 +
 
 +
!align=center|구분
 +
!align=center|실현기술
 +
!align=center|상세내용
 +
|-
 +
|align=center rowspan=4|하드웨어 기술
 +
|align=center|듀얼 모듈 기법
 +
|align=center|하드웨어를 중복하여 그 출력을 비교하여 결함을 감지
 +
|-
 +
|align=center|트리플 모듈 기법
 +
|align=center|3개 이상의 모듈에서 같은 입력에 대해 동일한 연산을 수행하여 다수결의 원칙 기반 결함을 감지
 +
|-
 +
|align=center|와치독 타이머
 +
|align=center|정상 작동 시 주기적으로 타이머를 초기화시켜 시스템 결함 여부를 감지
 +
|-
 +
|align=center| 자동화 삭제 기법
 +
|align=center|N개의 하드웨어에서 출력 결과가 다른 하드웨어의 계산과정을 배제
 +
|-
 +
|align=center rowspan=4|소프트웨어 기술
 +
|align=center|체크 포인트
 +
|align=center|소프트웨어 수행 중 검사 시점을 설정하여 오류가 발견되면 발생 이전의 검사 시점으로 돌아가서 재수행
 +
|-
 +
|align=center|리커버리 백
 +
|align=center|재수행에 근거하여, 검사 시점에서 오류가 발견되면 지정된 이전 검사점으로 되돌아가서<br>같은 기능을 가진 다른 소프트웨어 모듈을 수행
 +
|-
 +
|align=center|N-자동화 체크 프로그램
 +
|align=center|둘 이상의 자동화-체크 컴포넌트가 수행되며 하나는 기능 수행, 다른 하나는 대기 상태로,<br>결함 발견 시에 대기 상태의 컴포넌트가 수행
 +
|-
 +
|align=center|N 버전 프로그래밍
 +
|align=center|N개의 독립적인 소프트웨어 모듈 수행 결과를 비교하여 다수의 수행 결과를 채택
 +
|-
 +
|align=center rowspan=4|데이터 베이스 기술
 +
|align=center|롤백
 +
|align=center|장애 발생 시 데이터베이스에 대한 모든 변경사항, 데이터 변경이 되지 않은 연산에 대한 작업 취소
 +
|-
 +
|align=center|체크 포인트
 +
|align=center|로그 파일에 체크포인트를 기록하고 장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복 작업에서 제외하고<br>이후에 처리된 내용에 대해서만 회복 작업을 수행
 +
|-
 +
|align=center|쉐도우 페이징
 +
|align=center|연산 작업 실행 동안 수행 메모리 테이블과 그림자 메모리 테이블을 유지하여 필요 시 회복 작업 수행
 +
|-
 +
|align=center|로그 파일
 +
|align=center|데이터 변경이 되지 않은 작업을 로그 파일 기반 회복
 +
|-
 +
|align=center rowspan=4|데이터 기술
 +
|align=center|패리티 코드
 +
|align=center|2진 데이터 중 “1”의 개수를 홀수 또는 짝수로 규정하여 결함을 감지
 +
|-
 +
|align=center|체크 썸
 +
|align=center|하나의 블록 정보 합 기반 정보 결함 감지
 +
|-
 +
|align=center|버거코드
 +
|align=center|하나의 Data 중 “1”의 개수를 2진 정보로 추가
 +
|-
 +
|align=center|해밍코드
 +
|align=center|결함 감지 및 단일 결함을 교정하는 코드 기법
 +
|-
 +
:{|class=wikitable width=1000
 +
|+고가용성과 비교
 +
!align=center|구분
 +
!align=center|장애 허용 시스템
 +
!align=center|고가용성
 +
|-
 +
|align=center|페일오버 시간
 +
|align=center|0초
 +
|align=center|30초~300초
 +
|-
 +
|align=center|동시성 유지보수
 +
|align=center|필요
 +
|align=center|불필요
 +
|-
 +
|align=center|시스템 비용
 +
|align=center|10 ~ 20배
 +
|align=center|2배이상
 +
|-
 +
|align=center|애플리케이션
 +
|align=center|제한적
 +
|align=center|대부분 범용제품
 +
|-
 +
|align=center|운영체제
 +
|align=center|전용 운영체제
 +
|align=center|범용 운영체제
 +
|-
 +
|align=center|하드웨어
 +
|align=center|전용 하드웨어
 +
|align=center|범용 하드웨어
 +
|-
 +
|}<ref>도리 , 〈[http://blog.skby.net/%ea%b2%b0%ed%95%a8%ed%97%88%ec%9a%a9%ec%8b%9c%ec%8a%a4%ed%85%9c-fts-fault-tolerant-system/ 결함허용시스템 (FTS, Fault Tolerant System)]〉, 《에스케이비 블로그》, 2020-03-20</ref>
 +
 
 +
===복구방식===
 +
====롤백====
 +
시스템이 고장 난 시점의 이전 상태로 되돌리는 것을 말한다. 시스템이 정상 상태로 작동 될 때 스냅샷 방식으로 데이터를 저장하고 이후 문제가 발생한다면 특정 시점의 스냅샷을 찾아 저장한 시점으로 돌아가 데이터를 복구한다.
 +
 
 +
====이중화====
 +
이중화 방식은 복제(Replication), 다중화(Redundancy), 다양화(Diversity) 방식으로 3가지로 나뉘게 된다.
 +
 
 +
* '''복제'''(Replication)
 +
: 같은 시스템을 복사하여 병렬 방식으로 준비하고 다수의 시스템에 가장 적합한 결과를 선택한다. 하나의 값으로 시스템이 작동하다가 문제가 생기더라도 이미 작동 중인 다른 시스템에서 제대로 된 값을 찾아 채택하는 것이다.
 +
 
 +
* '''다중화'''(Redundancy)
 +
[[파일:복제방식.jpg|썸네일|200 픽셀|복제방식 그림]]
 +
[[파일:다중화방식.JPG|썸네일|200 픽셀|다중화방식 그림]]
 +
 
 +
: 같은 시스템을 멀티(2개 이상)로 준비하고 구동한다. 마스터-슬레이브(Master-Slave) 방식, 또는 액티브-스탠바이 방식으로 흔히 이야기한다. 상위계층이 문제가 생겼을 시 하위계층 시스템을 작동시킨다. 현재 서버 시스템에서 가장 많이 사용하는 방식이다. 그중에서 레이드(RAID)는 다중화 방식을 활용한 장애 허용 시스템을 기억 장치에 적용한 예이다. 레이드의 개념이 발전하면서 레이드 0 같이 속도만을 향상하기 위한 시스템도 레이드에 포함되나 이는 엄밀히 말해 장애 허용 시스템에는 해당하지 않는다. 데이터를 블록 형식으로 저장하기 때문에 디스크의 성능은 향상되지만, 미러링이 되지 않아 안전성에는 효과가 떨어진다. 레이드 1은 두 개의 같은 하드웨어를 사용하지만 저장하는 데이터는 레이드 0과 다르게 두 개의 하드웨어 모두에 동일한 정보를 저장한다. 디스크중복 쓰기를 통하여 안정성이 확대되지만, 공간효율은 2배만큼 줄어든다. 레이드2는 비슷한 데이터의 내용을 여러 개로 묶어서 각각의 하드웨어에 차례대로 저장하는 기법이다. 이외에도 여러 가지 저장 방법이 있으며 최근에는 레이드 0과 1 기술을 혼합하여 만든 하이브리드 레이드 기술도 나오고 있다.
 +
 
 +
: 락스텝(lockstep) 방식은 다중화방식을 이용해 병렬로 동작을 시킨다. 다중화된 각 부분은 어느 시점에서 봐도 완전히 같은 상태가 아니면 안 된다. 같은 입력을 주었을 때 같은 출력을 얻을 수 있는 것을 기대할 수 있다. 다중화 부분의 출력은 다수결 회로에 모여 비교된다. 각 부품을 이중화한 머신(dual modular redundant, DMR)으로 불린다. 이 경우 다수결 회로는 결과가 차이가 나는 것밖에 모르기 때문에 복구는 다른 방법으로 실시해야 한다. 각 부품을 삼중화한 기계는 TMR(triple modular redundant)으로 불린다. 이 경우의 다수결 회로는 비교 결과가 2대1이 되었을 때 오류를 판정하므로 올바른 결과를 출력할 수 있어 오류로 판정된 결과를 버릴 수 있다. 그 뒤, 오류를 일으킨 복제 부품은 고장난 것으로 간주하여 다수결 회로는 이중화 상태로 전환한다. 이 모델은 더 많은 복제에 대해서도 적용할 수 있다. 락스텝 방식의 장치는 간단하게 완전하게 동기시킬 수 있어 각 복제 부품은 같은 클록(시간)으로 동기화하여 동작한다. 물론 각 복제를 클록에 동기시키지 않는 락스텝 시스템도 구축할 수 있다. 다만, 클록 동기 하지 않는 경우, 고장에 의해서 출력을 다수결 회로에 보낼 수 없게 된 부품을 어떻게 취급할지가 문제가 된다. 복제를 동기시키려면 각 내부 상태가 일치해야 한다. 그럼으로써 리셋 상태 등의 같은 내부 상태로부터 일제히 동작을 개시할 수 있다. 한편, 복제 간에 상태를 복사하는 방법도 있다.<ref name="FTS"></ref>
 +
 
 +
* '''다양화 방식'''(Diversity)
 +
: 같은 성능이지만 서로 다른 하드웨어 여러 개를 준비하고 복제 방식과 동일하게 진행된다. 서로 다른 하드웨어이기 때문에 같은 장애가 발생하지 않으며 문제 발생 시 장애를 올바르게 복구할 수 있다. 예를 들어 CPU가 데이터를 기록할 때 두 개의 메모리에 데이터를 저장함으로 문제를 예방한다. 하나의 프로그램 실행 과정 중에서 문제가 발생한다면 또 다른 메모리에 있는 데이터를 불러와서 시스템을 작동시킨다. 그리하여 시스템에 어떠한 영향을 끼치지 않으면서 장애 보호 시스템을 유지할 수 있다.
 +
 
 +
===문제점===
 +
동일한 구성 요소에서 결함 감지를 방해하게 된다. 장애 보호 시스템 중 하나를 사용하여 자동차를 탄다면 타이어에 구멍이 뚫렸을 때 운전자에게 분명하게 전달이 되지 않을 수 있다. 이를 해결하기 위해서는 별도의 "자동 결함 감지 시스템"으로 대체 해야 한다. 차량 정지 시 매 순간 타이어의 공기압을 측정하고 모니터가 타이어 압력 손실을 감지하여 운전자에게 알리는 방식이 있다. 다른 구성 요소의 결함 감지를 방해한다. 이 문제의 또 다른 변형은 한 구성 요소의 장애 보호 시스템이 다른 구성 요소의 오류 감지를 방지하는 경우이다. 예를 들어, 구성 요소 B가 구성 요소 A의 출력을 기반으로 일부 작업을 수행하는 경우 B가 A의 관련 문제를 숨길 수 있다. 나중에 구성 요소 B가 일반 시스템으로 수정이 된다면 작업 진행 시 시스템에 오류가 생길 수 있어 구성 요소 B가 문제인 것으로 보이게 된다. 시스템을 자세히 조사한 후에만 장애 문제가 실제로 구성 요소 A에 있음을 알 수 있다. 결함 수정에 있어서 우선순위가 감소한다. 작업자가 결함을 알고 있더라도 결함 허용 시스템을 갖추면 결함 복구의 중요성이 줄어들 것이다. 결함이 수정되지 않으면 결함 허용 구성 요소가 작동되지 않아 모든 시스템 장애가 발생한다. 비용이 다소 많이 소비된다. 장애 보호 시스템 구성 요소와 중복 구성 요소는 모두 비용을 증가시키게 된다. 이는 순전히 경제적인 비용일 수도 있고 무게와 같은 다른 측정을 포함할 수도 있다. 예를 들어 유인 우주선은 중복 및 내 결함선 구성 요소가 너무 많아 무인 시스템에 비해 무게가 많이 증가하게 되므로 물리적인 비용이 많이 필요하게 된다. 신뢰성 문제가 존재한다. 장애 보호 시스템으로 인해 더욱 보다 더 낮은 수준의 물리적인 장치를 사용하여 본래의 시스템 작동할 수 없게 만들기도 한다. 비용은 감소하겠지만 시스템의 신뢰성이 낮게 된다.<ref> 내결함성 위키피디아 -https://en.wikipedia.org/wiki/Fault_tolerance </ref>
 +
 
 +
또한 가장 큰 단점은 일반 시스템보다 훨씬 비용이 많이 드는 시스템을 구축해야 한다는 것이다. 이는 다른 이유로 이중화를 제공하기 위해 일반적으로 같은 구성 요소의 여러 버전이 필요하기 때문이다. 또한 절대 사용하지 않더라도 정기적으로 유지 보수 및 테스트해야 하는 발전기와 같은 추가 장비가 필요할 수 있다. 장애 허용 시스템 비용은 추가 하드웨어를 고려할 때 불가 하기때문에. 장애 보호 시스템과 고가용성의 이점에 대해 추가 비용이 발생하는지 신중하게 고려해야 한다. 장애 보호 시스템을 이용하기 더 낮은 비용과 품질이 떨어지는 중복 구성 요소를 사용하는 경향이 종종 있게 된다. 중복으로 하드웨어 부분을 사용하므로 몇 배의 이상의 효과를 나타내기 때문인데, 이로인해서 개인의 안정성에는 매우 약해질 수 있다. 그러므로 지원 및 유지 관리 비용이 증가할 수 있으며 구성 요소의 품질이 너무 좋지 않으면 결함이없는 시스템보다 시스템의 안정성이 떨어지게 된다. 이를 막기 위해서는 비용과 절대적인 측면에서 개별 구성 요소의 성능과 수명을 모니터링해야 한다.<ref> Paul Rubens , 〈[https://www.enterprisestorageforum.com/storage-management/fault-tolerance.html Understanding Fault Tolerance: Securing Your System]〉, 《EnterPrise Storage》, 2019-06-17</ref>
 +
 
 +
물리적 장치의 장애로 인해 시스템에 오류가 발생하는 것을 최소화 하고 오류가 발생했을 지라도 작동을 해야 되는 경우도 있다. 장애 허용 시스템은 분명 좋은 기술이지만 애초에 장애가 발생하여 서버가 중단되지 않도록 시스템이 작동되는 동안 장애가 없는지 데이터를 수집하고 공유해야 한다, 수집한 데이터를 토대로 장애를 예방할 수 있다. 그리고 많은 하드웨어 장비를 이용 시 장비 분배를 최적화 해야 하며 내부적으로는 용량과 외부적인 열에너지로부터 데이터를 잘 지켜야 한다.
 +
 
 +
{{각주}}
 +
 
 +
==참고자료==
 +
* 장애 허용 시스템 위키디피아 - https://ko.wikipedia.org/wiki/%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C
 +
* 스마트 학주니, 〈[https://poem23.com/2945 IoT에서 활용하는 장애허용시스템. 이제는 옵션이 아닌 필수 기술이 되어가고 있는데..]〉, 《학주니닷컴》, 2015-04-15
 +
* Ali Marashi , 〈[https://www.vxchnge.com/blog/fault-tolerance-vs-high-availability What Is Fault Tolerance and Why It Differs From High Availability]〉, 《vxchange 블로그》, 2019-05-31
 +
* 도리, 〈[http://blog.skby.net/%ea%b2%b0%ed%95%a8%ed%97%88%ec%9a%a9%ec%8b%9c%ec%8a%a4%ed%85%9c-fts-fault-tolerant-system/ 결함허용시스템 (FTS, Fault Tolerant System)]〉, 《에스케이비 블로그》, 2020-03-20
 +
* 내결함성 위키피디아 -https://en.wikipedia.org/wiki/Fault_tolerance
 +
* Paul Rubens, 〈[https://www.enterprisestorageforum.com/storage-management/fault-tolerance.html Understanding Fault Tolerance: Securing Your System]〉, 《EnterPrise Storage》, 2019-06-17
 +
 
 +
==같이 보기==
 +
* [[장애]]
 +
* [[정보통신]]
 +
* [[백업]]
 +
* [[복구]]
 +
* [[페일오버]]
 +
 
 +
{{하드웨어|검토 필요}}

2022년 12월 19일 (월) 17:36 기준 최신판

장애 허용 시스템

장애(障礙)란 정보통신(ICT) 분야에서 사용되는 의미로 하드웨어소프트웨어 시스템에서 결함 즉, 오류를 말한다.

개요[편집]

흔히 서버에 많은 접속자가 몰려 게임 접속이 안 되거나 웹 사이트에 접속자가 몰려 네트워크의 속도가 지연되고 에러가 발생한다는 이야기를 한 번쯤은 들어보았을 것이다. 또 물리적인 장치가 내부의 결함으로 인해 작동되지 않을 때도 있다. 이러한 모든 것을 정보통신의 장애라고 흔히 이야기한다. 하드웨어에서 장애가 발생할 수도있고 반대로 소프트웨어(서버,코딩) 부분에서도 장애가 발생할 수 있다. 최근 4차 산업혁명이 대두 되면서 사물인터넷(IoT) 기술들이 발전되고 있다. 헬스케어, 스마트워치, GPS 등이 여기에 해당한다. 사물인터넷의 확장에 따라 장애 허용 시스템(FTS, Fault tolerant system)이 발달하게 되었다. 장애 허용 시스템은 하드웨어나 소프트웨어 시스템에서 결함, 장애가 발생하여도 정상적인 운영할 수 있도록 만든 시스템이다. 장애 발생 시 어느 한 부분에서의 기능이 마비되고 지속해서 반복될 경우 부품의 기능을 점점 사용하지 못하여 마지막에는 시스템이 정지하게 된다. 장애 허용 시스템은 단계별로 성능이 저하되는 특징을 가지고 있으며 장애 허용 시스템이 없는 일반 시스템에서는 어느 한 부분만 고장 나도 제대로 사용할 수 없는 문제가 나타난다.[1]

이런 기능을 보안하기 위해 장애 허용 시스템 즉, 결함 허용 시스템과 페일오버 방식이 나타나게 되었다. 페일오버 방식은 사전에 소프트웨어나 운영체제를 다른 장비에 백업해놓고 내 외부적으로 문제 발생 시 백업 장소에서 데이터를 가져와 실행하는 것이고 장애 허용 시스템은 시스템 장애 발생 시에 관리자가 조치하는 동안 정상 상태와 마찬가지로 구동할 수 있도록 해주는 것이다. 장애 문제가 지속되면 다른 시스템의 결함까지 이어져 치명적인 시스템 손상을 일으킬 수 있다. 따라서 시스템의 사용 불가를 대비할 수 있는 시간을 최대한 확보해 주는 것이 장애 허용 시스템의 핵심 기술이다. 장애 허용 시스템은 시스템의 가동률을 극대화해주며 데이터의 무결성과 일관성을 지원하고 전력선 배분 시스템이나 신호등 제어 시스템처럼 사회 기반 시설에 가장 많이 적용되고 있는데 비행기나 배에서 사용하는 항로 제어 시스템에도 장애 허용 시스템이 적용된다. 보통 고장이 발생하면 인명이나 재산에 피해를 일으키는 안전 필수 및 임무 필수분야에 적용되는 임베디드 시스템이다.[2]

특징[편집]

시스템[편집]

장애 허용 시스템[편집]

장애 허용 시스템이 되어있는 컴퓨터는 완전한 하드웨어 중복성의 한 형태이다. 두 개 이상의 시스템이 동시에 작동하여 동일한 응용 프로그램을 미러링(복사)하고 서로 잠금 단계에서 명령을 실행한다. 기본 시스템에서 하드웨어 오류가 발생하면 동일한 응용 프로그램을 실행하는 보조 시스템이 동시에 서비스 손실 없이 정보를 받게 된다. 이 접근 방식은 하드웨어가 동일한 시스템에 의해 완전히 백업되도록 하여 데이터 센터 중단을 방지하는 데 사용될 수 있다. 장애 허용 시스템 컴퓨터에 구성 요소의 결함을 즉시 감지하고 미러링된 시스템을 완벽하게 실행할 수 있는 특수 하드웨어가 필요하다. 일반적인 네트워크의 경우 서버 다운 타임을 완전히 제거할 수 있는데 이 방식의 장점은 오류 발생 시 모든 프로그램의 메모리 내 응용 프로그램 상태가 손실되지 않으며 다른 응용 프로그램 및 데이터에 대한 접근이 유지된다는 것이다. 더욱 복잡한 시스템 및 네트워크에서 장애 보호 시스템은 모든 시스템 요청의 실패와 관계없이 실행되도록 보장하지만, 시스템이 중복성을 통해 요청을 조정하고 다시 라우팅하면 시간이 더 걸릴 수 있다. 그러나 중복 시스템이 서로 동기화되어 작동하기 때문에 하나의 장애를 유발하는 소프트웨어 문제는 미러링 된 시스템으로 전송되어 장애 보호 시스템이 운영 체제 또는 응용 프로그램 오류에 취약하여 여전히 서버 다운 타임 또는 서버 중단을 초래할 수 있고 데이터 전송이 중단될 수 있다.[3] 흔히 장애 허용 시스템을 품격있는 저하라고도 부른다. 그 이유는 시스템의 장애가 있더라도 성능 그대로 사용할 수 있으며 다른 모듈에도 장애가 발생하여도 성능이 떨어지긴 하지만 계속 사용할 수 있기 때문이다. 장애 보호 시스템은 원래금 높은 수준의 시스템 가용성과 성능을 유지하기 위해 백업 구성 요소를 교체한다. 성능이 저하 되더라도 시스템이 정상 작동만 한다면 해당 시스템은 문제가 없다.

  • 역사
  • 제1세대 : 특별한 하드웨어 구조와 그에 맞는 고유의 동작 시스템, 프로그램 언어, 구현된 응용 소프트웨어를 요구한다. 장애 허용 시스템을 구현하는 데는 상당한 비용이 필요하며 아주 제한적인 응용 분야에서만 사용되었다.
  • 제2세대 : 특별하게 고안된 고유의 운영체제를 요구하지만, 유닉스에서 사용되는 표준 응용 소프트웨어를 큰 변경 없이 그대로 사용할 수 있도록 설계되어 있다. 장애 허용 시스템만의 독자적인 운영체제를 사용하기 때문에 이것을 유지하는 일은 매우 어렵고 번거로운 일이 되며, 유닉스의 기능 중 여러 기능이 구현되지 않아 일반적인 시스템(Non-Fault Tolerant)에서 사용된 소프트웨어들이 장애 허용 시스템에 그대로 사용할 수 없게 되는 일이 항상 존재하게 되었다.
  • 제3세대 : 상업적으로 사용 가능한 운영체제를 장애 보호 시스템에 돌아가기 위해, 이식기법을 사용할 수 있도록 설계되었다. 따라서 시장에 나와 있는 다양한 소프트웨어를 사용할 수 있는 이점이 있다. 그러나 특별하게 고안된 시스템 하드웨어 플랫폼에 상용 운영체제가 돌아갈 수 있도록 하여야 하는 번거로움과 어려움이 여전히 존재한다.
  • 제4세대 : 표준 운영체제와 상용 하드웨어를 거의 수정하지 않고 사용할 수 있도록 설계되었다. 따라서 이러한 시스템의 사용자는 일반적인 시스템에서 사용되는 가장 최신의 운영체제, 데이터베이스, 그리고 다양한 응용 소프트웨어를 손쉽게 사용할 수 있다.
  • 제5세대 : 앞으로는 장애 허용 컴퓨터 시스템의 기술이 보편화 될 것으로 전망되며, 일반 컴퓨터 시스템 구조 설계에도 이러한 장애 허용 핵심 기술이 많이 적용되어 장애 허용 시스템과 일반 시스템의 개념이 사라질 것이라는 전망이다.
  • 활용
장애 보호 시스템은 컴퓨터 내부 모듈에 장애에 장애가 발생하여도 즉각적인 조치가 가능하다. 이는 컴퓨터 내의 시스템이나 응용프로그램이 수행되고 있다 해도 모듈을 빼내어 다른 것으로 교체할 수 있다. 고장 난 모듈은 온라인 상태에서 사용자가 전혀 모르게 교환이 가능하여 어떠한 장애가 발생하더라도 아무런 데이터의 손실 및 파괴 없이 시스템은 정상작동을 유지한다. 이는 내부적 장애(결함)를 감지하여 진단하고 복구하는데 컴퓨터의 응용 소프트웨어에 아무런 영향을 주지 않는다. 은행이나 여행사 또는 통신 서비스를 제공하는 전화국에서는 높은 신뢰도를 가지며 동시에 확장 가능한 장애 허용 시스템 컴퓨터를 시스템을 이용한다. 그뿐만 아니라 인터넷 사물에서도 많이 사용되는데 이중화 방식의 복제와 다중화 방식을 가장 많이 사용한다. 복제 방식의 경우 인터넷 사물 시스템에서 장애로 인해 잘못된 값을 생산하는 것을 막을 뿐만이 아니라 정상적인 상황에서도 생성된 값의 보정 역할을 수행하는 장점이 있다. 다만 같은 시스템을 2개 이상 준비해서 운용해야 하므로 실제로 시스템에 들어가는 자원의 소모가 많다는 단점이 존재한다. 인터넷 사물 시스템이 대부분 임베디드 시스템을 기반으로 하므로 일반 PC처럼 시스템 자원을 폭넓게 사용할 수 있는 환경은 아니다. 제한적인 자원을 이용하기 때문에 복제 방식을 이용하게 되면 자원 사용에 대한 효율성 문제가 생기게 된다. 다중화 방식의 경우 동일한 시스템을 2대 정도 운영하지만 메인으로 사용되는 시스템에 주력 자원이 들어가고 나머지는 대기 자원이 들어가기 때문에 복제 방식보다는 자원 효율성은 좋은 편이다. 하지만 시스템 자체에서 생긴 문제로 인한 잘못된 데이터 생산이 일어날 수 있다는 문제는 존재한다. 장애 허용 시스템을 도입하는 입장에서 복제 방식이 성능적인 면에서 다중화 방식보다 우수하지만, 시스템 환경의 제약으로 인해 복제 방식보다는 다중화 방식을 인터넷 사물 시스템에서 많이 사용하고 있다. 과거 장애 허용 시스템은 서버 시스템에서 지속적인 서비스 유지를 위해서 이중화 시스템(다중화 방식을 이용한) 방식으로 많이 이용했다. 그리고 이제는 그 영역을 클라이언트로 넓히게 되었고 단순한 PC나 노트북, 스마트폰과 같은 클라이언트를 포함하여 센서, 웨어러블 시스템, 그 외의 다양한 임베디드 시스템에 도입되기 시작했다. 인터넷 사물로 그 영역이 확대되면서 지속해서 정확한 데이터를 수집해야 하는 시스템 영역에서 장애 허용 시스템의 역할은 더 커지고 있다. 앞서 소개했던 자동차 분야에서도 인터넷 사물이 도입되기 시작했는데 차량 제어 부분에 있어서 시스템의 장애로 인해 잘못된 데이터가 생성되게 되면 그 피해가 엄청나게 커지게 될 것이다. 그 때문에 부분에 장애 허용 시스템은 옵션이 아닌 필수 기능으로 곧 자리를 잡게 될 것으로 보인다.[2]

고가용성[편집]

고가용성 솔루션은 서버 다운 타임을 최소화 하기위한 소프트웨어 기반 접근 방식이다. 고가용성을 이용하여 장애 문제를 해결하기도 한다. 중복된 물리적 하드웨어를 복제하는 대신 서로를 모니터링하고 장애 조치 기능이 있는 일련의 서버를 클러스터링한다. 소프트웨어 오류, 응용 프로그램 오류 또는 하드웨어 오류 등 기본 서버에서 문제가 발생하면 백업 서버 중 하나가 작동하여 충돌한 서버에서 활성화 된 응용 프로그램을 다시 시작한다. 고가용성 기술은 장애를 매우 신속하게 복구할 수 있지만, 서버 다운 타임 지연이 발생하여 시스템을 재부팅 하는 동안 중요한 데이터와 응용 프로그램을 사용할 수 없게 된다. 일반적으로 클러스터의 다른 서버에서 실행 중인 데이터를 복구할 수 있을 만큼 유연하지만, 메모리 응용 프로그램 상태는 종종 손실된다. 고가용성 기술의 백업 서버는 서로 독립적이기 때문에 소프트웨어 장애 및 데이터 센터 중단으로부터 실질적인 보호 기능을 제공하고 운영 체제 오류로 인해 기본 서버가 다운되면 독립 백업 서버에서 문제가 복제되지 않는다.[3]

작동방식[편집]

장애 보호 시스템 동작
구성단계 기법 상세내용
장애감지 핑/에코 테스트 실시 하드웨어로 구성된 비교기를 통하여 수행한다. 시스템 내에서 장애가 발생하면
해당 모듈 또는 시스템은 장애 상태로 들어가게 되고 운영체제는 각 모든 하드웨어 모듈들의 상태를 분석하여
어느 모듈이 장애를 유발했는지 분석하여 알아낸다.
장애진단 모니터링, 비교,
시뮬레이션, 오류비트
장애를 진단하여 장애가 영구적인 경우에만 해당 모듈을 시스템 구성에서 제거한다.
만약 일시적인 문제라면 장애진단을 통해 시스템 동작에 아무런 영향을 끼치지 않는다면 장애 보호 시스템으로 인식하여
기존의 동작시스템을 유지한다. 하지만 결함이 계속 발생한다면 해당 시스템을 제거한다.
장애복구 중복, 교체, 격리 장애를 유발한 모듈을 시스템에서 제거하여 시스템을 재구성한다
실현 기법
구분 실현기술 상세내용
하드웨어 기술 듀얼 모듈 기법 하드웨어를 중복하여 그 출력을 비교하여 결함을 감지
트리플 모듈 기법 3개 이상의 모듈에서 같은 입력에 대해 동일한 연산을 수행하여 다수결의 원칙 기반 결함을 감지
와치독 타이머 정상 작동 시 주기적으로 타이머를 초기화시켜 시스템 결함 여부를 감지
자동화 삭제 기법 N개의 하드웨어에서 출력 결과가 다른 하드웨어의 계산과정을 배제
소프트웨어 기술 체크 포인트 소프트웨어 수행 중 검사 시점을 설정하여 오류가 발견되면 발생 이전의 검사 시점으로 돌아가서 재수행
리커버리 백 재수행에 근거하여, 검사 시점에서 오류가 발견되면 지정된 이전 검사점으로 되돌아가서
같은 기능을 가진 다른 소프트웨어 모듈을 수행
N-자동화 체크 프로그램 둘 이상의 자동화-체크 컴포넌트가 수행되며 하나는 기능 수행, 다른 하나는 대기 상태로,
결함 발견 시에 대기 상태의 컴포넌트가 수행
N 버전 프로그래밍 N개의 독립적인 소프트웨어 모듈 수행 결과를 비교하여 다수의 수행 결과를 채택
데이터 베이스 기술 롤백 장애 발생 시 데이터베이스에 대한 모든 변경사항, 데이터 변경이 되지 않은 연산에 대한 작업 취소
체크 포인트 로그 파일에 체크포인트를 기록하고 장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복 작업에서 제외하고
이후에 처리된 내용에 대해서만 회복 작업을 수행
쉐도우 페이징 연산 작업 실행 동안 수행 메모리 테이블과 그림자 메모리 테이블을 유지하여 필요 시 회복 작업 수행
로그 파일 데이터 변경이 되지 않은 작업을 로그 파일 기반 회복
데이터 기술 패리티 코드 2진 데이터 중 “1”의 개수를 홀수 또는 짝수로 규정하여 결함을 감지
체크 썸 하나의 블록 정보 합 기반 정보 결함 감지
버거코드 하나의 Data 중 “1”의 개수를 2진 정보로 추가
해밍코드 결함 감지 및 단일 결함을 교정하는 코드 기법
고가용성과 비교
구분 장애 허용 시스템 고가용성
페일오버 시간 0초 30초~300초
동시성 유지보수 필요 불필요
시스템 비용 10 ~ 20배 2배이상
애플리케이션 제한적 대부분 범용제품
운영체제 전용 운영체제 범용 운영체제
하드웨어 전용 하드웨어 범용 하드웨어
[4]

복구방식[편집]

롤백[편집]

시스템이 고장 난 시점의 이전 상태로 되돌리는 것을 말한다. 시스템이 정상 상태로 작동 될 때 스냅샷 방식으로 데이터를 저장하고 이후 문제가 발생한다면 특정 시점의 스냅샷을 찾아 저장한 시점으로 돌아가 데이터를 복구한다.

이중화[편집]

이중화 방식은 복제(Replication), 다중화(Redundancy), 다양화(Diversity) 방식으로 3가지로 나뉘게 된다.

  • 복제(Replication)
같은 시스템을 복사하여 병렬 방식으로 준비하고 다수의 시스템에 가장 적합한 결과를 선택한다. 하나의 값으로 시스템이 작동하다가 문제가 생기더라도 이미 작동 중인 다른 시스템에서 제대로 된 값을 찾아 채택하는 것이다.
  • 다중화(Redundancy)
복제방식 그림
다중화방식 그림
같은 시스템을 멀티(2개 이상)로 준비하고 구동한다. 마스터-슬레이브(Master-Slave) 방식, 또는 액티브-스탠바이 방식으로 흔히 이야기한다. 상위계층이 문제가 생겼을 시 하위계층 시스템을 작동시킨다. 현재 서버 시스템에서 가장 많이 사용하는 방식이다. 그중에서 레이드(RAID)는 다중화 방식을 활용한 장애 허용 시스템을 기억 장치에 적용한 예이다. 레이드의 개념이 발전하면서 레이드 0 같이 속도만을 향상하기 위한 시스템도 레이드에 포함되나 이는 엄밀히 말해 장애 허용 시스템에는 해당하지 않는다. 데이터를 블록 형식으로 저장하기 때문에 디스크의 성능은 향상되지만, 미러링이 되지 않아 안전성에는 효과가 떨어진다. 레이드 1은 두 개의 같은 하드웨어를 사용하지만 저장하는 데이터는 레이드 0과 다르게 두 개의 하드웨어 모두에 동일한 정보를 저장한다. 디스크중복 쓰기를 통하여 안정성이 확대되지만, 공간효율은 2배만큼 줄어든다. 레이드2는 비슷한 데이터의 내용을 여러 개로 묶어서 각각의 하드웨어에 차례대로 저장하는 기법이다. 이외에도 여러 가지 저장 방법이 있으며 최근에는 레이드 0과 1 기술을 혼합하여 만든 하이브리드 레이드 기술도 나오고 있다.
락스텝(lockstep) 방식은 다중화방식을 이용해 병렬로 동작을 시킨다. 다중화된 각 부분은 어느 시점에서 봐도 완전히 같은 상태가 아니면 안 된다. 같은 입력을 주었을 때 같은 출력을 얻을 수 있는 것을 기대할 수 있다. 다중화 부분의 출력은 다수결 회로에 모여 비교된다. 각 부품을 이중화한 머신(dual modular redundant, DMR)으로 불린다. 이 경우 다수결 회로는 결과가 차이가 나는 것밖에 모르기 때문에 복구는 다른 방법으로 실시해야 한다. 각 부품을 삼중화한 기계는 TMR(triple modular redundant)으로 불린다. 이 경우의 다수결 회로는 비교 결과가 2대1이 되었을 때 오류를 판정하므로 올바른 결과를 출력할 수 있어 오류로 판정된 결과를 버릴 수 있다. 그 뒤, 오류를 일으킨 복제 부품은 고장난 것으로 간주하여 다수결 회로는 이중화 상태로 전환한다. 이 모델은 더 많은 복제에 대해서도 적용할 수 있다. 락스텝 방식의 장치는 간단하게 완전하게 동기시킬 수 있어 각 복제 부품은 같은 클록(시간)으로 동기화하여 동작한다. 물론 각 복제를 클록에 동기시키지 않는 락스텝 시스템도 구축할 수 있다. 다만, 클록 동기 하지 않는 경우, 고장에 의해서 출력을 다수결 회로에 보낼 수 없게 된 부품을 어떻게 취급할지가 문제가 된다. 복제를 동기시키려면 각 내부 상태가 일치해야 한다. 그럼으로써 리셋 상태 등의 같은 내부 상태로부터 일제히 동작을 개시할 수 있다. 한편, 복제 간에 상태를 복사하는 방법도 있다.[1]
  • 다양화 방식(Diversity)
같은 성능이지만 서로 다른 하드웨어 여러 개를 준비하고 복제 방식과 동일하게 진행된다. 서로 다른 하드웨어이기 때문에 같은 장애가 발생하지 않으며 문제 발생 시 장애를 올바르게 복구할 수 있다. 예를 들어 CPU가 데이터를 기록할 때 두 개의 메모리에 데이터를 저장함으로 문제를 예방한다. 하나의 프로그램 실행 과정 중에서 문제가 발생한다면 또 다른 메모리에 있는 데이터를 불러와서 시스템을 작동시킨다. 그리하여 시스템에 어떠한 영향을 끼치지 않으면서 장애 보호 시스템을 유지할 수 있다.

문제점[편집]

동일한 구성 요소에서 결함 감지를 방해하게 된다. 장애 보호 시스템 중 하나를 사용하여 자동차를 탄다면 타이어에 구멍이 뚫렸을 때 운전자에게 분명하게 전달이 되지 않을 수 있다. 이를 해결하기 위해서는 별도의 "자동 결함 감지 시스템"으로 대체 해야 한다. 차량 정지 시 매 순간 타이어의 공기압을 측정하고 모니터가 타이어 압력 손실을 감지하여 운전자에게 알리는 방식이 있다. 다른 구성 요소의 결함 감지를 방해한다. 이 문제의 또 다른 변형은 한 구성 요소의 장애 보호 시스템이 다른 구성 요소의 오류 감지를 방지하는 경우이다. 예를 들어, 구성 요소 B가 구성 요소 A의 출력을 기반으로 일부 작업을 수행하는 경우 B가 A의 관련 문제를 숨길 수 있다. 나중에 구성 요소 B가 일반 시스템으로 수정이 된다면 작업 진행 시 시스템에 오류가 생길 수 있어 구성 요소 B가 문제인 것으로 보이게 된다. 시스템을 자세히 조사한 후에만 장애 문제가 실제로 구성 요소 A에 있음을 알 수 있다. 결함 수정에 있어서 우선순위가 감소한다. 작업자가 결함을 알고 있더라도 결함 허용 시스템을 갖추면 결함 복구의 중요성이 줄어들 것이다. 결함이 수정되지 않으면 결함 허용 구성 요소가 작동되지 않아 모든 시스템 장애가 발생한다. 비용이 다소 많이 소비된다. 장애 보호 시스템 구성 요소와 중복 구성 요소는 모두 비용을 증가시키게 된다. 이는 순전히 경제적인 비용일 수도 있고 무게와 같은 다른 측정을 포함할 수도 있다. 예를 들어 유인 우주선은 중복 및 내 결함선 구성 요소가 너무 많아 무인 시스템에 비해 무게가 많이 증가하게 되므로 물리적인 비용이 많이 필요하게 된다. 신뢰성 문제가 존재한다. 장애 보호 시스템으로 인해 더욱 보다 더 낮은 수준의 물리적인 장치를 사용하여 본래의 시스템 작동할 수 없게 만들기도 한다. 비용은 감소하겠지만 시스템의 신뢰성이 낮게 된다.[5]

또한 가장 큰 단점은 일반 시스템보다 훨씬 비용이 많이 드는 시스템을 구축해야 한다는 것이다. 이는 다른 이유로 이중화를 제공하기 위해 일반적으로 같은 구성 요소의 여러 버전이 필요하기 때문이다. 또한 절대 사용하지 않더라도 정기적으로 유지 보수 및 테스트해야 하는 발전기와 같은 추가 장비가 필요할 수 있다. 장애 허용 시스템 비용은 추가 하드웨어를 고려할 때 불가 하기때문에. 장애 보호 시스템과 고가용성의 이점에 대해 추가 비용이 발생하는지 신중하게 고려해야 한다. 장애 보호 시스템을 이용하기 더 낮은 비용과 품질이 떨어지는 중복 구성 요소를 사용하는 경향이 종종 있게 된다. 중복으로 하드웨어 부분을 사용하므로 몇 배의 이상의 효과를 나타내기 때문인데, 이로인해서 개인의 안정성에는 매우 약해질 수 있다. 그러므로 지원 및 유지 관리 비용이 증가할 수 있으며 구성 요소의 품질이 너무 좋지 않으면 결함이없는 시스템보다 시스템의 안정성이 떨어지게 된다. 이를 막기 위해서는 비용과 절대적인 측면에서 개별 구성 요소의 성능과 수명을 모니터링해야 한다.[6]

물리적 장치의 장애로 인해 시스템에 오류가 발생하는 것을 최소화 하고 오류가 발생했을 지라도 작동을 해야 되는 경우도 있다. 장애 허용 시스템은 분명 좋은 기술이지만 애초에 장애가 발생하여 서버가 중단되지 않도록 시스템이 작동되는 동안 장애가 없는지 데이터를 수집하고 공유해야 한다, 수집한 데이터를 토대로 장애를 예방할 수 있다. 그리고 많은 하드웨어 장비를 이용 시 장비 분배를 최적화 해야 하며 내부적으로는 용량과 외부적인 열에너지로부터 데이터를 잘 지켜야 한다.

각주[편집]

  1. 1.0 1.1 장애 허용 시스템 위키디피아 -https://ko.wikipedia.org/wiki/%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C
  2. 2.0 2.1 스마트 학주니, 〈IoT에서 활용하는 장애허용시스템. 이제는 옵션이 아닌 필수 기술이 되어가고 있는데..〉,《학주니닷컴》, 2015-04-15
  3. 3.0 3.1 Ali Marashi , 〈What Is Fault Tolerance and Why It Differs From High Availability〉, 《vxchange 블로그》, 2019-05-31
  4. 도리 , 〈결함허용시스템 (FTS, Fault Tolerant System)〉, 《에스케이비 블로그》, 2020-03-20
  5. 내결함성 위키피디아 -https://en.wikipedia.org/wiki/Fault_tolerance
  6. Paul Rubens , 〈Understanding Fault Tolerance: Securing Your System〉, 《EnterPrise Storage》, 2019-06-17

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 장애 (정보통신) 문서는 하드웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.