초등학교를 다녔을때 선생님이 국보 1호가 뭐야? 라고 물었을때 자랑스럽게 대답하던 숭례문(남대문).
한국을 대표하던 Landmark가 화마로 소실되어 많은 분이 슬퍼하고 계십니다.

사용자 삽입 이미지

화재로 읽어 버린 숭례문

우리가 만든 소프트웨어와 숭례문의 사건과 연결지어 생각해보고자 합니다.
제가 잘알고 있는 패턴 이야기로 풀어 보고자 합니다.

숭례문이 600년간 유지 되어왔던 것은 선조들부터 숭례문을 지키고 보호해 왔기 때문입니다.
끊임없이 숭례문을 지키고 감시하는 시스템이 유지되었기 때문이지요.

하지만 숭례문이 민간인에게 개방되면서,
많은 분이 기뻐했지만 결국 한명의 과오로 인해 숭례문이 불타 소실되어 버렸습니다.

아마 일반인에게 공개를 했는 만큼 보안을 신경쓰지 않아서 그랬다고 할수 있겠지만,
이런 사태는 소프트웨어의 기술적으로 보면 약간 시각이 달라집니다.

보안이라는 것은 특정 패스 카드 같은 것을 지니고 문에서 검문을 하는 것에 비유할수 있습니다.
쉽게 말해 인증서나 키와 같이 패스카드와 같은 것들이 있어야만 되는 거죠

일반인에게 다 개방을 했기 때문에 우리나라 국민이라면 다 접근을 할수 있습니다.
그러니 어떻게 보면 소프트웨어 적으로는 이러한 문제를 보안으로 풀기보다
처음부터 방어적인 프로그래밍 또는 Fault Tolerant 한 구조로 설계가 될 필요가 있습니다 .

그럼 소프트웨어가 이러한 상황이라면 어떻게 해결하는 것이 좋을까요?

해결책은 아래에 있습니다.

사용자 삽입 이미지

WatchDog



Fault Torelant 패턴 중에 WatchDog이라는 패턴이 있습니다.
이 WatchDog이라는 것은 우리가 흔히 말하는 Observer , Interceptor 패턴들과 종종 같이 사용됩니다.

WatchDog은 특정 상황을 계속 모니터링할때 사용되는 패턴으로 정책과 룰을 가지는 Agent적인 성격이 강한 패턴입니다.

 가장 쉽게 보여질수 있는 예가  Thread Pool을 관리할때 입니다.
많은 클라이언트의 접속으로 ThreadPool안에 있는 Thread가 임계점 이하로 줄어들면,
다시 Thread를 생성하라는 명령을 내리기도 합니다.
또는 시스템의 리소스를 더 생성할수 없을 경우 클라이언트의 동시 접속자수를 제한한다거나,
아니면 Message Queue에 쌓아 놀수도 있을 겁니다.

 WatchDog이라고 하니 머리속에서 번뜩하고 떠오르는 재미난 기술이 있습니다.
Microsoft의 COM+ (DCOM의 진화모델)에는 내부적으로 WatchDog을 이용해 Recycling이라는 재미난 기능을 지원합니다.  
이상하게 제가 만든 소프트웨어가 100일 정도 지나면 Thread들이 가끔 먹통이 되어서 시스템이 중지 된다고 합시다.
가장 좋은 것은 제가 Thread 의 반환하는 부분들을 잘못했기 때문인데. 도대체 어디에 있는지 찾을수 없는지 매우 난감할때가 많습니다.

우리가 정한 주기마다 Thread Pool의 Thread들을 시스템에 반환하고, 새로운 Thread를 생성하는 것인데요.
잘못 만든 정책에 의해 종종 Thread가 일정 시간이 지나면 먹통이 될 경우를 대비해 이러한 전략들을 구성해 놓았습니다.


 견고한 소프트웨어를 만들기 위해서는 로그를 남기면서 수동적으로 대처하기 보다는 로그 정보를 잘 활용해 WatchDog으로 어떻게 문제를 해결해 갈지 생각해 보는게 더 견고한 소프트웨어를 만드는 방법일 겁니다.

숭례문의 사건으로 우리의 소프트웨어도 어떤지 한번 돌아보는 시간을 가지는 것을 어떨까요?

WatchDog의 정의 (Wikipedia)
http://en.wikipedia.org/wiki/Watchdog 

관련 샘플
http://www.codeproject.com/KB/IP/watchdogmanagement.aspx 
http://www.koders.com/java/fidFB44476831876A0203C34CF6F66639231692AA7D.aspx
http://www.koders.com/ 에서 WatchDog으로 검색 해보세요.

Posted by 빵수

BLOG main image
Eva네의 소프트웨어 이야기
Devpia Eva 팀입니다. 소프트웨어 설계,패턴, 최신 이슈들을 공유하는 장이 될것입니다. by 빵수

공지사항

카테고리

전체보기 (11)
아키텍쳐 (2)
패턴 (6)
새로운 기술들 (0)
소공이야기 (0)
컬럼 및 아티클 (1)
Eva네 (2)
문래예술 (0)

글 보관함

달력

«   2018/10   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
Total : 13,104
Today : 1 Yesterday : 8