결함 허용 시스템 설계를 위한 패턴 소개

시스템의 일부가 고장 나더라도 다운이 허용되지 않는 시스템이 있다. 이런 성격을 갖는 시스템을 “내결함성” 또는 “결함 허용” 시스템(Fault tolerant system)이라고 한다. 처음부터 결함을 갖고 있었거나, 사용 중에 발생한 결함에도, 시스템 명세서에 명시된 기능을 제공하도록 만들어진 “고 신뢰성” 시스템이다. 이런 시스템을 만들기 위해서 아키텍쳐 관점에서 고려해야 할 사항은 무엇일까? 이런 시스템 설계에 적용될 수 있는 설계 Pattern은 무엇일까? Patterns for fault tolerant software책에서 제시하는 설계 Pattern들을 소개하고자 한다.

 

내 결함성은 결함허용 시스템에만 적용되는 기능이 아니다. 다양한 시스템에 그들의 완성도를 높이기 위해 적용될 수 있는 방법이다. 어떤 시스템이나 결함을 가질 수 있고, 운행 도중 결함이 실행되어 오류가 발생할 수 있다. 이런 오류가 특정 서비스를 실행시키는데 영향을 준다면 서비스 장애가 발생할 것이다. 이번 칼럼에서는 결함이 실행되어 오류가 발생하더라도 오류의 파급 효과를 줄이거나 제거해 장애가 발생하지 않는 방법을 소개할 것이다. 칼럼을 읽고 우리가 만드는 시스템에 내 결함 기능을 추가하여 시스템의 완성도를 높여 보자.

 

대표적인 결함 허용 시스템

고장에 강해, 단 한 순간의 시스템 다운도 허용될 수 없는 온라인 시스템, 특히 높은 신뢰성이 요구되는 환경인 은행이나 e-Commerce 시스템, 좌석예약시스템 등 실시간 프로세스 제어시스템, 병원이나 우주 항해 시스템과 같이 컴퓨터의 고장이 인명 손실에 관계되는 시스템, 년 중 보수작업이 거의 불가능한 상황에서 사용되는 시스템, 고장에 의해 막대한 경제적 손실을 야기하는 업무 환경 등에 사용되는 원전 시스템 등을 들 수 있다.

 

장애 발생 과정과 결함 허용 기술

결함 허용이란 오류가 발생한 것을 감지하고, 오류가 다른 영역에 영향을 미치기 전에, 미리 정의된 오류 복구나 완화 정책을 통해, 오류가 장애로 이어지는 것을 막고, 오류의 원인인 결함을 발견해, 결함을 치료하여 오류의 재발을 막는 기술이다.

용어장애 발생 과정

결함 허용 기술결함 허용 방법

  결함 허용 시스템 설계를 위한 패턴 소개 더보기

Apple 개발자 계정 등록하기

Apple App Store 에 앱을 개발하여 올리기 위해서는, Apple 개발자 계정을 등록 하여여 합니다.

https://developer.apple.com

에서 개발자 계정을 만들수 있습니다.

capture-20160425-223911

현재는 6월에 예정된 Apple Worldwide Developers Conference (WWDC) 2016 안내를 해서, 평소와는 다소 다른 디자인으로 웹사이트에 보여지고 있습니다.

Apple 개발자 계정 등록하기 더보기

내가 만든 자바 유틸 “LinkedMap”

Map형태의 자바 객체를 소개하고자 한다.
HashMap은 key/value형태의 자료구조를 다루는 자바 뿐만 아니라 모든 프로그램에서 거의 예외 없이 사용하는 클래스 이다. 언젠가 다시 C프로그램을 해야하는 상황이 되었는데 HashMap형태의 자료구조가 없어서 힘들었던 기억이 있다.

그런데 자바의 HashMap으로 충분한가? 불편한 점은 없는가?

자바에는 java.util.* 에서 java.util.Map을 구현한 클래스들은 크게보면 HashMap(Hashtable), TreeMap, LinkedHashMap 정도가 있다. (자세한 사항은 각자 검색)

내가 만든 자바 유틸 “LinkedMap” 더보기