본문 바로가기

기술

Self-Adaptive Software

Self-Adaptive는 구체적인 네 가지의 Self-* 속성을 대변 하는 단어입니다.
Self-Adaptive에는 네 가지의 세부 항목은 Self-Configuration, Self-Healing,
Self-Optimizing, Self-Protecting입니다.

Self-Configuration는 시스템을 동적으로 재구성할 수 있는 능력입니다.

Self-Healing은 시스템의 오류를 스스로 진단하고 수정할 수 있는 능력입니다.

Self-Optimizing은 시스템이나 시스템의 구성 요소(예를 들면 컴포넌트)가 스스로 자신의 성능을 높일 수 있게 하는
능력입니다. 여기에서 성능은 처리 속도를 높이거나 메모리 소모량을 줄이거나 처리량을 높이거나 하는 등을 말합니다.

마지막으로 Self-Protecting는 시스템의 실패나 외부의 공격으로부터 자신을 스스로 보호합니다.
Self-Healing과 시스템의 실패로부터 보호한다는 것이 유사하지만 다른 점은 Self-Healing이 실패를 해결하지
못하면 그 실패를 Self-Protecting이 해결하여 시스템이 정지하지 않도록 합니다. 2차적인 안전책이라 할 수
있습니다.

위의 네 가지 항목을 우리는 Self-Adpative라 부르며 이번 교과부 연구에서 우리가 하는 것은
Self-Configuration입니다. 이전 로봇 프로젝트에서 하려고 했던 것은 Self-Healing이고요. 실패했지만
ㅋㅋㅋㅋㅋㅋ

아무튼 이러한 Self-Adaptive가 필요한 이유는 기사에서 볼 수 있는것처럼 복잡한 시스템을 사람이 손으로 관리하기에는
너무 복잡하기 때문에 시스템이 정책에 따라 관리자의 개입 없이 스스로 운영되고 최적화되길 원하기 때문입니다. 위 기사의
상황에서 Self-Configuration이 되었다면 자동화된 관리가 가능하므로 사람이 실수로 데이타 파일을 삭제하는 일이
발생하지 않았을 것이고, Self-Healing이 가능했다면 사람이 파일을 삭제를 했더라도 그것으로 부터 발생한 오류를 스스로
진단하여 위 기사에서처럼 사람이 손으로 복구를 하지 않았더라도 오류를 복구했을 겁니다. 이 과정이 실패해도
Self-Protecting이 가능했다면 로드밸런서가 죽어버리는 최악의 사태는 발생하지 않았겠지요.

위와 같은 사례는 이미 흔하게 발생하고 있고, 클라우드 시대가 도래하면서 더욱 가속화되고 있습니다. 그러므로
Self-Adaptive는 매우 유용한 기술이 될 것입니다.

한가지 더 첨가하자면 The vision of autonomic computing이라는 논문에서는
Self-Management라는 이름으로 위의 네 가지 항목을 설명하고 있습니다.
확 의미가 느껴지죠.

혹시 한분에게라도 도움이 될까하여 적어봤습니다. 특히 Self-adpative가 구체적으로 와닿지 않는다는 채영이에게 많은
도움이 되길 바라며.

         대연 드림

참고논문
The vision of autonomic computing
Self-Adaptive software: Landscape and research challenge
An architectural blueprint for autonomic computing






아마존-넷플릭스, 클라우드 장애의 교훈
http://www.zdnet.co.kr/ArticleView.asp?artice_id=20130104082705



나의 iPhone에서 보냄