[작성 - 김석우, dolbi / 본 원고는 마이크로소프트웨어 2007년 7월호에 실린 기사입니다]
1.4 OSGi 핵심 - 번들(Bundle), 서비스(Services)
1.4.1 번들 (Bundle)
OSGi의 가장 기본적인 실행 단위인 번들은 OSGi Framework에서 수행되는 어떤 S/W component의 resources, 동작을 위한 Java classes, Bundle 정보를 담고 있는 Manifest file, service를 포함하는 JAR 파일이다. OSGi는 단 하나의 VM 인스턴스위에서 동작하고, 복수개의 클래스로더를 수행하여 독립된 namespace를 갖게됩니다. 또한 번들은 동적 라이프 싸이클을(dynamic Install, Start, Stop, Delete, Update) 갖고 수행하며(Without a JVM restart) 성능을 위해서 여러 리소스와 인터페이스를 지원한다. (Images, GUI look & Feel, Native-JNI) 자바 애플릿처럼 서버에서 다운로드하는 형식이 아니라 로컬 디바이스에 상주하는 것도 하나의 특징이다. 다음 그림은 번들의 동적 라이프 싸이클을 나타낸다.번들이 OSGi Framework에 등록되면(Active Status) Bundle Context가 생성되는데, OSGi Framework와 번들사이의 인터페이스 역할과 다른 서비스 검색과 서비스 등록에 사용된다.
[그림 6. OSGi Bundle - Dynamic Life Cycle]
1.4.2 서비스 (Service)
OSGi Service는 자바 오브젝트로서 하나의 번들에 의해서 등록되며 다른 번들에 의해서 사용되거나, 복수개의 번들이 연동/통합하여 독자적인 서비스를 만들어내기도 한다. 명시된 형태는 Java Interface 스타일로 표현되어, 서비스의 스펙과 구현이 완벽하게 분리되어 사용된다. 이렇게 되면, 동일한 서비스 기능을 갖고도 서로 다른 번들이 서로 다른 구현(Implementation)을 서비스 레지스트리에 등록할 수가 있게된다.
[그림 7. OSGi bundle과 Service 생성]
[그림 8. 다양한 OSGi Service Model]
특히 디바이스-디바이스 M2M 환경이나 센서 네트워크, 로봇 등의 새로운 솔루션과 서비스 등이 속속 등장하는 현재와 미래에는 서비스를 쉽게 생성하고 운영하고 관리할 수 있는 그리고 표준화된 스펙을 제공하는 OSGi가 더욱 더 그 영향력을 확장해 나갈것이라고 생각하게 된다. Mobile/Embedded에서 탄생하여 Desktop/RCP와 Enterprise의 확장, 그리고 다가올 새로운 M2M, Micro Sensor Networks 시대에서도 진정한 Universal Middleware Framework로 자리잡게될것을 기대해본다. 다음회에서는 실제 OSGi 솔루션과 성공적인 활용 사례 그리고 임베디드 개발 환경의 구축에 대해서 살펴본다.
/// 참고문헌
1. OSGi Service Platform Core SPEC R4 - http://www.osgi.org
2. About the OSGi Service Platform - http://www.osgi.org
3. IBM - SMF (Service Management Framework) - http://www.ibm.com/software/wireless/smf
4. The Fundamental of OSGi - 한국산업기술대학교, 서대영 교수