OSGi에 대하여 알아보자

category 백엔드/개발 2022. 5. 3. 13:09
728x90
반응형

OSGi란?

OSGi (Open Service Gateway initiative - 개방형 서비스 게이트웨이 이니셔티브) 프레임워크는 모듈형 소프트웨어 프로그램과 라이브러리를 개발 및 배포하기위한 자바 프레임 워크이다. 각 번들은 강하게 결합하고, 동적으로 로딩이 가능한 class, jar 그리고 명시적으로 외부 종속성을 선언하는 환경설정파일의 모음이다.
쉽게 이야기해서 OSGI는 번들 단위로 관리하고 실행할 수 있는 프레임워크를 말한다.

출처: https://ko.wikipedia.org/wiki/OSGi

 

OSGi 적용분야

  • 이클립스 IDE
  • OSGi 서비스 플랫폼은 홈게이트웨이
  • 텔레매틱스 단말(예:BMW, SimensVDO), 모바일 단말
  • 산업 자동화, 빌딩 자동화
  • PDA / 스마트폰 / 태블릿 등의 모바일 단말
  • 그리드 컴퓨팅
  • 백색가전 (예: BSH, 보쉬-지멘스 가전 합작회사의 Serve@Home, Clare Controls, Xanboo, AlertMe 등)
  • 엔터테인먼트 (예: 필립스의 iPronto), 기업 차량 관리(예: Acunia의 Fleet Management Solution 등)
  • 로봇 미들웨어와 데스크톱
  • 엔터프라이즈 서버

 

OSGi 장점

  • 하드웨어 플랫폼과 OS에 독립적
  • 공통의 응용 API를 구현하므로 응용 분야에 독립적
  • 하나의 플랫폼에 여러 종류의 서비스 제공자가 서비스를 제공

 

OSGi 아키텍처

Bundles

  • Bundles은 추가적인 manifest 헤더를 가진 jar 로 구성된다.
  • 서비스를 제공하기 위한 기능적 배포 단위이다.

Services

  • Service층은 Plain Old Java Interfaces (POJI) 혹은 Plain Old Java Objects (POJO)를 위한 publish-find-bind model 을 제공함으로써 bundle을 동적인 방식으로 연결한다.
  • 특정 기능을 수행하는 자바 인터페이스와 구현 객체

Services Registry

  • 관리 서비스( 서비스등록, 서비스추적, 서비스참조)를 위한 응용프로그램 인터페이스이다.

Life-Cycle

  • 생명주기 관리((install, start, stop, update, and uninstall)를 위한 응용프로그램 인터페이스이다.

Modules

  • 캡슐화를 정의하고 종속성을 선언하는 층이다. ( 어떻게 bundle이 코드를 불러오고 내보내는지)

Security

  • 번들로 하여금 미리 정의된 기능을 제한하는 보안측면을 다루는 층이다.

Execution Environment

특정 플랫폼에서 어떤 method와 class가 가용한지 정의한다. 정해진 실행환경은 없다. 왜냐하면, 실행환경은 Java Community Process가 Java의 새로운 version과 에디션을 생성할 때마다 그 변경사항에 종속적이기 때문이다. 어째튼, 아래 목록이 현재 대부분의 OSGi 실현체에 의해 지원되는 실행환경이다.

  • CDC-1.0/Foundation-1.0
  • CDC-1.1/Foundation-1.1
  • OSGi/Minimum-1.0
  • OSGi/Minimum-1.1
  • JRE-1.1
  • J2SE-1.2 부터 J2SE-1.6까지

 

OSGi Framework

  • 연속적으로 동작할 수 있는 애플리케이션을 작성할 수 있는 context 제공이 목적
  • 자바 프로그래밍 언어가 가진 코드의 네트워크 이동성을 이용
  • 컴포넌트 기반의 개발 환경 제공
  • 보다 풍부하고 구조적인 서비스 개발 가능

 

OSGi Framework 제공 환경 목표

  • 애플리케이션이 실행 중에도 동적으로 다운로드 및 업그레이드가 가능
  • 제한된 메모리 디바이스 사용
  • 효율적이고 통합된 컴포넌트 개발환경 제공
    • 애플리케이션 간의 의존성에 대한 관리 기능 제공
    • 확장 가능성 (scalable)

 

참고

728x90
반응형

'백엔드 > 개발' 카테고리의 다른 글

Java OSGi Tutorial  (0) 2022.05.03
Java + Gradle을 사용하여 gRPC 서비스를 만들어보자  (0) 2022.04.28
Spring Boot - Hello World 시작해보기  (0) 2022.04.13
Spring Boot 환경설정  (0) 2022.04.13
Django-DSL 동적 INDEX 생성  (0) 2019.02.03