. 정의

기본적으로 미들웨어는 애플리케이션들을 연결해 이들이 서로 데이터를 교환할 수 있게 해 주는 소프트웨어.

 

. 필요성

비즈니스 측면에서 볼 때, 미들웨어를 사용하는 이유는 이 모든 애플리케이션을 서로 묶고 이들을 웹 전위처리 부문과 연결해 정보 접근과 관련된 복잡성을 없앰으로써 고객이 원하는 정보를 쉽게 찾을 수 있도록 만들기 위해서.

반면 기술적 측면에서 볼 때, 미들웨어는, 당신이 선택하는 종류에 따라 다르기는 하지만, 다음과 같은 이점을 제공한다. 단순성 오늘날의 기업 컴퓨터 환경에서 많은 애플리케이션들은 서로 데이터를 공유해야 한다. 미들웨어를 도입한다는 것은 각 애플리케이션이 서로 개별적으로 통신하려 할 때 필요한 수많은 인터페이스 대신 미들웨어에 대한 단 하나의 인터페이스만 있으면 된다는 의미다.(그러나 두 개의 애플리케이션만을 연결할 경우엔, 2개 애플리케이션 각각에 코딩하는 일이 미들웨어를 도입하는 일보다 훨씬 덜 복잡하다.)

지속성 미들웨어는 데이터를 수집한 후 그 정보를 필요로 하는 모든 애플리케이션이나 데이터베이스가 요청할 때까지 그것을 유지할 수 있다. 이것을 기술적 용어로는
지속성(persistence)이라고 부른다.

서비스 데이터가 무결성 검사를 받거나, 출력되거나, 다른 애플리케이션의 데이터와 조율되거나, 결합되거나, 분리되거나, 다시 포맷될 필요가 있을 경우, 다양한 종류의 미들웨어가 이런 작업들을 효율적으로 처리할 수 있다. 이것은 어떤 데이터를 사용하려는 각각의 애플리케이션에 맞춰 이런 서비스 각각을 반복해 개발할 필요가 없다는 의미다.

 

. 분류

à Hurwitz의 분류법 :

             #. RPC (Remote Procedure Call, 원격 프로시저 호출)

è 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템. 동기 또는 비동기 지원.

è 컴퓨터 프로그램이 다른 주소 공간에서 원격 제어를 위한 프로그래머의 세세한 코딩 없이 함수나 프로시저의 실행을 허용하는 기술이다. 다시 말해, 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 간에 반드시 동일한 코드를 짜게 된다. 어떠한 소프트웨어가 객체 지향의 원칙을 사용하여 프로그래밍 때, RPC는 원격 호출(remote invocation) 또는 원격 방식 호출(remote method invoation)이라고 일컫는다.

è RPC[알피씨]는 한 프로그램이 네트웍 상의 다른 컴퓨터에 위치하고 있는 프로그램에 서비스를 요청하는데 사용되는 프로토콜로서, 이때 서비스를 요청하는 프로그램은 네트웍에 대한 상세 내용을 알 필요가 없다 (절차 호출이란 때로 함수 또는 서브루틴 호출의 의미로도 사용된다). 동기 운영이다. 그러나, 가벼운 프로세스의 사용이나, 같은 주소공간을 공유하는 스레드 등은 여러 개의 RPC들을 동시에 수행될 수 있도록 허용한다.

RPC를 사용하는 프로그램 문장들이 실행 프로그램으로 컴파일될 때, 컴파일된 코드 내에 RPC의 대리인처럼 동작하는 스터브가 포함된다. 그 프로그램이 실행되어, 절차 호출이 이루어질 때, 스터브는 그 요구를 받아서 그것을 로컬 컴퓨터 내에 있는 클라이언트 런타임 프로그램에게 전달한다. 클라이언트 런타임 프로그램은 원격 컴퓨터와 서버 프로그램과 어떻게 접촉해야하는지 대한 지식을 가지고 있으므로, 네트웍을 통해 원격절차를 요구하는 메시지를 보낸다. 이와 유사하게 서버는 런타임 프로그램과 원격절차 그 자신과 인터페이스를 하는 스터브을 포함한다. 처리 결과들은 같은 방식으로 되돌려진다.

RPC 모델과 구현방법에는 몇 가지가 있다. 가장 보편적인 모델과 이행방법은 OSFDCE이다. IEEE 1991 11월에 ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC에서 RPC를 정의하였다.

RPCOSI 참조 모델내의 전달계층과 응용계층을 연결한다. RPC는 네트웍 내에 분산되어 있는 여러 프로그램들을 포함하는 응용프로그램 개발을 쉽게 한다.

클라이언트/서버 통신을 위한 대체방안으로는 메시지 큐잉과 IBM APPC (advanced program-to-program communication) 등이 있다.

#. MOM(Message Oriented Middleware, 메시지 지향 미들웨어)

            è 클라이언트가 생성한 메시지는 저장소에 요청할 때가 저장하면서, 다른 업무를 지속할 수 있도록 하는 비동기식 미들웨어.

             è MOM의 장점은 애플리케이션 A의 데이터가 대기열에 가서 기다릴 수 있기 때문에 애플리케이션 B는 나중에 필요한 시점에서 그 데이터를 불러올 수 있다는 것이다.

             è MOM은 대개 데이터에 대해 수행되어야 하는 운영이 비교적 많지 않고 데이터 교환 시간이 그리 중요하지 않은 단순한 일방향의 교환을 위해 사용된다

             #. ORB(Object Request Broker)

             è 객체지향 시스템에서 객체 및 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어

             è ORB 모델을 사용하기 때문에, 기업은 애플리케이션에 손을 대지 않고도 TP 모니터에 의해 제공되는 서비스들을 수정할 수 있다.

             è CORBA에서 ORB는 분산 객체 또는 컴포넌트에서 제공할 서비스에 대해, 클라이언트가 요구하는 시점부터 그 요구가 완료될 때까지 마치 "거래 중개인"처럼 동작하는 프로그램을 말한다. 네트웍 상의 ORB 지원이라는 것은, 서버가 분산 네트웍의 어디에 위치해 있는지 또는 정확히 어떤 서버의 인터페이스가 그런 일을 해주는지 전혀 알지 못하더라도, 클라이언트 프로그램이 원하는 서비스를 요구할 수 있다는 것을 의미한다. 이러한 것들을 찾고, 실행되면서 서로 인터페이스 정보를 교환하는 것은 컴포넌트들의 몫이다. ORB는 요구된 컴포넌트를 찾아 통신하기 위해 CORBA 인터페이스 리포지터리(interface repository)를 사용한다. 컴포넌트를 생성할 때 프로그래머는 CORBAIDL을 이용해 public interface를 선언하거나, 프로그래밍 언어의 컴파일러를 이용해 구문을 적합한 IDL 문장으로 변환한다. 이런 구문들은 인터페이스 리포지터리에 메타 데이터 또는 컴포넌트의 인터페이스 동작 방식에 대한 정의로 저장된다.

             è ORB는 객체들 간의 클라이언트/서버 관계를 맺어주는 미들웨어이다. ORB를 사용하면, 클라이언트는 서버객체에 있는 메쏘드를 그것이 같은 컴퓨터에 있든, 또는 네트웍 상에 있든 상관없이 투명하게 호출할 수 있다. ORB는 호출을 가로채어 요구를 처리할 객체를 찾고, 매개변수를 전달하고, 메쏘드를 호출하고, 또 처리결과를 되돌려주는 일 등을 담당한다. 클라이언트는 객체 인터페이스를 제외하고는, 객체의 위치나 그 객체를 개발할 때 사용된 프로그램 언어나 운영체계, 그 밖의 시스템과 관련된 그 어느 것도 알 필요가 없다. 이렇게 함으로써, ORB는 이질적인 분산 환경에서, 서로 다른 컴퓨터 내에 있는 응용프로그램 간의 상호 운용성과 다중 객체시스템들에 대한 상호연결성을 제공한다.

보통 대부분의 클라이언트 서버 응용프로그램들에서, 개발자는 자신의 고유한 설계를 사용하고, 또 장치들간에 사용될 프로토콜을 정의하기 위한 공인된 표준을 사용하게되는데, 프로토콜 정의는 개발언어, 네트웍 전달계층 등 수많은 요인들에 의존적이다. 그러나 ORB는 이러한 과정을 단순화하고, 언어에 독립적인 IDL이라는 하나의 구현에 의한 응용프로그램 인터페이스를 통해 프로토콜이 정의된다.

ORB는 유연성을 제공한다. ORB는 프로그래머가 가장 적합한 운영체계와 실행환경 그리고 심지어는 개발중의 각 시스템 컴포넌트에 사용되는 프로그래밍 언어까지 마음대로 선택할 수 있게 한다. 가장 중요한 것은 ORB가 기존의 컴포넌트들의 통합을 허용한다는 것이다. ORB에 기초한 솔루션에서, 개발자는 새로운 객체를 만드는데 사용된 것과 같은 IDL을 써서 기존의 컴포넌트를 단순히 모델하고난 다음, 표준화된 버스와 기존의 인터페이스간에 번역을 해주는 '' 코드를 작성하면 그뿐이다.

 

             #. DB접속 미들웨어

             è 애플리케이션과 데이터베이스 서버를 연결해주는 미들웨어

à 다른 분류법

             #. TP 모니터(Transaction Processing(TP) monitor)

             è 분산 시스템의 애플리케이션을 지원하는 미들웨어. 주로 C/S 시스템에 사용됨

             è 각종 프로토콜에서 동작하는 세션과 시스템과 데이터베이스 사이의 최소 처리단위인 트랜잭션을 감시하여 일관성있게 보관 유지하는 역할을 하는 트랜잭션 관리 미들웨어이다.

(분산 시스템의 애플리케이션을 지원하는 미들웨어. 주로 C/S 시스템에 사용됨.)

             è 트랜잭션이 프로세스 내의 한 단계로부터 다음단계로 잘 넘어가는지를 감시하는 프로그램이다. TP monitor의 목적은 트랜잭션 처리가 완전하다는 것을 보장하고, 만약 에러가 발생하면 적절한 조치를 취하기 위한 것이다. TP 모니터들은 부하분산을 채용하고 있는 3 계층 아키텍처에서 특히 중요한데, 그 이유는 한 트랜잭션이 여러 대의 서버 중 어느 곳으로도 전달 될 수 있기 때문이다. 실제로, 많은 TP monitor들이 모든 부하분산 동작을 처리하고, 트랜잭션들을 그들의 유용성에 따라 다른 서버로 보내고 있다.

             #. WAS(Web Application Server)

             è 웹용 애플리케이션을 지원하는 미들웨어

             è 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)이다

             è 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다. 한국에서는 일반적으로 "WAS" 또는 "WAS S/W"로 통칭하고 있으며 공공기관에서는 "웹 응용서버"로 사용되고, 영어권에서는 "Application Server"로 불린다.

웹 애플리케이션 서버의 기본 기능은 3가지이다.

1. 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.

2. 여러 개의 트랜잭션을 관리한다.

3. 업무를 처리하는 비즈니스 로직을 수행한다.

             #. Enterprise Service Bus, 엔터프라이즈 서비스 버스

             è 메시지 기반으로 느슨한 결합형태의 표준 인터페이스 통신을 지원하는 미들웨어로 기업 안팎에 있는 모든 시스템 환경을 연동하는 미들웨어.


출처:
http://www.ciokorea.com/jsp/article/article_magazine_sview.jsp?nm_id=2956&gubun=nm_title&nm_gubun2=&nm_gubun3=&nm_gubun4=&nm_spressman=&nm_spubdate=&nm_epubdate=&sword=미들웨어&sPage=1

http://www.terms.co.kr



Posted by 파이팅야
,