논□문

고장 감내 자율적 객체

(Fault-tolerant Object)

김 인 규, 홍 장 의, 배 두 환

한국과학기술원 전자전산학과 전산학전공

{igkim, jehong, bae}@salmosa.kaist.ac.kr

요  약

인터넷에서는 네트워크 단절, 노드의 작동 불능과 같은 고장(fault)들이 발생한다. 이와 같은 고장들은 인터넷 기반 어플리케이션에서 해결해야 하는 중요한 문제이다. 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체는 인터넷에서 발생하는 이러한 고장들에 대하여 효과적으로 대처하는 수단으로 사용될 수 있다. 자율적 객체는 인터넷을 돌아다니면서 방문한 노드에서 일을 처리하는 이동 객체로서, 자율적 객체에서의 코드 이동성에 기반한 동적 기능 합성이란 자율적 객체가 동적으로 기능을 추가, 삭제, 변경하는 것을 의미한다. 이 논문에서는 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체가 인터넷에서 발생하는 고장에 대하여 기존의 자율적 객체보다 더 잘 대처할 수 있음을 보이고자 한다. 이를 위하여 자율적 객체에서의 코드 이동성에 기반한 동적 기능 합성에 대하여 알아보고, 인터넷 기반 어플리케이션인 이동 컴포넌트 테스팅 어플리케이션의 실행환경에서 고장이 발생한 경우 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체가 이 고장에 잘 대처할 수 있음을 보이고자 한다.

1. 서론

인터넷은 규모가 크고 많은 사람들에 의하여 사용되고 다양한 종류의 시스템들로 이루어져 있다. 인터넷을 구성하는 시스템들을 연결하는 네트워크에서는 전송 속도의 잦은 변화와 네트워크 단절 및 서비스를 제공하는 노드의 작동 불능 등의 문제가 발생한다. 이 중에서 네트워크의 단절과 노드의 작동 불능은 인터넷 기반 어플리케이션에서 해결해야 하는 중요한 문제이다[4].

이러한 문제를 해결하기 위하여 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체를 이용할 수 있다. 자율적 객체란 네트워크상을 돌아다니면서 방문한 노드에서 일을 처리하는 이동 객체(mobile object)를 의미한다. 이러한 자율적 객체에서의 코드 이동성에 기반한 동적 기능 합성이란 동적으로 기능을 추가, 삭제, 변경하는 것을 의미한다. 네트워크를 돌아다니면서 일을 처리하고 상황에 따라 특정한 기능이 필요하면 동적으로 기능을 가져와 추가할 수 있고 또한 기존 기능을 새로운 기능으로 변경할 수 있으므로 인터넷에서 발생할 수 있는 네트워크 단절, 노드 작동 불능과 같은 여러 고장들에 좀 더 효과적으로 대처할 수 있다.

본 논문에서는 인터넷에서 고장이 발생했을 때 이에 대처할 수 있는 자율적 객체에 대하여 연구하기 위하여 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체에 대하여 알아보고 이를 위한 언어적 구조체와 자율적 객체 플래폼을 소개하겠다. 또한, 인터넷 기반 어플리케이션인 이동 컴포넌트 테스팅 어플리케이션의 실행환경에서 고장이 발생한 경우 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체가 이 고장에 잘 대처함을 보이고자 한다.

본 논문은 다음과 같이 구성되어 있다. 2장에서는 기존의 자율적 객체에 대한 연구들을 살펴보겠다. 특히 인터넷상의 고장에 대한 자율적 객체의 대처 능력에 대하여 살펴보고자 한다. 3장에서는 인터넷에서 고장이 발생할 경우에 자율적 객체가 이에 효율적으로 대처하는 것을 가능하게 하는 코드 이동성에 기반한 동적 기능 합성을 소개하겠다. 이를 위한 언어적 구조체와 자율적 객체 플래폼은 4장에서 설명하고자 한다. 5장에서는 인터넷 기반 어플리케이션인 이동 컴포넌트 테스팅 어플리케이션의 실행환경에서 고장이 발생한 경우를 설정하여 코드 이동성에 기반한 동적 기능 합성을 지원하는 자율적 객체가 이 고장에 잘 대처함을 보이고자 한다. 마지막으로 6장에서는 결론 및 향후 연구 방향으로 끝을 맺고자 한다.

2. 관련연구

자율적 객체에 관한 여러 연구들이 존재한다[5,7,8,9,10,12]. 이 연구들 중에서 MESSENGERS[5], Voyager[10], Java- To-Go[9]에 대하여 각 연구의 목적, 고장에 대한 대처 능력을 알아 보겠다. 또한, 고장에 잘 대처하는 것을 가능하게 하는 동적 기능 합성에 대하여 각 연구들이 어느 정도 지원하는지 알아보겠다.

) 동적 기능 합성□이란 기능을 자율적 객체의 행위안으로 동적으로 통합(incorporation)시키는 것을 의미한다[6].

2.1. MESSENGERS

MESSENGERS는 자율적 객체의 개념에 기반한 범용 목적의 분산 컴퓨팅을 위한 시스템이다[5].

MESSENGERS는 물리적 네트워크, 데몬(daemon) 네트워크, 논리적 네트워크를 포함하고 있고 그 관계는 [그림 1]과 같다.

(그림1) MESSENGERS의 실행구조

물리적 네트워크는 컴퓨터들을 연결하는 랜(LAN) 환경을 나타낸다. 데몬 네트워크는 물리적 네트워크 위에서 작동하고 자율적 객체가 작동할 수 있는 환경을 제공하다. 데몬에서는 인터프리트 언어로 프로그램되어 있는 자율적 객체를 실행시킨다. 또한 데몬은 논리적 네트워크에 있는 여러 노드들과 연관관계를 갖고 있어 자율적 객체들을 각 노드들과 연결시켜 주고 있다. 논리적 네트워크는 데몬 네트워크 상에서 작동하는 어플리케이션 관련 계산 네트워크 (application- specific computation network)이다. 이 논리적 네트워크는 런타임(run-time)시에 동적으로 생성될 수 있고 삭제될 수도 있다.

MESSENGERS에서는 인터프리터 역할을 하는 데몬이 주변의 노드들이 고장을 갖고 있는지 발견하여 자율적 객체가 그 노드를 거치지 않도록 도와줄 수 있는 기반을 제공한다.

MESSENGERS에서의 자율적 객체의 동적 기능 합성에 대하여 살펴보면 다음과 같다. 자율적 객체가 각 노드들을 방문하면서 일을 처리할 때 방문한 노드에서 제공하는 기능(function)을 동적으로 합성하여 이용할 수 있다. 또한 자율적 객체는 기능 명세(specification)를 가지고 다니다가 그 명세에 해당하는 기능을 다른 노드로부터 가져와 호출할 수 있다. 이를 위해 MESSENGERS는 네트워크 파일 시스템을 이용한다. MESSENGERS는 각 노드에서 제공하는 기능과 다른 노드에서 제공하는 기능을 동적으로 합성함으로써 자율적 객체가 상황에 맞는 기능에 수행할 수 있도록 한다.

그러나, MESSENGERS에서 자율적 객체는 동적으로 합성할 수 있는 기능의 영역이 제한되어 있다. 자율적 객체는 각 노드에서 제공하는 기능과 네트워크 파일 시스템을 지원하는 노드에서 제공하는 기능만을 이용할 수 있다. 또한 LAN에서 작동한다는 제약이 있어 일반적으로 다양한 기능들을 여러 곳에서 지원하는 인터넷의 장점을 얻지 못한다.

2.2. Voyager

Voyager[10]는 자바를 위한 자율적 객체 ORB(Object Request Broker)이다. 즉, Voyager는 ORB의 특성과 자율적 객체인 이동 에이전트(mobile agent)의 특성을 지원하는 시스템이다. Voyager에서는 프로그래머가 다른 노드에 있는 객체를 마치 현재 노드에 있는 것처럼 사용하는 것을 가능하게 한다. 또한 일반적인 객체를 움직임을 갖는 객체, 즉 모발 에이전트로 변환시키는 것도 가능하게 한다.

Voyager에서는 고장에 대하여 특별하게 대처하는 법에 대하여 말하고 있지 않다. 그러나 동적 기능 합성에 대해서는 다음과 같은 지원을 하고 있다. Voyager에서는 동적집합(dynamic aggregation)이라는 개념을 지원한다. 동적 집합을 통해 자율적 객체는 방문한 노드에 있는 기능을 동적으로 추가하고 다른 노드로 이동할 때 그 기능과 같이 이동할 수 있다. 앞에서 말한 일반적 객체에 이동성을 부여하는 것도 동적집합 개념을 이용한 것이다.

그러나 Voyager에서는 동적으로 추가된 기능을 동적으로 삭제시킬 수 없다. 즉 한번 추가한 후, 그 기능을 자율적 객체가 계속 가지고 다녀야 한다. 따라서 자율적 객체가 필요한 기능을 계속 추가하다 보면 현재는 불필요한 기능도 가지고 다닐 수 있는 가능성이 있다. 또한 한번 추가된 기능을 다른 기능으로 바꿀 수 없기 때문에 상황에 맞는 기능을 제공하는 것이 어렵다.

2.3. Java-To-Go

Java-To-Go[9]는 자율적 객체와 자율적 객체를 이용한 어플리케이션을 위한 시험적인 개발 툴과 환경을 제공하는 것을 목표로 하고 있다. 자바언어로 구현되어 있고 다른 자율적 객체 플래폼에 비해 간단하게 구현되어 있다.

Java-To-Go에서는 고장에 대하여 대처할 수 있는 능력이 거의 지원되고 있지 않다. 네트워크의 단절이나 노드의 작동 불가에 대하여 메시지를 출력하는 수준의 지원만 하고 있다.

Java-To-Go에서의 동적 기능 합성을 살펴보면 자율적 객체가 다른 노드로부터 기능을 가져오는 것을 가능하게 하는 RemoteClassLoader라고 이름 붙이어진 클래스 로더를 지원함으로써 동적 기능 합성을 가능하게 한다. 그러나 Java-To-Go에서는 정해진 노드(이전 노드, 홈 노드)에서만 기능을 가져올 수 있기 때문에 임의의 노드에서 기능을 가져오는 것은 가능하지 않다. 따라서 MESSENGERS와 마찬가지로 다양한 기능들을 여러 곳에서 지원하는 인터넷의 장점을 얻지 못하고 있다.

. . .

6. 결론 및 향후 연구 방향

본 논문에서 동적 기능 합성을 지원하는 자율적 객체가 인터넷에서 발생하는 네트워크 단절, 노드의 작동 불능과 같은 고장에 대하여 잘 대처할 수 있음을 보였다.

이를 위해서 동적 기능 합성을 지원하는 자율적 객체에 대하여 알아 보았고 인터넷 환경에서 고장이 발생했을 경우에 대한 가정을 설정하고 동적 기능 합성을 지원하는 자율적 객체가 이에 잘 대처함을 보였다. 특히 동적 기능 합성을 지원하는 자율적 객체는 고장 감내 뿐만아니라 속도성 및 모듈성에서도 장점을 보임을 알 수 있었다. 모듈화된 자율적 객체의 개발은 앞으로 활발히 사용될 컴포넌트 기반 소프트웨어 개발 방법을 자율적 객체의 개발에 적용할 수 있는 기반을 마련해 주었다.

향후 연구 방향으로 첫째, 기존 자율적 객체를 사용한 구현과 동적 기능 합성을 지원하는 자율적 객체를 사용한 구현의 정량적 비교가 요구된다. 정량적 비교를 통하여 어느 경우에 동적 기능 합성을 지원하는 자율적 객체가 고장들에 더욱 효과적으로 대처할 수 있는지를 알 수 있을 것이다. 둘째, 모듈성을 제공하는 동적 기능 합성을 지원하는 자율적 객체를 컴포넌트 기반 개발 방법으로 개발하기 위하여 자바 빈즈를 사용한 자율적 객체의 개발에 대하여 연구할 필요가 있다. 이는 자율적 객체가 동적으로 합성하는 기능의 크기를 컴포넌트 수준으로 향상시키는데 도움을 줄 것이다.

감사의 글

이 논문을 위한 감사의 글을 적는다.

참고문헌

[1] L. Bic, M. Fukuda, and M. dillencourt, □"Distributed Computing Using Autonomous Objects",□ COMPUTER, vol. 29, no. 8, pp. 55-61, August 1996.

[2] D. Chess, C. Harrison, and A. Kershenbaum, □"Mobile Agents: Are They a Good Idea?"□, Mobile Object Systems: Towards the programmable Internet, J. Vitek and C. Tschudin, eds., LNCS 1222, Springer-Verlag, pp. 25-47, April 1997.

[3] P. Chan, R. Lee, and D. Kramer, The Java Class Libraries Second Edition Volume 1, Addison-Wesley, 1998.

[4] G. Coulouris, J. Dollimore, and T. Kindberg, Distributed Systems Concepts and Design, second edition, Addison-Wesley, 1994.

[5] M. Fukuda, MESSENGERS: A Distributed Computing System Based on Autonomous Objects, PhD thesis, Information and Computer Science, University of Carifornia, Irvine, 1997.

배두환

1976년~1980년 서울대학교 조선공학과(학사).

1985년~1987년 Univ. of Wisconsin 전산학(석사).

1988년~1992년 Univ. of Florida 전산학(박사).

1988년~1992년 Univ. of Florida R.A.

1992년~1994년 Univ. of Florida 조교수.

1995년~1996년 한국과학기술원 정보 및 통신공학과 조교수

1996년~현재 한국과학기술원 전자전산학과 부교수

관심분야는 객체지향 기술, 분산 병렬 소프트웨어 공학, 소프트웨어 개발방법론 & 개발 프로세스, 컴포넌트 기반 소프트웨어 공학.