본문 바로가기
개념/etc

SOA / ESB / OSGI

by Hwanii_ 2024. 1. 24.
728x90

용어 정리

 

SOA : Service-Oriented Architecture

 

ESB : Enterprise Service Bus

 

OSGI : Open Service Gateway Initiative

(Initiative : 계획)

 

 

 

Apache ServiceMix는 ESB (Enterprise Service Bus) 를 구현하기 위한 오픈 소스 통합 플랫폼이다.

 

Apache ServiceMix는 다양한 프로토콜 및 데이터 형식을 지원하는데, 서비스 배포를 위해서 사용한다.

 

사실 서비스 배포뿐만 아니라, 라우팅, 중계, 변환, .. 등등 다양한 통합 패턴을 제공한다.

 

Apache ServiceMix는 OSGI (Open Service Gateway Initative) 를 사용해서 모듈화되어 있는데,

이러한 모듈화를 통해서 유연하고 확장 가능한 특징을 가지고있다.

 

 

 

SOA란 ?

 

SOA (Service-Oriented Architecture) 는 백엔드에서 사용되는 소프트웨어 설계 및 개발을 위한 아키텍처 종류중 하나이다.

 

애플리케이션 기능을 비즈니스적인 의미를 지니는 기능 단위를 묶어서 표준화된 인터페이스를 통해 서비스를 구현한다.

 

SOA에서 핵심 개념은 '서비스' 이다.

 

여기서 의미하는 표준화된 호출 인터페이스는 REST API 등이 있다.

(일반적으로 웹서비스에서 사용되는 표준 프로토콜은 SOAP, REST, .. 등이 있다)

(데이터 형식은 XML, JSON, .. 등이 있다)

 

이렇게 구현된 서비스들은 기업의 업무에 따라 어플리케이션을 구성한 소프트웨어 개발 아키텍처를 의미한다.

 

서비스 (Service) 는 특정 플랫폼에 종속되지 않은 표준 인터페이스를 통해 기업의 업무를 표현 되었다고 했다.

느슨하게 결합되고 상호 조합이 가능하기 때문에 독립적인 소프트웨어 구성 요소가 된다.

 

예를들어 정된 정보를 검색, 작업 수행, .. 등등 구체적인 태스크를 구현하고 표현한다.

(임직원 정보 조회 서비스, 계좌 이체 서비스, 상품 주문 서비스, .. 등등)

이것은 완전한 개별적인 비즈니스 기능 수행을 의미한다.

 

요약 :

SOA는 별도로 배포 또는 유지 및 관리되는 소프트웨어 구성요소를 통합하고, 서로 통신하고 연동되도록 함으로써 여러 시스템에서 실행되는 소프트웨어 애플리케이션을 구성할 수 있다.

 

 

ESB란 ?

 

ESB (Enterprise Service Bus) 는 기업에서 다양한 응용 프로그램 및 서비스간에 통합, 상호 운용성을 제공하기위해 사용되는 소프트웨어 아키텍처 및 통합 패턴을 의미한다.

 

ESB는 기업의 시스템과 응용 프로그램들 간의 통신, 데이터 교환, 비즈니스 프로세스 흐름을 중앙에서 관리하고 조정하는 역할을 수행한다.

 

그런데 ESB는 처음에는 아키텍처적인 개념이였지만, 현재 ESB라는 용어는 특정 기술 스택 또는 솔루션을 지칭한다.

 

왜냐하면, 기업 또는 벤더가 이러한 아키텍처를 구현하고 제품 (솔루션) 을 제공하기 때문이다.

 

그래서 현재는 ESB를 구현체라고 표현한다.

 

 

 

SOA와 ESB의 차이점

 

SOA (Service-Oriented Architecture) 와 ESB (Enterprise Service Bus) 의 차이점은 무엇일까 ?

 

결론부터 말하면

SOA는 아키텍처 디자인 원칙을 의미하는 개념이고, ESB는 이 아키텍처를 실제로 구현하고 운영하기 위한 솔루션을 의미한다.

 

SOA (서비스 지향 아키텍처)

 

목적 : 기업의 IT 시스템을 서비스 중심으로 설계하고 구축하는 아키텍처.

 

특징 : 서비스 중심의 아키텍처이므로 표준화된 서비스 인터페이스를 제공하고, 재사용 가능한 서비스 모듈 등이 특징.

 

 

 

ESB (중앙화된 통합 버스)

 

목적 : ESB는 SOA의 구현체이다. 다양한 서비스 및 응용 프로그램 간의 통합을 담당하는 중앙화된 통합 버스이다.

 

특징 : 프로토콜 변환, 데이터 변환, 보안, 트랜잭션 관리, .. 등등의 기능을 제공한다.

 

 

 

OSGI란 ?

 

OSGI는 자바 애플리케이션을 모듈 (번들 == Bundle == Module) 단위로 나누고, 동적으로 로딩해서 관리할 수 있게 해주는 표준을 의미한다.

 

대표적으로 Apache Karaf를 사용할 수 있다.

 

Karaf는 OSGI 기반의 경량 컨테이너 및 서비스 플랫폼이다.

 

OSGI 표준에 따라 모듈화된 애플리케이션을 개발, 배포, 실행할 수 있도록 지원한다.

 

(우리가 그동안 사용했던 이클립스와 같은 개발 IDE Tool도 이러한 OSGI 표준을 사용해서 만들어진 소프트웨어이다)

(그래서 이클립스는 모듈화된 구조로인해 다양한 플러그인을 통합해서 작업 환경을 제공할 수 있는 것이다)

(플러그인은 모듈화된 구성 요소를 사용해서 확장되어 있고, 각 플러그인은 OSGI 번들로 패키징되서 동적으로 사용한다)

 

[ References ]

 

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

 

OSGi - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. OSGi(Open Service Gateway initiative) Alliance는 1999년에 썬 마이크로시스템즈, IBM, 에릭손 등이 구성한 개방형 표준 단체이다. (OSGi Alliance는 처음에 Connected Alliance라고 불

ko.wikipedia.org

 

https://bumday.tistory.com/117

 

Karaf에 대해

1. Karaf란 1.1 Karaf소개 Apache Karaf: The modulith* runtime (Modulith: 모듈식 모놀리식(모듈리틱) Java 어플리케이션의 개발을 지원하는 기술울 구축하기 위한 환경이다.) Karaf는 가볍고, 강력하며, 기업용으로

bumday.tistory.com

 

https://karaf.apache.org/manual/latest/overview.html

 

Overview

Apache Karaf is a modern polymorphic application container. Karaf can be used as a standalone container, supporting a wide range of applications and technologies. It also supports the "run anywhere" concept (on any machine with Java, cloud, docker images,

karaf.apache.org

 

https://apache-servicemix.tistory.com/entry/Karaf-%EA%B0%9C%EC%9A%94

 

Karaf - 개요

[원본 출처] http://karaf.apache.org/manual/latest/overview.html Apache Karaf Overview (개요)Apache Karaf is a OSGi-based runtime which provides a lightweight container onto which various components and applications can be deployed. Apache Karaf 는

apache-servicemix.tistory.com

 

https://apache-servicemix.tistory.com/category/Apache%20Karaf

 

'Apache Karaf' 카테고리의 글 목록

Open Source ESB Apache ServiceMix

apache-servicemix.tistory.com

 

 

 

 

 

참고)

 

Apache 재단의 오픈 소스 소프트웨어들이 존재한다.

 

Apache ServiceMix

Apache Active MQ

Apache CXF

Apache Camel

Apache Karaf

 

각각의 Apache 프로젝트들은 서로 연관성을 가지고 있지만 서로 독립적으로 사용될 수 있는 오픈 소스 소프트웨어이다.

 

1) Apache ServiceMix는 ESB를 구현하기 위한 오픈 소스 통합 플랫폼이다.

ServiceMix는 다양한 프로토콜 및 데이터 형식을 지원하고, 서비스 배포, 라우팅, 중계, 변환, .. 등등 다양한 통합 패턴을 제공한다.

OSGI를 사용해서 모듈화되어 있기 때문에 유연하고 확장 가능한 특징을 지닌다.

 

 

 

2) Apache ActiveMQ는 JMS (Java Message Service) 를 구현한 오픈 소스 메시징 브로커이다.

메시징 시스템을 사용해서 분산 시스템 간에 메세지를 교환하고 통신할 수 있다.

ActiveMQ는 다양한 프로토콜 및 메세지 패턴을 지원한다.

가볍고 높은 성능을 가진 것이 특징이다.

 

 

 

3) Apache CXF는 Java 기반의 웹 서비스를 개발하기 위한 오픈 소스 프레임워크이다.

CXF는 JAX-WS 및 JAX-RS와 같은 표준을 준수한다.

SOAP 및 RESTful 한 웹 서비스를 지원한다.

CXF는 다양한 기술 및 플랫폼에서 웹 서비스를 쉽게 구축하고 통합할 수 있도록 설계되어있다.

 

 

 

4) Apache Camel은 경량 EAI (Enterprise Application Integration) 프레임워크이다.

간단하면서도 강력한 통합 라이브러리를 제공한다.

다양한 기업 시스템 간의 통합을 단순한 라우팅 및 변환 설정을 통해 구현할 수 있다.

Camel은 다양한 프로토콜과 데이터 형식을 지원한다.

다양한 통합 패턴을 쉽게 구현할 수 있도록 도와준다.

 

 

 

5) Apache Karaf는 OSGI 기반의 경량 컨테이너 및 서비스 플랫폼이다.

OSGI는 자바 기반의 모듈 시스템을 정의하는 표준이다.

Karaf는 이것을 기반으로 모듈화된 애플리케이션을 개발, 배포, 실행할 수 있도록 지원한다.

Karaf는 Apache ServiceMix의 핵심 컨테이너로 사용된다.

Karaf는 다양한 Apache 프로젝트와 통합해서 사용할 수 있다.

 

 

 

위의 오픈 소스 소프트웨어들을 다양하게 활용하는 핵심 목표는 다음과 같다.

 

다양한 시스템 및 응용 프로그램 간의 효과적인 통합과 상호 운용성을 달성하기 위함이다.

 

다양한 기술과 플랫폼 간의 차이를 극복하고 유연하며 확장 가능한 프로세스를 구현하도록 도와준다.

 

 

 

EAI란 ?

 

참고 :

https://hwanii96.tistory.com/549

 

WebService / SOAP / WSDL / EAI

WebService란 ? 서로 다른 컴퓨팅 환경에서 사용되는 모든 애플리케이션들이 직접적으로 소통하고 실행될 수 있도록 동적 시스템 환경을 구현해주는 소프트웨어 구성 요소를 의미. '서로 다른 컴퓨

hwanii96.tistory.com

반응형

'개념 > etc' 카테고리의 다른 글

Quartz / Crontab / Cron 표현식  (1) 2024.01.24
WebService / SOAP / WSDL / EAI  (0) 2024.01.24
Servlet & Spring MVC  (0) 2023.10.27
Ajax  (1) 2023.10.25
RESTful API  (0) 2023.10.25