[PLoP] Fault Tolerance 패턴의 저자 Robert Hanmer.
PLoP에서 수많은 거장들을 만났습니다. 거장들중 우리나라에 그리 많이 알려지지 않은 분들을 하나씩 소개할려고 합니다. 왜냐면 이들의 연구분야들을 하나씩 소개하는 것이 어떤 분들에게는 귀중한 정보다 될것이고, 많은 도움이 될거라고 생각이 듭니다.
Robert Hanmer씨는 이번에 저희 Half-Push/Half-Polling 패턴의 목자 (Shepherd) 이셨습니다. (PLoP에서는 패턴을 제출하면 완성도 있는 패턴을 한번 거른다음, 각 패턴다마 패턴을 잘 쓸수 있게 목자(멘토)를 지정해 줍니다. 그럼 목자와 함께 계속 애기를 나누면서, 패턴들을 수정해 나가는 거죠. 그 이후 저자 워크샾을 통해 한번 더 다듬게 되고, 최종 논문이 완성됩니다.)
PLoP의 BootCamp를 수년간 Linda Rising과 이끌고 있었고, 상당히 부드럽고 배려심이 많으신 분입니다. 이하 Bob 아저씨(Robert를 다 Bob이라고 부릅니다)는 현재 Alcatel-Lucent (Lecent Technolgies and AT&T)라는 Telecomunication 회사에서 Consulting Member로 근무중이며, 고 수준의 가용성(availiability)를 보장하는 시스템을 꾸준히 만들어 오셨습니다.
이러한 패턴들은 고수준의 품질을 요구하는 제조업과 아주 밀접한 연관이 있으므로, 국내 제조업에 종사하는 소프트웨어 개발자에게는 상당히 도움이 될만한 서적이라고 생각됩니다. 그리고 인사이트에서 판권을 확보하고 현재 번역중이라고 하니 조만간 번역서를 만나 보실 수 있으리라 생각이 듭니다.
그의 책인 Patterns for Fault Tolerant Software는 크게 4가자의 카데고리로 여러가지 패턴들을 다룹니다.
- Detection Patterns (에러를 Detection 하는 패턴)
- Error Recovery Patterns (에러 복구 패턴)
- Error Mitigation Patterns (에러 완화 패턴)
- Fault Treatement Patterns (Fault를 잘 처리하는 패턴)
관심있는 분들은 Wiley에서 공개한 1장을 살펴보시길 바랍니다.
그리고 Bob아저씨가 se-radio.net를 통해 나눈 두개의 Episode를 들으시면 Fault Tolerant 패턴의 대략적인 윤곽을 잡는데 더욱 도움이 될겁니다.
아쉽게 운영하시는 Blog가 없다고 하셔서, 위에 것들로 만족하셔야 될듯 합니다.
Fault Tolerant 패턴중 가장 대표적이라고 할수 있는 WatchDog 패턴을 소개해 드리죠.
이 WatchDog이라는 것은 우리가 흔히 알고 있는 Observer , Interceptor 패턴들과 종종 같이 사용됩니다. WatchDog은 특정 상황을 계속 모니터링할때 사용되는 패턴으로 정책과 룰을 가지는 Agent적인 성격이 강한 패턴입니다.
Thread Pool을 관리할때 많이 사용되는 패턴으로, 많은 클라이언트의 접속으로 ThreadPool안에 있는 Thread가 임계점 이하로 줄어들면, 다시 Thread를 생성하라는 명령을 내리기도 하고, 시스템의 리소스를 더 생성할수 없을 경우 클라이언트의 동시 접속자수를 제한한다거나,아니면 Message Queue에 쌓을 수도 있을 겁니다.
그리고 WatchDog을 응용한 재미난 예가 있습니다. 위에서 언급한 에러 완화 패턴의 범주에 들어갈 듯 한데요. Microsoft의 COM+ (DCOM의 진화모델)에는 내부적으로 WatchDog을 이용해 Recycling이라는 재미난 기능을 지원합니다.
이상하게 제가 만든 분산 객체가 100일 정도 지나면 Thread들이 가끔 먹통이 되어서 시스템이 중지 된다고 하죠. 그 이유를 도대체 어디에 있는지 찾을수 없는 매우 난감할때가 있다고 가정합시다. 거기다 QE 랩실에서는 재현이 불가능하다면… 결국 임시 방편적인 방법이지만, 우리가 정한 주기마다 Thread Pool에 Thread들을 주기적으로 강제로 시스템에 반환하고, 새로운 Thread를 생성하는 것입니다. 종종 Thread가 일정 시간이 지나면 먹통이 될 경우를 대비해 이러한 전략들을 구성해 놓았습니다.
견고한 소프트웨어를 만들기 위해서는 로그를 남기면서 수동적으로 대처하기 보다는, WatchDog으로 시스템의 가용성을 보장하면서, 로그 정보를 활용해 문제를 파악하고,어떻게 문제를 해결해 갈지 생각해 보는게 더 견고한 소프트웨어를 만드는 방법일 겁니다.
그리고 이번 PLoP에서 같이 찍은 사진을 기념으로 올립니다. 계속해서 친하게 지낼 생각입니다. 🙂 그리고 이번에 패턴계에 입문을 축하한다며 싸인도 해주셨는데 그건 다음기회에.. ㅎㅎㅎ 🙂