카테고리 없음2015. 6. 30. 15:27

[작성일 : 2011-12-26]


1. 서론


미들웨어는 양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어를 말한다. 즉, 서로 다른 소프트웨어, 서비스 사이에 존재하여 표준적인 방법으로 연결할 수 있는 인터페이스를 제공하고, 또 안정적으로 데이터, 정보를 전달하는 소프트웨어 라고 할 수 있다. 예를 들어서, 데이터베이스로 부터 데이터를 저장하거나 읽어올 수 있게 하는 웹브라우져가 있다면, 이 때  데이터베이스와 웹서버를 연결시키는 미들웨어가 존재할 수 있다. 대표적인 미들웨어 분야로는 ODBC와 같은 DB 미들웨어, 코바ORB와 같은 객체 미들웨어, 트랜잭션을 위한 턱시도·티맥스 등의 TP모니터, 비동기 방식을 지원하는 메시징 미들웨어, 웹 애플리케이션 서버 등의 웹 미들웨어가 있다.


미들웨어가 갖는 공통적인 특징, 또는 미들웨어의 기준은 다음과 같다.


2. 미들웨어의 기준 : 배관 설비와의 비교


1) 대부분 눈에 보이지 않음

부엌과 욕실 등에서 사용하는 물은 집안의 배관을 통해서 전달되지만, 정작 배관은 눈에 보이지 않는 곳에 있다. 이와 마찬가지로 미들웨어를 통해 전달되는 정보는 웹사이트를 통해 눈으로 되지만, 미들웨어의 존재는 사용자가 눈으로 확인할 수 없다. 소프트웨어를 사용하는 경우, 논리적 뷰의 상단에 전자 상거래 웹 에플리케이션과 같은 소프트웨어 패키지가 있고, 하단에는 데이터베이스 및 운영체제와 같은 소프트웨어 패키지가 있다는 것은 분명하게 인식할 수 있다. 하지만 그 중간 부분, 즉 모든 것을 함께 연결하는 배관에 해당하는 미들웨어의 존재는 구체적으로 식별하기 어려울 수 있다. 


2) 표준 업무 방식 제공

집을 지을 때, 배관 설비를 처음부터 만들기 원한다면 물론 가능하다. 하지만 배관 설비를 구입하는 것이 훨씬 간편하다. 소프트웨어 개발자도 에플리케이션 서버, 데이터베이스 연결 드라이버, 인증 처리기, 메시징 서비스 등을 모두 처음부터, 자체적으로 개발할 수 있다. 하지만 이미 확립된 표준에 따라 개발된 "미들웨어 구성 요소"를 사용하는 것이 휠씬 간편하다. 미들웨어에서 이러한 표준은 잘 정의된 API ( Application Programming Interface ) 라는 형식으로 표현된다.


3) 복잡한 시스템의 구성 요소를 연결 해 줌

집안에는 주방, 난방 시스템, 욕실, 세탁기, 정원 등 여러 수도 시설이 있는데, 안정적인 배관 설비 덕분에 우리는 수도 공급에 차질이 생기지 않을까 걱정할 필요가 거의 없다. 미들웨어 역시 복잡한 시스템, 애플리케이션 및 데이터베이스를 안정적으로 연결하여, 정보를 계속 이동 시킨다. 배관과 미들웨어의 또 다른 유사점은 처음부터 모든 것을 재구성할 필요 없이, 다른 사람이 다른 시점에 구축한 시스템들을 연결할 수 있다는 것이다. 예를 들어, 구형 세탁기를 20년 만에 스팀 드럼 세탁기로 교체했다고 해서, 부엌와 욕실의 배관을 다시 교체 해야 할 필요는 없다. 미들웨어의 가장 강력한 접근법 중의 하나인 ESB(Enterprise System Bus)에 기반한 SOA(Service-Oriented Architecture)는 하드웨어 버스와 같은 기능을 하는 서버, 메시징 및 API 를 제공한다. 각기 다른 시점에, 다른 조직에 의해 개발되고, 다른 프로토콜을 통해 통신하는 엔터프라이즈 소프트웨어 애플리케이션을 통합 할 때, ESB는 프로토콜 간에 메시지를 전환하고, 해당 메시지를 올바른 서비스에 전달하는 역할을 하기 때문에, 통합을 위해서 하나의 일관된 언어를 사용하도록 애플리케이션을 재 작성 할 필요가 없다.


4) 사소한 고민 거리를 피할 수 있음

미들웨어가 이처럼 눈에 보이지 않는 모든 기능을 관리해 주기 때문에, 소프트웨어 개발자는 소프트웨어 개발에 집중하여 비지니스 문제점을 해결하고, 고객의 요구를 충족 시킬 수 있다.


3. 미들웨어의 종류


미들웨어는 이 기종 소프트웨어 또는 서비스 사이에 존재하는 소프트웨어를 가리키는 범용적인 정의 이다. 그래서 미들웨어는 웹서버와 데이터베이스 사이에 존재하는 시스템일 수도 있고, 핸드폰 이나, RFID 단말기 에 존재하는 모듈일 수도 있다. 미들웨어를 범주로 나누어 살펴보면 다음과 같다.


1) 데이터베이스 기반 미들웨어

데이터베이스 벤더에서 제공하는 소프트웨어로서 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어이다. 이 소프트웨어을 사용하여 시스템을 구축하는 경우에 보통 2-티어 아키텍쳐라고 한다. (예, 오라클의 Sql*Net, IBM 인포믹스의 I*Net, ODBC 드라이버 등)


2) RPC(Remote Procedure Call) 기반 미들웨어

한 응용 프로그램의 프로시저를 사용하여 원격 응용 프로그램의 프로시저를 로컬 호출처럼 호출할 수 있게 해 주는 소프트웨어이다. 일반적으로 이 유형의 미들웨어는 프로시저 기반 프로그램을 처리했지만, 지금은 객체 기반 구성 요소도 포함한다. (예, DCE RPC, 엔테라 등)


3) MOM(Message Oriented Middleware) 기반 미들웨어

주로 비동기형 메시지 처리를 전달하는 방식의 미들웨어이다. 온라인 업무에 사용되기 보다는 이 기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용되고 있다. (예, IBM MQ시리즈, BEA Message Q, J2EE의 JMS 기반 제품 등)


4) TP-모니터 기반 미들웨어

온-라인 트랜잭션 업무(은행 계정, 항공기/버스 예약 업무 등)에서 트랜잭션을 처리, 감시하는 미들웨어이다. 사용자 수가 증가하여도 빠른 응답 속도를 유지해야 하는 OLTP 성의 업무에 적합하다. (예, BEA TUXEDO, BEA TOPEND, IBM TxSeries, 티맥스소프트 Tmax, 대만 CS Talk 등)


5) ORB(Object Request Broker) 기반 미들웨어

객체 지향 미들웨어로서, 특히 코바(CORBA) 표준 스펙을 구현한 미들웨어를 말한다. (예, IONA Orbix, Borland VisiBroker, BEA TUXEDO 8.0 이상 CORBA 엔진 등)


6) WAS(Web Application Server) 기반 미들웨어

클라이언트/서버 환경 보다는 웹 환경을 구현하기 위한 미들웨어이다. Web Application Server는 HTTP 세션 처리를 위한 웹서버 기능 뿐만 아니라, TP 기능을 보강하여, 미션-크리티컬한 기업 업무까지 자바, EJB 컴포넌트 기반으로 구현 가능하게 해주는 미들웨어이다. (예, BEA WebLogic, IBM WebSphere, Oracle 9iAS, SUN iPlanet 등)


4. 결론


미들웨어는 “이 기종 소프트웨어 또는 서비스 사이에 존재하면서 표준적인 방법으로 연결할 수 있는 인터페이스를 제공하여 안정적으로 데이터, 정보를 전달하는 소프트웨어” 라고 정의 할 수 있다. 데이터베이스 종류에 관계없이 표준적인 DB 접근 방법은 제공하는 ODBC 도 이 정의를 만족하기 때문에 미들웨어라고 할 수 있다. 일반적으로 기업에 있어서 상용 미들웨어 제품을 말할 때는 “독립적으로 개발되어 서로 다른 네트워크 플랫폼에서 실행되는 소프트웨어 구성 요소 간의 상호 작용을 가능하게 해 주는 소프트웨어" 라고 정의 하기도 한다. 상용 미들웨어는 일반적으로 RPC(Remote Procedure Call) 기반, MOM(Message Oriented Middleware) 기반, TP-모니터 기반, ORB(Object Request Broker) 기반, WAS(Web Application Server) 기반 으로 분류 한다.


--------------------

참고 자료: 

www.kr.redhat.com/pdf/articles/what-is-middleware.pdf

http://ko.wikipedia.org/wiki/미들웨어

http://legendfinger.com/64

http://oneshot-textcube.blogspot.com/2010/01/tuxedo-미들웨어-개념-및-종류.html

http://docs.oracle.com/cd/E19148-01/820-0532/aeraq/index.html

http://technet.tmax.co.kr/kr/edocs/tmax/50/getting-started/index.html

<끝>

Posted by 좋은나무