검수요청.png검수요청.png

"미들웨어"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(중간자 문서로 넘겨주기)
 
(ODCB)
 
(사용자 2명의 중간 판 9개는 보이지 않습니다)
1번째 줄: 1번째 줄:
#넘겨주기 [[중간자]]
+
'''미들웨어'''(middleware)는 [[애플리케이션]]들을 연결해 이들이 서로 [[데이터]]를 교환할 수 있게 중계 역할을 하는 [[소프트웨어]]를 말한다. [[와스|웹 애플리케이션 서버]](WAS)는 미들웨어의 일종이다.
 +
 
 +
==개요==
 +
[[운영체제]]와 해당 운영체제에서 실행되는 [[응용 프로그램]] 사이에 존재하는 소프트웨어로, 응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 [[컴퓨터]] 소프트웨어다. 또한, [[네트워크]]를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해주는 소프트웨어를 말한다. 기본적으로 숨겨진 변환 계층으로 기능하는 미들웨어는 분산 응용 프로그램의 통신 및 데이터 관리를 가능하게 한다. 데이터와 [[데이터베이스]]가 파이프 사이를 쉽게 연결하기 때문에 배관이라고도 한다. 미들웨어를 사용하면 사용자가 [[웹]] 브라우저에서 양식을 제출하거나 웹 [[서버]]가 사용자의 프로필을 기반으로 동적 웹 페이지를 반환하도록 요청할 수 있다. 주로 3계층 [[클라이언트]] 서버 구조에서 존재하고, 웹 브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽을 수 있게 해준다.<ref name=“미들웨어”>하이파이브, 〈[https://m.blog.naver.com/PostView.nhn?blogId=edusns1&logNo=221069285964&proxyReferer=https:%2F%2Fwww.google.com%2F 미들웨어(middleware) 종류, 이점]〉, 《네이버 블로그》, 2017-08-08</ref>
 +
 
 +
미들웨어의 기능은 크게 9가지 정도로 나눌 수 있다. 클러스터링(Clustering)은 PC 등의 기기들을 고속 네트워크를 이용하여 병렬로 연결하여 사용자에게 고사양의 컴퓨터를 사용하는 듯한 기능을 제공하는 기술이다. 미들웨어의 첫 번째 기능을 클러스터링으로 여러 개의 같은 작업을 하는 서버를 하나의 컴퓨터처럼 사용하도록 하여, 확장성이 좋고 로드 밸런싱(Load balancing) 등 여러 가지 제어 환경을 제공할 수 있다. 두 번째로, 로드 밸런싱은 사용자들이 리소스 등을 요구하면, 이를 클러스터링 된 서버들에게 작업을 효율적으로 분배하는 기능을 말한다. 세 번째 기능은 페일 오버(failover)라는 기능인데, 장애 극복 기능이라고도 한다. 미들웨어는 페일 오버 기능을 사용해, 클러스터링 된 서버 중 한 대가 오류를 일으켰을 때 다른 서버가 처리하도록 하여 지속성을 유지한다. 네 번째 기능은 분산 [[트랜잭션]](Distribution Transaction)으로, 다른 장치의 데이터베이스 [[시스템]]을 사용할 경우, 다른 트랜잭션을 하나의 트랜잭션으로 사용하도록 하는 것이다. 다섯 번째 기능은 장치를 최적화 상태로 유지하기 위해 프로세스의 수를 제한하고, 재시동 역할을 하는 [[프로세스]] 관리다. 여섯 번째는 리소스 관리라는 기능으로, 클라이언트에서 서버에 리소스를 요구할 경우 폴링 방식을 이용해서 분배하는 기능이다. 일곱 번째 기능은 시스템 관리 기능으로, 프로세스, 리소스, 서비스 제공 횟수, 평균 시간 등을 모니터링하고 이를 관리하는 통합 기반을 말한다. 여덟 번째 기능은 외부에서 클러스터링 된 서버로의 불법접근을 제한하는 보안 기능이고, 아홉 번째 기능을 레거시(Legacy)시스템과의 통합 환경을 제공하는 시스템 통합(integration) 기능이다.<ref>nwow, 〈[https://nwow.tistory.com/4 분산시스템에서의 미들웨어의 기능]〉, 《티스토리》, 2009-04-28</ref>
 +
 
 +
==특징==
 +
표준화된 [[인터페이스]]를 제공해주고, 다양한 환경 지원 및 체계가 다른 업무와의 상호작용을 가능하게 해준다. 분산된 업무를 동시에 처리할 수 있어 자료의 일관성이 유지되고, 부하의 분산이 가능하다는 장점들이 있다.<ref name=“미들웨어”></ref>  미들웨어를 도입하면, 기존의 다양한 벤더의 [[플랫폼]]을 네트워크 차이를 의식하지 않고 상호 접속하여 이용할 수 있도록 존 플랫폼이 통합된다. 시스템이 통합됨에 따라, 사내의 각 부문에서 각각 관리되고 있는 정보를 통합 관리함으로써 분배작업, 이중 작업으로부터 해방되어 업무 효율화를 가져올 수 있다. 미들웨어는 조작이 우수하고, 사용이 편리하기 때문에 호스트 단말과 비교하여 사용자가 사용하기 쉬운 GUI, 일상적으로 사용하고 있는 표 계산 소프트웨어 등으로 사내의 각 데이터베이스 접근이 가능하다. 데이터베이스에 자유로운 접근이 가능하므로, 각 개인이 실시간 데이터를 분석하고, 활용하여 업무의 질을 향상시킬 수 있다. 하지만 운영체제에서 바로 실행되는 것이 아니고, 운영체제 위에 있는 [[가상머신]]이 [[프로그램]]을 돌리기 때문에 속도가 느려지고, 성능이 떨어진다.<ref>yeondulung, 〈[https://yeonduing.tistory.com/3 분산시스템] 미들웨어(Middleware)]〉, 《티스토리》, 2020-08-15</ref> 미들웨어를 도입하면, 기존의 다양한 벤더의 플랫폼을 네트워크 차이를 의식하지 않고 상호 접속하여 이용할 수 있도록 존 플랫폼이 통합된다. 시스템이 통합됨에 따라, 사내의 각 부문에서 각각 관리되고 있는 정보를 통합 관리함으로써 분배작업, 이중 작업으로부터 해방되어 업무효율화를 가져올 수 있다. 미들웨어는 조작이 우수하고, 사용이 편리하기 때문에 호스트 단말과 비교하여 사용자가 사용하기 쉬운 GUI, 일상적으로 사용하고 있는 표 계산 소프트웨어 등으로 사내의 각 데이터베이스 접근이 가능하다. 데이터베이스에 자유로운 접근이 가능하므로, 각 개인이 실시간 데이터를 분석하고, 활용하여 업무의 질을 향상시킬 수 있다.
 +
 
 +
==종류==
 +
===데이터베이스 미들웨어===
 +
데이터베이스 미들웨어는 하나의 애플리케이션을 특정 데이터베이스로 연결해 주는 소프트웨어를 말하며, 일반적으로 클라이언트에게 공통의 SQL 호출 인터페이스를 제공함으로써 여러 종류의 데이터베이스에 쉽게 접근할 수 있도록 하는 역할을 한다. 데이터베이스의 표준인 SAG(SQL Access Group)에서 정의한 CLI(Call Level Interfacce)이다. 클라이언트 서버 구조로 보면 데이터베이스 미들웨어는 2계층 구조에서 주로 사용되어졌다. 처음에는 지역 데이터베이스 서버의 접근을 목적으로 설계되었지만, ISO사의 RDA(Remote Data Access) 표준 구조와 [[IMB]]사의 DRDA 등에서 볼 수 있듯이 데이터베이스 미들웨어는 점차 원격 데이터베이스 접근으로의 기술 구조로 변화되었다. 데이터베이스 미들웨어에는 ODBC(Open Database Application Connectivity), IDAP(Intergranted Database Application Interface), DRDA(Distributed Relational Data Access), 객체 연결 삽입 데이터베이스가 있다.
 +
 
 +
====ODBC====
 +
[[마이크로소프트]]사에 의해 제시되었고, SAG/CLI 명세와 [[SQL]] 문법상의 [[API]](Application Programming Interface)를 기반으로 하고 있다. 대부분 [[윈도우]] 기반 클라이언트 서버 시스템에서 사용되고, 애플리케이션과 개발 툴에서 데이터베이스를 쉽게 접근할 수 있도록 API를 제공한다. 현재 대부분의 데이터베이스 업체에서는 ODBC를 통한 데이터베이스 접근 방식을 제공하고 있고, 관련 ODBC 드라이버를 제공하기 때문에 우리는 별다른 어려움 없이 데이터베이스에 쉽게 접근할 수 있다. 그러나 클라이언트 서버 시스템에서 ODBC를 통해 데이터베이스에 접근하고자 할 때 성능의 문제가 논쟁이 되고, 동일 애플리케이션에서 여러 개의 데이터베이스에 접근하고자 할 때 여러 개의 ODBC를 번갈아 연결해야 하는 등의 문제점들이 있다.
 +
 
 +
====IDAPI====
 +
Inprise사에서 만들어진 데이터베이스 미들웨어로 ODBC와는 경쟁 상품으로 사용되고 있다. IDAPI는 클라이언트가 원거리 데이터베이스에 접근할 때 용이하도록 설계된 것으로, 원거리 서버에 드라이버를 상주 시켜 많은 클라이언트에게 원거리의 같은 드라이버에게 접근을 허락함으로써 데이터베이스 미들웨어를 사용한 2-계층 클라이언트 서버 시스템에서 좋은 성능을 내도록 하였다. 오늘날 ODBC를 제공하는 여러 업체에서도 이러한 기법을 이용하고 있다.
 +
 
 +
====RDA/DRDA====
 +
RDA와 DRDA는 제품이 아닌 표준이다. RDA는 개발자들에게 데이터베이스에 접근하는 표준 방식을 제공하여 클라이언트가 여러 개의 데이터베이스에 동시에 접근할 수 있게 해준다. DRDA는 IBM사의 데이터베이스 접속 표준으로 다양한 플랫폼 환경에서 쉽게 여러 데이터베이스와 연결을 제공한다. 이들은 데이터베이스 미들웨어가 지역에 있는 하나의 데이터베이스와의 단순 연결에서 원격지에 있는 다양한 데이터베이스의 접속에 대한 표준을 제공하고 있다. 이러한 구조를 가진 데이터베이스 미들웨어들을 SQL [[게이트웨이]]라고 말하는데, 많이 사용된 제품 중에 EDA/SQL(Enterprise Database Access/Structured Query Language)도 여기에 해당한다.
 +
 
 +
====객체 연결 삽입 데이터베이스====
 +
[[객체]] 연결 삽입 데이터베이스(Object Linking and Embedding Database, OLEDB)마이크로소프트사의 제품으로, 클라이언트와 애플리케이션들의 객체지향화에 따라 객체지향 패러다임이 데이터베이스 미들웨어에 적용되기 시작한 대표적인 예다. 전 세계에서 SQL 데이터를 비롯해, 다양한 형태로 저장되어 있는 데이터들의 위치에 대하여 독립적으로 투명하게 액세스하는 유니버셜 데이터 액세스의 전략은 기존의 API Call방식의 ODBC 함수를 통한 데이터 접근 방식과는 다른 컴포넌트 형식의 데이터 액세스 매커니즘을 제공하였다. 이것을 OLEDB라고 하는데, OLEDB를 4GL에서 사용하기 쉽도록 인터페이스를 재구성한 것을 ADO(ActiveX Data Object) 모델이다. OLEDB는 시스템 레벨의 프로그래밍 인터페이스, ADO는 애플리케이션 레벨의 프로그래밍 인터페이스로 구분하면 된다. 자동화(Automation)에 기반한 ADO를 통해 엔터프라이즈 개발자들은 쉽게 데이터베이스 프로그래밍을 할 수 있다.<ref name=“종류”>듀폰, 〈[http://blog.naver.com/PostView.nhn?blogId=skyhomo&logNo=220086099002&redirect=Dlog&widgetTypeCall=true 미들웨어의 정의, 종류]〉, 《네이버 블로그》, 2014-08-08</ref>
 +
 
 +
====와스====
 +
와스(Web Application Server, WAS)는 브라우저와 데이터베이스 관리 시스템 사이에서 동작하는 미들웨어로, 웹 클라이언트의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가지고 있다. 웹이 널리 사용되면서 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능이 요구되었고, 이러한 동적인 기능은 [[프로그래밍]]을 통해 구현되었고, 이 기능들은 데이터베이스 관리 시스템과 연관된 경우가 빈번하다. 와스는 3가지의 중요 기능을 제공한다. 먼저 와스는 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다. 두 번째로, 여러 개의 트랜잭션을 관리하고 마지막으로 업무를 처리하는 비즈니스 로직을 처리한다. 마지막으로 와스는 웹 서버의 기능도 기본적으로 제공한다. 웹 프로그래밍을 진행하게 되면, [[톰캣]]이란 와스를 설치하여 웹 서버로 이용할 수 있다. 웹 서버와 비슷하지만, 웹 서버는 일반적으로 정적인 콘텐츠를 웹 브라우저에게 전송하는 역할을 하고, 와스는 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할을 한다.<ref>Root Over-grow, 〈[https://0ver-grow.tistory.com/134 4. 웹 서버의 기능, 종류, 역할/ WAS란, 종류, 웹서버와의 차이점/...]〉, 《티스토리》, 2019-07-06</ref>
 +
 
 +
===통신 미들웨어===
 +
통신 미들웨어는 애플리케이션과 애플리케이션 간의 정보 교환을 제공하며, 클라이언트 서버 시스템 개발에 있어 확실한 프로그램 간 통신 모델을 제공한다. 데이터베이스 미들웨어는 2계층 클라이언트 서버 구조를 제공하는 반면, 통신 미들웨어는 3계층 클라이언트 서버 구조를 제공한다. 기술적 변화에 따라 전통적 통신 소프트웨어와 [[컴포넌트]] 소프트웨어로 분류할 수 있는데, 컴포넌트 소프트웨어란 새로운 세대의 미들웨어로, 분산 객체인 것을 의미한다. 전통적 미들웨어에는 원격  [[프로시저]] 호출, 메시지 지향 미들웨어, [[피투피]](Peer-to-Peer0 등 원시 통신 미들웨어와 다양한 분산 서비스를 제공한  DCE(Distributed Computing Environment), 트랜잭션 및 협력 서비스를 제공하는 분산 트랜잭션 모니터가 있고, 객체 미들웨어는 ORB(Object Request Broker)를 기반으로 하는 CORBA와 CDE/RPC를 기반으로 객체 모델을 구현한 DCOM이 있다. 전통적 미들웨어와 객체 미들웨어 모두, 개발자들에게 네트워크와 플랫폼에 독립적으로 클라이언트 서버 애플리케이션을 개발하고 실행할 수 있도록 해준다는 것이다.
 +
 
 +
====원격 프로시저 호출====
 +
원격 프로시저 호출(Remote Procedure Call, RPC)은 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템으로 동기 또는 비동기 지원을 한다. 전통적인 프로그램에 포함된 서브루틴을 호출하는 것과 같은 모습을 하고 있지만, 네트워크로 연결된 서버 사이의 원격 프로시저를 호출한다는 차이점이 있다. 기존 개발자들에게 익숙하기 때문에, 네트워크나 운영체제가 복잡함을 숨기고, 네트워크상에서의 통신 애플리케이션을 작성할 수 있다. 원격 프로시저 호출은 클라이언트에서 입력 값을 실어 원격 서버에 있는 프로시저를 호출하게 되고, 호출된 프로시저는 수행된 결과를 클라이언트 프로세스에게 전달하는 방법을 취하는데, 여기서 클라이언트 프로세스는 프로시저가 완전히 수행될 때까지 일시 정지 상태가 된다. 이것을 통해 원격 프로시저 호출이 통신에게 있어 동기적인 방식을 취한다는 것과 원격 프로시저 호출을 통한 클라이언트 서버 모델은 클라이언트와 서버가 단단히 결합되어 있다는 것을 알 수 있다. 클라이언트 서버 시스템 구축에 많은 기여를 했고, 현재 대부분의 시스템에서 사용하고 있는 기술이다. 구조를 이해하기 쉽고, 개발에 용이하다는 장점이 있지만, 현재의 클라이언트 서버 시스템을 구축하기에는 몇 가지 문제점이 있다. 클라이언트와 서버는 동기적으로 동작되기 때문에 클라이언트가 서버의 프로시저를 호출한 뒤 서버 프로세스가 완료될 때까지 클라이언트는 서버에 종속되어야 한다. 또한 원격 프로시저 호출은 구조상 높은 속도의 네트워크 환경을 요구하는데, 그 이유는 원격 프로시저 호출을 사용하여 클라이언트 서버 통신을 할 때, 네트워크 사이에서 많은 양의 작업이 기울어있기 때문이다.
 +
 
 +
====DCE====
 +
DCE(Distributed Computing Environment)는 OSF(Open Software Foundation)에 의해 미들웨어 표준으로 발표되었다. IBM, HP 등 OSF 관련업체에서 자신들의 플랫폼에 따라 DCE 제품들이 만들어졌으며, 이들 DCE는 다양한 플랫폼에 상관없이 서로 상호 운용성을 띠고 있다. DCE는 복잡하지만 매우 효과적이고 강력한 미들웨어다. 분산 컴퓨팅 환경을 위하여 다양한 서비스를 제공하여, 네트워크상에서 분산된 여러 자원들을 쉽게 통합할 수 있다. DCE는 단순한 애플리케이션 통신을 위한 미들웨어는 아니며, 분산 애플리케이션과 운영체제 사이에 위치하여 분산에 관련된 서비스를 통합적으로 제공하는 분산 컴포넌트 집합이다. DCE에서 사용되는 서비스들은 클라이언트 서버 통신을 제공하는 RPC, 객체에 대한 식별 및 위치 투명성을 제공하는 CDS, 분산된 파일 보안 서비스인 DSS, 분산된 파일을 공유하는 DFS, 분산된 시스템 간 시간의 동기화를 제공하는 DTS, 병렬 처리에 의한 성능 향상을 하는 Threads가로 간단히 요약할 수 있다. DCE는 여러 가지 분산 서비스들을 사용하여, 이전과는 전혀 다른 차원의 분산 시스템을 구축하기 시작하였다. 운영체제나 네트워크 등 자원에 독립적인 분산된 애플리케이션을 통하여 여러 대의 이기종 컴퓨터의 자원을 공유하고, 서로 협력하는 분산 컴퓨팅 환경을 조성하였다. 그러나 DCE의 핵심 기술로 사용된 RPC는 IDL을 통해 개발자들에게 단순화된 프로그램 모델로서, 통신 애플리케이션의 표준 모델을 제공하였지만, 앞에서 설명된 것처럼 전통적인 RPC가 동기화 및 네트워크 자원에 대한 성능 등의 문제를 해결하지는 못하였다. 이러한 문제점에도 불구하고 1990년대 초부터 많은 다국적 기업에서 DCE를 기반 구조로 택하였고, 많은 프로젝트가 수행되었다. 그 이유는 DCE는 메인 프레임부터 운영체제까지 광범위하게 DCE를 제공했고, DCE만큼 분산 환경에서 이기종의 다양한 시스템을 통합할 수 있는 현실적인 해답이 없기 때문이다. 그러나 DCE는 메모리를 비롯하여 많은 자원을 요구받고 있고, 개발자들에게 다양한 프로그래밍 기술을 요구하였고, DCE를 지원하는 개발 도구의 부족으로, 일반 기업에서는 크게 환영받지 못했다. 현재는 DCE에 기반한 클라이언트 서버 시스템을 사용하지는 않지만, DCE의 핵심기술이 오늘날의 중요한 컴퓨팅 영역인 보안, World Wide Web, 분산객체 등에서 사용되고 있다.
 +
 
 +
====메시지 지향 미들웨어====
 +
메시지 지향 미들웨어(Message Oriented Middleware, MOM)는 쉽게 정의하면 네트워크상에서 메시지를 전달하는 운반자이다. 클라이언트가 생성한 메시지는 저장소에 요청할 때 저장하면서, 다른 업무를 지속하도록 할 수 있는 비동기식 미들웨어다. 메시지 지향 미들웨어는 메시지 보내기와 받기 두 개의 프로세스가 활동적으로 메시지를 교환하는 모델과 하나의 프로세스가 일정한 큐에 메시지를 저장하는 메시지 큐잉 모델 크게 두 가지 모델로 나눌 수 있다. 메시지 지향 미들웨어를 사용하면 원격 프로시저 호출 미들웨어를 사용할 경우 발생하는 클라이언트와 서버 간에 동기적인 통신 문제점을 해결할 수 있다. 프로그램의 오류 및 시스템 또는 네트워크 자체의 오류로 인한 문제에서 메시지 지향 미들웨어는 데이터 전달 및 프로그램 수행에 대한 신뢰와 안전을 보장할 수 있다. 원격 프로시저 호출과 마찬가지로 메시지 지향 미들웨어 또한 표준 API를 제공함으로써 시스템 간 독립적인 통신을 하는데, 원격 프로시저 호출이 동기적인 반면 메시지 지향 미들웨어는 비동기적인 통신을 한다는 것이 차이점이다.
 +
 
 +
====트랜잭션 프로세싱 모니터====
 +
트랜잭션 프로세싱 모니터(Transaction Processing Moniter, TP-Monitor, TPM)는 분산 시스템의 애플리케이션을 지원하는 미들웨어로 주로 클라이언트 서버 시스템에 사용된다. 클라이언트 서버 시스템의 환경이 고조되면서, 산업별로 금융, 재무, 예약 시스템 같은 다수의 사용자가 실시간으로 접근하여 많은 양의 데이터를 처리해야 하는 시스템들도 클라이언트 서버 시스템으로 옮겨가기 시작했다. 그러나 이러한 시스템들은 안정된 트랜잭션을 요구하는데, 이러한 요구에 대한 해결책으로 트랜잭션 프로세싱 모니터가 사용된다. 1994년 X/OPEN XTM 그룹에서 분산 트랜잭션 프로세싱(DTP) 참조 모델을 발표하여, 트랜잭션 시스템의 구조와 외부 자원들의 통신 방법을 정의했다. 이 모델에서 XA 인터페이스는 트랜잭션 관리자와 자원 관리자 간의 통신을 위한 함수 호출들의 집합이며, 이 함수들을 통하여 분산된 이기종 데이터베이스 사이에 트랜잭션을 성공적으로 처리할 수 있다. 트랜잭션 프로세싱 모니터의 대표적인 제품으로는 OSF/DCE를 기반으로 하는 Transarc의 ENCINA, IBM의 CICS/6000 등이 있다. 이 제품들의 공통적인 역할과 특징은 비즈니스의 요구 사항을 해결하기 위하여 여러 소프트웨어 상호 간의 혼합된 환경에서 애플리케이션 개발 능력과 부가적인 서비스를 제공한다는 것이다. 이것을 통해 트랜잭션 프로세싱 모니터는 통신 미들웨어 기능 외에 트랜잭션 협력 서비스, 안정적인 메시지 큐잉 시스템, 일의 흐름 관리 및 개발의 통합적인 서비스들을 제공한다는 것을 알 수 있다. 처음에는 전통적인 미들웨어와 3GL에 기반한 개발 방식을 사용하였지만, 점차 개발언어와 미들웨어를, 객체지향 언어와 ORB(Object Request Broket)로 사용하면서 객체화되어가는 모습을 보이고 있다. 지금도 대부분의 대용량 자원과 복잡한 프로세스를 요구하는 시스템들을 클라이언트 서버 시스템으로 전환하고자 하는 프로젝트에서는 분산 트랜잭션 프로세싱 모니터가 많이 사용되고 있다.
 +
 
 +
====객체 요청 브로커====
 +
객체 요청 브로커(Object Request Broker, ORB)는 객체지향 시스템에서 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어다. 로컬 및 원격지에 위치한 객체들 사이에 통신을 담당하는 핵심기술로, 분산 객체 컴퓨팅을 지원할 수 있기 때문에 대표적인 미들웨어로 자리를 잡을 것이며, 대부분의 객체지향 미들웨어에서 핵심 기술로 사용될 것이다. 원격 프로시저 호출의 형태를 기본적으로 수용하고 있고, 애플리케이션에서 애플리케이션으로의 통신으로 호출과 답변의 방식을 적용하지만, 원격 프로시저 호출과 달리 객체기반의 구조를 가지고 있다. 코드의 재사용이라는 강점을 가지고 있는데, 객체지향 언어가 아닌 3세대 언어로 개발되어 있더라도 캡슐화를 통해 재사용이 가능하다. 객체 요청 브로커는 표준 인터페이스를 사용하여 객체들을 개발하도록 되어 있다. 표준 객체들 사이의 통신은 플랫폼에 독립적이고, 분산된 여러 객체 서버들과도 쉽게 연결이 가능하도록 설계되어 있다. 객체 요청 브로커 인터페이스는 인터페이스 정의 언어인 IDL을 사용하고, 하나의 객체와 다른 객체 사이의 인터페이스를 정의한다. OMG의 CORBA에서도 통신을 담당하는 핵심 미들웨어로 ORB를 표준으로 채택하였다. 현재 컴포넌트 기술을 이끌어 가는 분산 객체인 마이크로소프트사의 DCOM과 OMG의 CORBA의 핵심 컴포넌트로 사용되고 있다.
 +
 
 +
====객체 트랜잭션 모니터====
 +
객체 트랜잭션 모니터(Object Transaction Monitor, OTM)은 전통적인 트랜젝션 프로세싱 모니터의 기능과 ORB에 의해 제공되는 객체 기반 프로그램 인터페이스를 통해 유연성 있는 통합적인 시스템 환경을 제공하는 새로운 형태의 미들웨어다. 현재 객체 트랜잭션 모니터를 사용하는 제품으로는 BEA의 M3, IONA의 OTM 등과 같이 CORBA를 기반 서비스로 제공하는 제품들과 마이크로소프트사의 DCOM을 기반으로 하는 MTS(Microsoft Transaction Server) 등이 있다. 분산 객체인 CORBA와 DCOM은 앞으로 소프트웨어 개발 방식의 표준으로 자리 잡으려면, 분산 애플리케이션들을 전사적인 환경에서 통합적으로, 신뢰성 있게 운영하기 위해서는 [[보안]], 트랜잭션, 성능 향상 등의 기능들이 동시에 제공되어야 한다. 이러한 기능들은 객체 트랜잭션 모니터를 통해 제공받게 된다. 현재 기업에서 기관업무를 클라이언트 서버 시스템으로 구축할 경우 트랜잭션 프로세싱 모니터가 보편적으로 사용되고 있지만, 앞으로 컴퓨팅 환경에서 분산 컴퓨팅을 실현하고 구현하는 해결책으로 객체 트랜잭션 모니터가 사용될 것이라고 예상된다.<ref name=“종류”></ref>
 +
 
 +
====엔터프라이즈 서비스 버스====
 +
엔터프라이즈 서비스 버스(Enterprise Service Bus, ESB)는 메시지 기반으로 느슨한 결합 형태의 표준 인터페이스 통신을 지원하는 미들웨어로 기업 안팎에 있는 모든 시스템 환경을 연동하는 미들웨어다. 비즈니스 내에서 서비스, 애플리케이션, 자원을 연결하고 통합하는 미들웨어라고 할 수 있으며, 이를 통해 분산된 서비스 컴포넌트를 쉽게 통합하고 연동할 수 있어 신뢰성 있는 메시지 통신이 가능하다. 제공하는 벤더에 따라 정의가 조금씩 차이가 있어, 기관마다 엔터프라이즈 서비스 버스에 대한 정의는 다 다르다. 기업 IT 환경에서 중추적인 역할을 수행하는 것으로 각 레거시 시스템과의 연동을 위한 다양한 표준 프로토콜의 지원을 기본으로, 재사용 가능한 [[컴포넌트]]들을 조립함으로써 서비스 지향적인 기업 환경을 만들 수 있는 기반이 되어야 한다. 엔터프라이즈 서비스 버스의 특징으로는 다양한 시스템과 연동하기 위한 멀티 프로토콜 지원, 느슨한 결합, 소프트웨어 컴포넌트를 조합하여 서비스를 조립하는 BPM 지원, 이벤트 지향적, 표준 지향적 5가지 정도가 있다. 엔터프라이즈 서비스 버스의 구성요소에는 [[어댑터]] 형태의 레거시 연동 컴포넌트, 메시지의 변환, 가공, BPM, 컨트롤과 모니터링, 통합개발 환경이 있다. 기업 응용 프로그램 통합(Enterprise Application Integration, EAI)과 유사하지만, 기업 응용  프로그램 통합은 통합에 초점은 맞춘 기술이지만, 엔터프라이즈 서비스 버스는 프로세스 기반의 서비스 지향 아키텍처(Service Oriented Architecture, SOA)로 나아가기 위한 기반으로서 만들어진 것이다.<ref>몽키몽키, 〈[https://m.blog.naver.com/PostView.nhn?blogId=cache798&logNo=130024626366&proxyReferer=https:%2F%2Fwww.google.com%2F ESV(Enterprise Service Bus) 개념잡기]〉, 《네이버 블로그》, 2007-11-18</ref>
 +
 
 +
===객체지향 미들웨어===
 +
====CORBA====
 +
다양한 요구사항을 만족시키는 프로그램을 작성하려면 서로 다른 운영체제와 네트워크 환경 등 이종의 환경에서 작동하는 클라이언트 서버 소프트웨어는 필수적이다. 뿐만 아니라 이렇게 개발된 소프트웨어는 분산 환경에서 서로 다른 시스템과도 쉽게 통합이 가능해야 한다. 하지만 현실적으로 이런 요구 사항을 만족시키는 소프트웨어 개발이란 쉽지 않은 일이다. 기존 C와 같이 로직의 흐름에 따라 프로그램을 작성하는 방식으로는 이와 같은 요구 사항을 만족시키기 어렵다. 또한 이종의 분산 환경에서 여러 종류의 응용 프로그램을 통합하기 위해서는 일정한 결합 방식이 필요하다. 보통 이런 문제를 해결하는 방안으로, 기존의 원격 프로시저 호출이나 객체 연결 삽입 데이터베이스와 같은 기법을 생각할 수도 있지만, 그렇게 해서는 문제를 해결할 수 없다. CORBA가 바로 이 문제를 해결할 수 있는 방법이다. 1989년 4월 그 당시까지 존재하는 기술을 바탕으로 응용 프로그램을 결합하기 위한 객체지향표준을 제정하기 위해 객체 관리 그룹(Object Management Group, OMG)라는 비영리 단체가 탄생했고, 이 단체에 마이크로소프트사를 비롯한 수많은 컴퓨터 관련 단체가 참가해 객체지향기술을 기반으로, 이종의 분산된 환경에서 응용 프로그램을 통합할 수 있는 객체 관리 아키텍처(Object Management Architecture)라는 표준 기술을 탄생시켰다. CORBA는 OMA의 핵심이 되는 요소로, 컴퓨터 내부의 버스처럼 서로 다른 프로그램 사이의 통로 역할을 하는 모듈로, 미들웨어의 일종이다. CORBA만으로는 복잡한 응용 프로그램을 작성하는 데 충분한 기능을 제공하지 못해, 필요한 기능들을 별도로 모아 COSS(Common Object Service Specification)를 만들었다. 현재 CORBA를 구현한 제품의 대다수가 이들 COSS의 기능을 제공하기 위해 많은 작업을 수행하고 있다.
 +
 
 +
====COM====
 +
CORBA와 대응하는 유일한 기술로, 마이크로 소프트에서 개발되었고, COM(Component Object Model)에 분산 기능을 추가한 DCOM(Distributed COM)도 있다. COM은 마이크로소프트의 모든 기술적 근간을 이루었다. 클라이언트 프로그램과 오브젝트 서버 프로그램 간의 상호 통신 방식을 정의한 모델로서, 윈도우 환경에서 이 모델을 통해 오브젝트 간 통합이 가능하게 된다. 클라이언트에 의해 생성되고, 원하는 서버를 찾아 구동시키는 기능을 제공한다. 이때 COM은 서버 객체의 인터페이스를 클라이언트에게 전달해 주고, 클라이언트는 COM에게서 전달받은 인터페이스를 통해 원하는 서버의 기능을 호출하여 사용하게 된다. 이와 같이 바이너리 차원의 프로그램 또는 컴포넌트 통합 기능을 제공하는 것이 CORBA와의 가장 큰 차이점이다. COM IDL이란 인터페이스 정의 언어를 통해 COM 객체를 정의할 수 있는데, 현재 COM은 로컬 머신에서만 작동한다. 마이크로소프트에서 COM을 개발할 당시 분산 환경이 이렇게까지 각광받을 거라 예상하지 못했던 탓에, 마이크로소프트  운영체제에서 분산 컴퓨팅을 지원할 방법을 모색하고 있는데, 그 결과가 DCOM이다. DCOM은 COM이 갖고 있는 제약을 극복할 목적으로 DCE/RPC로 서로 통신 가능한 분산으로, 아직까지 DCOM을 구현한 제품은 개발되지 않았다.<ref>Laonatti, 〈[https://laonatti.tistory.com/m/170?category=104653 분산 컴퓨팅의 총아, 미들웨어 총정리]〉, 《티스토리》, 2007-08-03</ref>
 +
 
 +
==클라이언트 서버 모델==
 +
데이터베이스 미들웨어를 사용한 구조를 2계층 구조라고 하고, 그 외의 미들웨어가 사용되면 2계층 구조라고 한다.<ref>려찬, 〈[https://powere.tistory.com/95 (TUXEDO) 미들웨어 개념과 종류/2-Tier,  3-Tier 비교]〉, 《티스토리》, 2014-05-09</ref>
 +
 
 +
===2계층 구조===
 +
서버와 클라이언트로 나눌 수 있고, 서버는 데이터관리 및 클라이언트와 독립적이다. 따라서 [[자바]] 애플릿이나 애플리케이션이 데이터베이스에 직접 접근하는 것이다. 서버에 걸리는 부하가 감소하고, 대량 자료에 접근하여 정교한 자료 분석을 할 수 있게 해준다. 또한 사용자에게 정보를 제공해주고 쉬운 시스템을 개발할 수 있도록 기능을 제공해준다. 다만 클라이언트가 비대해지고, 네트워크의 부하가 증대할 수 있다. 동시 사용자 수 증가에 따른 서비스 어려움이 발생할 수 있고, 더미 터미널이나 트리거가 발생할 수 있다. 더미 터미널은 데이터 처리 능력 없이, 데이터를 입출력하는 기능만을 가지는 단말기를 뜻하고, 트리거는 데이터베이스가 미리 정해 놓은 조건을 만족하거나 어떤 동작이 수행되면 자동적으로 수행되는 동작이다.
 +
 
 +
===3계층 구조===
 +
2계층 구조와 마찬가지로 서버와 클라이언트로 나눌 수 있다. 서버는 업무 규칙 구현, 자료 접근 규칙, 중간층 서버의 구조를 가지려 클라이언트는 화면 운용 구조를 가진다. 자바 애플리케이션이나 애플릿이 데이터베이스 관리 시스템을 직접 접근하는 것이 아니라 중간에 있는 미들웨어를 거쳐 데이터베이스에 접근하는 것이다. 서버 확장이 용이하고, 미션 크리티컬을 응용할 수 있고, 시스템 관리가 수월하다는 장점이 있다. 그러나 초기 설치  비용이 많이 들고, 사용자에 따라 성능이 좋아질 수도, 나빠질 수도 있다. 수정에 어렵다는 점 또한 단점이 된다.<ref>rokmc, 〈[https://m.cafe.daum.net/psdotnet/244O/13?q=D_23ESpBVz-JU0& 2-Tier과 3-Tier장단점, 비즈니스레이어, active X조사..!!]〉, 《티스토리》, 2005-04-07</ref>
 +
 
 +
{{각주}}
 +
 
 +
==참고자료==
 +
*하이파이브, 〈[https://m.blog.naver.com/PostView.nhn?blogId=edusns1&logNo=221069285964&proxyReferer=https:%2F%2Fwww.google.com%2F 미들웨어(middleware) 종류, 이점]〉, 《네이버 블로그》, 2017-08-08
 +
*nwow, 〈[https://nwow.tistory.com/4 분산시스템에서의 미들웨어의 기능]〉, 《티스토리》, 2009-04-28
 +
*yeondulung, 〈[https://yeonduing.tistory.com/3 분산시스템] 미들웨어(Middleware)]〉, 《티스토리》, 2020-08-15
 +
*듀폰, 〈[http://blog.naver.com/PostView.nhn?blogId=skyhomo&logNo=220086099002&redirect=Dlog&widgetTypeCall=true 미들웨어의 정의, 종류]〉, 《네이버 블로그》, 2014-08-08
 +
*Root Over-grow, 〈[https://0ver-grow.tistory.com/134 4. 웹 서버의 기능, 종류, 역할/ WAS란, 종류, 웹서버와의 차이점/...]〉, 《티스토리》, 2019-07
 +
*몽키몽키, 〈[https://m.blog.naver.com/PostView.nhn?blogId=cache798&logNo=130024626366&proxyReferer=https:%2F%2Fwww.google.com%2F ESV(Enterprise Service Bus) 개념잡기]〉, 《네이버 블로그》, 20107-11-18
 +
*Laonatti, 〈[https://laonatti.tistory.com/m/170?category=104653 분산 컴퓨팅의 총아, 미들웨어 총정리]〉, 《티스토리》, 2007-08-03
 +
*려찬, 〈[https://powere.tistory.com/95 (TUXEDO) 미들웨어 개념과 종류/2-Tier,  3-Tier 비교]〉, 《티스토리》, 2014-05-09
 +
*rokmc, 〈[https://m.cafe.daum.net/psdotnet/244O/13?q=D_23ESpBVz-JU0& 2-Tier과 3-Tier장단점, 비즈니스레이어, active X조사..!!]〉, 《티스토리》, 2005-04-07
 +
 
 +
== 같이 보기 ==
 +
* [[중간자]]
 +
* [[와스]]
 +
* [[소프트웨어]]
 +
* [[운영체제]]
 +
* [[응용 소프트웨어]]
 +
 
 +
{{소프트웨어|검토 필요}}

2023년 2월 27일 (월) 22:37 기준 최신판

미들웨어(middleware)는 애플리케이션들을 연결해 이들이 서로 데이터를 교환할 수 있게 중계 역할을 하는 소프트웨어를 말한다. 웹 애플리케이션 서버(WAS)는 미들웨어의 일종이다.

개요[편집]

운영체제와 해당 운영체제에서 실행되는 응용 프로그램 사이에 존재하는 소프트웨어로, 응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어다. 또한, 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해주는 소프트웨어를 말한다. 기본적으로 숨겨진 변환 계층으로 기능하는 미들웨어는 분산 응용 프로그램의 통신 및 데이터 관리를 가능하게 한다. 데이터와 데이터베이스가 파이프 사이를 쉽게 연결하기 때문에 배관이라고도 한다. 미들웨어를 사용하면 사용자가 브라우저에서 양식을 제출하거나 웹 서버가 사용자의 프로필을 기반으로 동적 웹 페이지를 반환하도록 요청할 수 있다. 주로 3계층 클라이언트 서버 구조에서 존재하고, 웹 브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽을 수 있게 해준다.[1]

미들웨어의 기능은 크게 9가지 정도로 나눌 수 있다. 클러스터링(Clustering)은 PC 등의 기기들을 고속 네트워크를 이용하여 병렬로 연결하여 사용자에게 고사양의 컴퓨터를 사용하는 듯한 기능을 제공하는 기술이다. 미들웨어의 첫 번째 기능을 클러스터링으로 여러 개의 같은 작업을 하는 서버를 하나의 컴퓨터처럼 사용하도록 하여, 확장성이 좋고 로드 밸런싱(Load balancing) 등 여러 가지 제어 환경을 제공할 수 있다. 두 번째로, 로드 밸런싱은 사용자들이 리소스 등을 요구하면, 이를 클러스터링 된 서버들에게 작업을 효율적으로 분배하는 기능을 말한다. 세 번째 기능은 페일 오버(failover)라는 기능인데, 장애 극복 기능이라고도 한다. 미들웨어는 페일 오버 기능을 사용해, 클러스터링 된 서버 중 한 대가 오류를 일으켰을 때 다른 서버가 처리하도록 하여 지속성을 유지한다. 네 번째 기능은 분산 트랜잭션(Distribution Transaction)으로, 다른 장치의 데이터베이스 시스템을 사용할 경우, 다른 트랜잭션을 하나의 트랜잭션으로 사용하도록 하는 것이다. 다섯 번째 기능은 장치를 최적화 상태로 유지하기 위해 프로세스의 수를 제한하고, 재시동 역할을 하는 프로세스 관리다. 여섯 번째는 리소스 관리라는 기능으로, 클라이언트에서 서버에 리소스를 요구할 경우 폴링 방식을 이용해서 분배하는 기능이다. 일곱 번째 기능은 시스템 관리 기능으로, 프로세스, 리소스, 서비스 제공 횟수, 평균 시간 등을 모니터링하고 이를 관리하는 통합 기반을 말한다. 여덟 번째 기능은 외부에서 클러스터링 된 서버로의 불법접근을 제한하는 보안 기능이고, 아홉 번째 기능을 레거시(Legacy)시스템과의 통합 환경을 제공하는 시스템 통합(integration) 기능이다.[2]

특징[편집]

표준화된 인터페이스를 제공해주고, 다양한 환경 지원 및 체계가 다른 업무와의 상호작용을 가능하게 해준다. 분산된 업무를 동시에 처리할 수 있어 자료의 일관성이 유지되고, 부하의 분산이 가능하다는 장점들이 있다.[1] 미들웨어를 도입하면, 기존의 다양한 벤더의 플랫폼을 네트워크 차이를 의식하지 않고 상호 접속하여 이용할 수 있도록 존 플랫폼이 통합된다. 시스템이 통합됨에 따라, 사내의 각 부문에서 각각 관리되고 있는 정보를 통합 관리함으로써 분배작업, 이중 작업으로부터 해방되어 업무 효율화를 가져올 수 있다. 미들웨어는 조작이 우수하고, 사용이 편리하기 때문에 호스트 단말과 비교하여 사용자가 사용하기 쉬운 GUI, 일상적으로 사용하고 있는 표 계산 소프트웨어 등으로 사내의 각 데이터베이스 접근이 가능하다. 데이터베이스에 자유로운 접근이 가능하므로, 각 개인이 실시간 데이터를 분석하고, 활용하여 업무의 질을 향상시킬 수 있다. 하지만 운영체제에서 바로 실행되는 것이 아니고, 운영체제 위에 있는 가상머신프로그램을 돌리기 때문에 속도가 느려지고, 성능이 떨어진다.[3] 미들웨어를 도입하면, 기존의 다양한 벤더의 플랫폼을 네트워크 차이를 의식하지 않고 상호 접속하여 이용할 수 있도록 존 플랫폼이 통합된다. 시스템이 통합됨에 따라, 사내의 각 부문에서 각각 관리되고 있는 정보를 통합 관리함으로써 분배작업, 이중 작업으로부터 해방되어 업무효율화를 가져올 수 있다. 미들웨어는 조작이 우수하고, 사용이 편리하기 때문에 호스트 단말과 비교하여 사용자가 사용하기 쉬운 GUI, 일상적으로 사용하고 있는 표 계산 소프트웨어 등으로 사내의 각 데이터베이스 접근이 가능하다. 데이터베이스에 자유로운 접근이 가능하므로, 각 개인이 실시간 데이터를 분석하고, 활용하여 업무의 질을 향상시킬 수 있다.

종류[편집]

데이터베이스 미들웨어[편집]

데이터베이스 미들웨어는 하나의 애플리케이션을 특정 데이터베이스로 연결해 주는 소프트웨어를 말하며, 일반적으로 클라이언트에게 공통의 SQL 호출 인터페이스를 제공함으로써 여러 종류의 데이터베이스에 쉽게 접근할 수 있도록 하는 역할을 한다. 데이터베이스의 표준인 SAG(SQL Access Group)에서 정의한 CLI(Call Level Interfacce)이다. 클라이언트 서버 구조로 보면 데이터베이스 미들웨어는 2계층 구조에서 주로 사용되어졌다. 처음에는 지역 데이터베이스 서버의 접근을 목적으로 설계되었지만, ISO사의 RDA(Remote Data Access) 표준 구조와 IMB사의 DRDA 등에서 볼 수 있듯이 데이터베이스 미들웨어는 점차 원격 데이터베이스 접근으로의 기술 구조로 변화되었다. 데이터베이스 미들웨어에는 ODBC(Open Database Application Connectivity), IDAP(Intergranted Database Application Interface), DRDA(Distributed Relational Data Access), 객체 연결 삽입 데이터베이스가 있다.

ODBC[편집]

마이크로소프트사에 의해 제시되었고, SAG/CLI 명세와 SQL 문법상의 API(Application Programming Interface)를 기반으로 하고 있다. 대부분 윈도우 기반 클라이언트 서버 시스템에서 사용되고, 애플리케이션과 개발 툴에서 데이터베이스를 쉽게 접근할 수 있도록 API를 제공한다. 현재 대부분의 데이터베이스 업체에서는 ODBC를 통한 데이터베이스 접근 방식을 제공하고 있고, 관련 ODBC 드라이버를 제공하기 때문에 우리는 별다른 어려움 없이 데이터베이스에 쉽게 접근할 수 있다. 그러나 클라이언트 서버 시스템에서 ODBC를 통해 데이터베이스에 접근하고자 할 때 성능의 문제가 논쟁이 되고, 동일 애플리케이션에서 여러 개의 데이터베이스에 접근하고자 할 때 여러 개의 ODBC를 번갈아 연결해야 하는 등의 문제점들이 있다.

IDAPI[편집]

Inprise사에서 만들어진 데이터베이스 미들웨어로 ODBC와는 경쟁 상품으로 사용되고 있다. IDAPI는 클라이언트가 원거리 데이터베이스에 접근할 때 용이하도록 설계된 것으로, 원거리 서버에 드라이버를 상주 시켜 많은 클라이언트에게 원거리의 같은 드라이버에게 접근을 허락함으로써 데이터베이스 미들웨어를 사용한 2-계층 클라이언트 서버 시스템에서 좋은 성능을 내도록 하였다. 오늘날 ODBC를 제공하는 여러 업체에서도 이러한 기법을 이용하고 있다.

RDA/DRDA[편집]

RDA와 DRDA는 제품이 아닌 표준이다. RDA는 개발자들에게 데이터베이스에 접근하는 표준 방식을 제공하여 클라이언트가 여러 개의 데이터베이스에 동시에 접근할 수 있게 해준다. DRDA는 IBM사의 데이터베이스 접속 표준으로 다양한 플랫폼 환경에서 쉽게 여러 데이터베이스와 연결을 제공한다. 이들은 데이터베이스 미들웨어가 지역에 있는 하나의 데이터베이스와의 단순 연결에서 원격지에 있는 다양한 데이터베이스의 접속에 대한 표준을 제공하고 있다. 이러한 구조를 가진 데이터베이스 미들웨어들을 SQL 게이트웨이라고 말하는데, 많이 사용된 제품 중에 EDA/SQL(Enterprise Database Access/Structured Query Language)도 여기에 해당한다.

객체 연결 삽입 데이터베이스[편집]

객체 연결 삽입 데이터베이스(Object Linking and Embedding Database, OLEDB)마이크로소프트사의 제품으로, 클라이언트와 애플리케이션들의 객체지향화에 따라 객체지향 패러다임이 데이터베이스 미들웨어에 적용되기 시작한 대표적인 예다. 전 세계에서 SQL 데이터를 비롯해, 다양한 형태로 저장되어 있는 데이터들의 위치에 대하여 독립적으로 투명하게 액세스하는 유니버셜 데이터 액세스의 전략은 기존의 API Call방식의 ODBC 함수를 통한 데이터 접근 방식과는 다른 컴포넌트 형식의 데이터 액세스 매커니즘을 제공하였다. 이것을 OLEDB라고 하는데, OLEDB를 4GL에서 사용하기 쉽도록 인터페이스를 재구성한 것을 ADO(ActiveX Data Object) 모델이다. OLEDB는 시스템 레벨의 프로그래밍 인터페이스, ADO는 애플리케이션 레벨의 프로그래밍 인터페이스로 구분하면 된다. 자동화(Automation)에 기반한 ADO를 통해 엔터프라이즈 개발자들은 쉽게 데이터베이스 프로그래밍을 할 수 있다.[4]

와스[편집]

와스(Web Application Server, WAS)는 브라우저와 데이터베이스 관리 시스템 사이에서 동작하는 미들웨어로, 웹 클라이언트의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가지고 있다. 웹이 널리 사용되면서 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능이 요구되었고, 이러한 동적인 기능은 프로그래밍을 통해 구현되었고, 이 기능들은 데이터베이스 관리 시스템과 연관된 경우가 빈번하다. 와스는 3가지의 중요 기능을 제공한다. 먼저 와스는 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다. 두 번째로, 여러 개의 트랜잭션을 관리하고 마지막으로 업무를 처리하는 비즈니스 로직을 처리한다. 마지막으로 와스는 웹 서버의 기능도 기본적으로 제공한다. 웹 프로그래밍을 진행하게 되면, 톰캣이란 와스를 설치하여 웹 서버로 이용할 수 있다. 웹 서버와 비슷하지만, 웹 서버는 일반적으로 정적인 콘텐츠를 웹 브라우저에게 전송하는 역할을 하고, 와스는 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할을 한다.[5]

통신 미들웨어[편집]

통신 미들웨어는 애플리케이션과 애플리케이션 간의 정보 교환을 제공하며, 클라이언트 서버 시스템 개발에 있어 확실한 프로그램 간 통신 모델을 제공한다. 데이터베이스 미들웨어는 2계층 클라이언트 서버 구조를 제공하는 반면, 통신 미들웨어는 3계층 클라이언트 서버 구조를 제공한다. 기술적 변화에 따라 전통적 통신 소프트웨어와 컴포넌트 소프트웨어로 분류할 수 있는데, 컴포넌트 소프트웨어란 새로운 세대의 미들웨어로, 분산 객체인 것을 의미한다. 전통적 미들웨어에는 원격 프로시저 호출, 메시지 지향 미들웨어, 피투피(Peer-to-Peer0 등 원시 통신 미들웨어와 다양한 분산 서비스를 제공한 DCE(Distributed Computing Environment), 트랜잭션 및 협력 서비스를 제공하는 분산 트랜잭션 모니터가 있고, 객체 미들웨어는 ORB(Object Request Broker)를 기반으로 하는 CORBA와 CDE/RPC를 기반으로 객체 모델을 구현한 DCOM이 있다. 전통적 미들웨어와 객체 미들웨어 모두, 개발자들에게 네트워크와 플랫폼에 독립적으로 클라이언트 서버 애플리케이션을 개발하고 실행할 수 있도록 해준다는 것이다.

원격 프로시저 호출[편집]

원격 프로시저 호출(Remote Procedure Call, RPC)은 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템으로 동기 또는 비동기 지원을 한다. 전통적인 프로그램에 포함된 서브루틴을 호출하는 것과 같은 모습을 하고 있지만, 네트워크로 연결된 서버 사이의 원격 프로시저를 호출한다는 차이점이 있다. 기존 개발자들에게 익숙하기 때문에, 네트워크나 운영체제가 복잡함을 숨기고, 네트워크상에서의 통신 애플리케이션을 작성할 수 있다. 원격 프로시저 호출은 클라이언트에서 입력 값을 실어 원격 서버에 있는 프로시저를 호출하게 되고, 호출된 프로시저는 수행된 결과를 클라이언트 프로세스에게 전달하는 방법을 취하는데, 여기서 클라이언트 프로세스는 프로시저가 완전히 수행될 때까지 일시 정지 상태가 된다. 이것을 통해 원격 프로시저 호출이 통신에게 있어 동기적인 방식을 취한다는 것과 원격 프로시저 호출을 통한 클라이언트 서버 모델은 클라이언트와 서버가 단단히 결합되어 있다는 것을 알 수 있다. 클라이언트 서버 시스템 구축에 많은 기여를 했고, 현재 대부분의 시스템에서 사용하고 있는 기술이다. 구조를 이해하기 쉽고, 개발에 용이하다는 장점이 있지만, 현재의 클라이언트 서버 시스템을 구축하기에는 몇 가지 문제점이 있다. 클라이언트와 서버는 동기적으로 동작되기 때문에 클라이언트가 서버의 프로시저를 호출한 뒤 서버 프로세스가 완료될 때까지 클라이언트는 서버에 종속되어야 한다. 또한 원격 프로시저 호출은 구조상 높은 속도의 네트워크 환경을 요구하는데, 그 이유는 원격 프로시저 호출을 사용하여 클라이언트 서버 통신을 할 때, 네트워크 사이에서 많은 양의 작업이 기울어있기 때문이다.

DCE[편집]

DCE(Distributed Computing Environment)는 OSF(Open Software Foundation)에 의해 미들웨어 표준으로 발표되었다. IBM, HP 등 OSF 관련업체에서 자신들의 플랫폼에 따라 DCE 제품들이 만들어졌으며, 이들 DCE는 다양한 플랫폼에 상관없이 서로 상호 운용성을 띠고 있다. DCE는 복잡하지만 매우 효과적이고 강력한 미들웨어다. 분산 컴퓨팅 환경을 위하여 다양한 서비스를 제공하여, 네트워크상에서 분산된 여러 자원들을 쉽게 통합할 수 있다. DCE는 단순한 애플리케이션 통신을 위한 미들웨어는 아니며, 분산 애플리케이션과 운영체제 사이에 위치하여 분산에 관련된 서비스를 통합적으로 제공하는 분산 컴포넌트 집합이다. DCE에서 사용되는 서비스들은 클라이언트 서버 통신을 제공하는 RPC, 객체에 대한 식별 및 위치 투명성을 제공하는 CDS, 분산된 파일 보안 서비스인 DSS, 분산된 파일을 공유하는 DFS, 분산된 시스템 간 시간의 동기화를 제공하는 DTS, 병렬 처리에 의한 성능 향상을 하는 Threads가로 간단히 요약할 수 있다. DCE는 여러 가지 분산 서비스들을 사용하여, 이전과는 전혀 다른 차원의 분산 시스템을 구축하기 시작하였다. 운영체제나 네트워크 등 자원에 독립적인 분산된 애플리케이션을 통하여 여러 대의 이기종 컴퓨터의 자원을 공유하고, 서로 협력하는 분산 컴퓨팅 환경을 조성하였다. 그러나 DCE의 핵심 기술로 사용된 RPC는 IDL을 통해 개발자들에게 단순화된 프로그램 모델로서, 통신 애플리케이션의 표준 모델을 제공하였지만, 앞에서 설명된 것처럼 전통적인 RPC가 동기화 및 네트워크 자원에 대한 성능 등의 문제를 해결하지는 못하였다. 이러한 문제점에도 불구하고 1990년대 초부터 많은 다국적 기업에서 DCE를 기반 구조로 택하였고, 많은 프로젝트가 수행되었다. 그 이유는 DCE는 메인 프레임부터 운영체제까지 광범위하게 DCE를 제공했고, DCE만큼 분산 환경에서 이기종의 다양한 시스템을 통합할 수 있는 현실적인 해답이 없기 때문이다. 그러나 DCE는 메모리를 비롯하여 많은 자원을 요구받고 있고, 개발자들에게 다양한 프로그래밍 기술을 요구하였고, DCE를 지원하는 개발 도구의 부족으로, 일반 기업에서는 크게 환영받지 못했다. 현재는 DCE에 기반한 클라이언트 서버 시스템을 사용하지는 않지만, DCE의 핵심기술이 오늘날의 중요한 컴퓨팅 영역인 보안, World Wide Web, 분산객체 등에서 사용되고 있다.

메시지 지향 미들웨어[편집]

메시지 지향 미들웨어(Message Oriented Middleware, MOM)는 쉽게 정의하면 네트워크상에서 메시지를 전달하는 운반자이다. 클라이언트가 생성한 메시지는 저장소에 요청할 때 저장하면서, 다른 업무를 지속하도록 할 수 있는 비동기식 미들웨어다. 메시지 지향 미들웨어는 메시지 보내기와 받기 두 개의 프로세스가 활동적으로 메시지를 교환하는 모델과 하나의 프로세스가 일정한 큐에 메시지를 저장하는 메시지 큐잉 모델 크게 두 가지 모델로 나눌 수 있다. 메시지 지향 미들웨어를 사용하면 원격 프로시저 호출 미들웨어를 사용할 경우 발생하는 클라이언트와 서버 간에 동기적인 통신 문제점을 해결할 수 있다. 프로그램의 오류 및 시스템 또는 네트워크 자체의 오류로 인한 문제에서 메시지 지향 미들웨어는 데이터 전달 및 프로그램 수행에 대한 신뢰와 안전을 보장할 수 있다. 원격 프로시저 호출과 마찬가지로 메시지 지향 미들웨어 또한 표준 API를 제공함으로써 시스템 간 독립적인 통신을 하는데, 원격 프로시저 호출이 동기적인 반면 메시지 지향 미들웨어는 비동기적인 통신을 한다는 것이 차이점이다.

트랜잭션 프로세싱 모니터[편집]

트랜잭션 프로세싱 모니터(Transaction Processing Moniter, TP-Monitor, TPM)는 분산 시스템의 애플리케이션을 지원하는 미들웨어로 주로 클라이언트 서버 시스템에 사용된다. 클라이언트 서버 시스템의 환경이 고조되면서, 산업별로 금융, 재무, 예약 시스템 같은 다수의 사용자가 실시간으로 접근하여 많은 양의 데이터를 처리해야 하는 시스템들도 클라이언트 서버 시스템으로 옮겨가기 시작했다. 그러나 이러한 시스템들은 안정된 트랜잭션을 요구하는데, 이러한 요구에 대한 해결책으로 트랜잭션 프로세싱 모니터가 사용된다. 1994년 X/OPEN XTM 그룹에서 분산 트랜잭션 프로세싱(DTP) 참조 모델을 발표하여, 트랜잭션 시스템의 구조와 외부 자원들의 통신 방법을 정의했다. 이 모델에서 XA 인터페이스는 트랜잭션 관리자와 자원 관리자 간의 통신을 위한 함수 호출들의 집합이며, 이 함수들을 통하여 분산된 이기종 데이터베이스 사이에 트랜잭션을 성공적으로 처리할 수 있다. 트랜잭션 프로세싱 모니터의 대표적인 제품으로는 OSF/DCE를 기반으로 하는 Transarc의 ENCINA, IBM의 CICS/6000 등이 있다. 이 제품들의 공통적인 역할과 특징은 비즈니스의 요구 사항을 해결하기 위하여 여러 소프트웨어 상호 간의 혼합된 환경에서 애플리케이션 개발 능력과 부가적인 서비스를 제공한다는 것이다. 이것을 통해 트랜잭션 프로세싱 모니터는 통신 미들웨어 기능 외에 트랜잭션 협력 서비스, 안정적인 메시지 큐잉 시스템, 일의 흐름 관리 및 개발의 통합적인 서비스들을 제공한다는 것을 알 수 있다. 처음에는 전통적인 미들웨어와 3GL에 기반한 개발 방식을 사용하였지만, 점차 개발언어와 미들웨어를, 객체지향 언어와 ORB(Object Request Broket)로 사용하면서 객체화되어가는 모습을 보이고 있다. 지금도 대부분의 대용량 자원과 복잡한 프로세스를 요구하는 시스템들을 클라이언트 서버 시스템으로 전환하고자 하는 프로젝트에서는 분산 트랜잭션 프로세싱 모니터가 많이 사용되고 있다.

객체 요청 브로커[편집]

객체 요청 브로커(Object Request Broker, ORB)는 객체지향 시스템에서 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어다. 로컬 및 원격지에 위치한 객체들 사이에 통신을 담당하는 핵심기술로, 분산 객체 컴퓨팅을 지원할 수 있기 때문에 대표적인 미들웨어로 자리를 잡을 것이며, 대부분의 객체지향 미들웨어에서 핵심 기술로 사용될 것이다. 원격 프로시저 호출의 형태를 기본적으로 수용하고 있고, 애플리케이션에서 애플리케이션으로의 통신으로 호출과 답변의 방식을 적용하지만, 원격 프로시저 호출과 달리 객체기반의 구조를 가지고 있다. 코드의 재사용이라는 강점을 가지고 있는데, 객체지향 언어가 아닌 3세대 언어로 개발되어 있더라도 캡슐화를 통해 재사용이 가능하다. 객체 요청 브로커는 표준 인터페이스를 사용하여 객체들을 개발하도록 되어 있다. 표준 객체들 사이의 통신은 플랫폼에 독립적이고, 분산된 여러 객체 서버들과도 쉽게 연결이 가능하도록 설계되어 있다. 객체 요청 브로커 인터페이스는 인터페이스 정의 언어인 IDL을 사용하고, 하나의 객체와 다른 객체 사이의 인터페이스를 정의한다. OMG의 CORBA에서도 통신을 담당하는 핵심 미들웨어로 ORB를 표준으로 채택하였다. 현재 컴포넌트 기술을 이끌어 가는 분산 객체인 마이크로소프트사의 DCOM과 OMG의 CORBA의 핵심 컴포넌트로 사용되고 있다.

객체 트랜잭션 모니터[편집]

객체 트랜잭션 모니터(Object Transaction Monitor, OTM)은 전통적인 트랜젝션 프로세싱 모니터의 기능과 ORB에 의해 제공되는 객체 기반 프로그램 인터페이스를 통해 유연성 있는 통합적인 시스템 환경을 제공하는 새로운 형태의 미들웨어다. 현재 객체 트랜잭션 모니터를 사용하는 제품으로는 BEA의 M3, IONA의 OTM 등과 같이 CORBA를 기반 서비스로 제공하는 제품들과 마이크로소프트사의 DCOM을 기반으로 하는 MTS(Microsoft Transaction Server) 등이 있다. 분산 객체인 CORBA와 DCOM은 앞으로 소프트웨어 개발 방식의 표준으로 자리 잡으려면, 분산 애플리케이션들을 전사적인 환경에서 통합적으로, 신뢰성 있게 운영하기 위해서는 보안, 트랜잭션, 성능 향상 등의 기능들이 동시에 제공되어야 한다. 이러한 기능들은 객체 트랜잭션 모니터를 통해 제공받게 된다. 현재 기업에서 기관업무를 클라이언트 서버 시스템으로 구축할 경우 트랜잭션 프로세싱 모니터가 보편적으로 사용되고 있지만, 앞으로 컴퓨팅 환경에서 분산 컴퓨팅을 실현하고 구현하는 해결책으로 객체 트랜잭션 모니터가 사용될 것이라고 예상된다.[4]

엔터프라이즈 서비스 버스[편집]

엔터프라이즈 서비스 버스(Enterprise Service Bus, ESB)는 메시지 기반으로 느슨한 결합 형태의 표준 인터페이스 통신을 지원하는 미들웨어로 기업 안팎에 있는 모든 시스템 환경을 연동하는 미들웨어다. 비즈니스 내에서 서비스, 애플리케이션, 자원을 연결하고 통합하는 미들웨어라고 할 수 있으며, 이를 통해 분산된 서비스 컴포넌트를 쉽게 통합하고 연동할 수 있어 신뢰성 있는 메시지 통신이 가능하다. 제공하는 벤더에 따라 정의가 조금씩 차이가 있어, 기관마다 엔터프라이즈 서비스 버스에 대한 정의는 다 다르다. 기업 IT 환경에서 중추적인 역할을 수행하는 것으로 각 레거시 시스템과의 연동을 위한 다양한 표준 프로토콜의 지원을 기본으로, 재사용 가능한 컴포넌트들을 조립함으로써 서비스 지향적인 기업 환경을 만들 수 있는 기반이 되어야 한다. 엔터프라이즈 서비스 버스의 특징으로는 다양한 시스템과 연동하기 위한 멀티 프로토콜 지원, 느슨한 결합, 소프트웨어 컴포넌트를 조합하여 서비스를 조립하는 BPM 지원, 이벤트 지향적, 표준 지향적 5가지 정도가 있다. 엔터프라이즈 서비스 버스의 구성요소에는 어댑터 형태의 레거시 연동 컴포넌트, 메시지의 변환, 가공, BPM, 컨트롤과 모니터링, 통합개발 환경이 있다. 기업 응용 프로그램 통합(Enterprise Application Integration, EAI)과 유사하지만, 기업 응용 프로그램 통합은 통합에 초점은 맞춘 기술이지만, 엔터프라이즈 서비스 버스는 프로세스 기반의 서비스 지향 아키텍처(Service Oriented Architecture, SOA)로 나아가기 위한 기반으로서 만들어진 것이다.[6]

객체지향 미들웨어[편집]

CORBA[편집]

다양한 요구사항을 만족시키는 프로그램을 작성하려면 서로 다른 운영체제와 네트워크 환경 등 이종의 환경에서 작동하는 클라이언트 서버 소프트웨어는 필수적이다. 뿐만 아니라 이렇게 개발된 소프트웨어는 분산 환경에서 서로 다른 시스템과도 쉽게 통합이 가능해야 한다. 하지만 현실적으로 이런 요구 사항을 만족시키는 소프트웨어 개발이란 쉽지 않은 일이다. 기존 C와 같이 로직의 흐름에 따라 프로그램을 작성하는 방식으로는 이와 같은 요구 사항을 만족시키기 어렵다. 또한 이종의 분산 환경에서 여러 종류의 응용 프로그램을 통합하기 위해서는 일정한 결합 방식이 필요하다. 보통 이런 문제를 해결하는 방안으로, 기존의 원격 프로시저 호출이나 객체 연결 삽입 데이터베이스와 같은 기법을 생각할 수도 있지만, 그렇게 해서는 문제를 해결할 수 없다. CORBA가 바로 이 문제를 해결할 수 있는 방법이다. 1989년 4월 그 당시까지 존재하는 기술을 바탕으로 응용 프로그램을 결합하기 위한 객체지향표준을 제정하기 위해 객체 관리 그룹(Object Management Group, OMG)라는 비영리 단체가 탄생했고, 이 단체에 마이크로소프트사를 비롯한 수많은 컴퓨터 관련 단체가 참가해 객체지향기술을 기반으로, 이종의 분산된 환경에서 응용 프로그램을 통합할 수 있는 객체 관리 아키텍처(Object Management Architecture)라는 표준 기술을 탄생시켰다. CORBA는 OMA의 핵심이 되는 요소로, 컴퓨터 내부의 버스처럼 서로 다른 프로그램 사이의 통로 역할을 하는 모듈로, 미들웨어의 일종이다. CORBA만으로는 복잡한 응용 프로그램을 작성하는 데 충분한 기능을 제공하지 못해, 필요한 기능들을 별도로 모아 COSS(Common Object Service Specification)를 만들었다. 현재 CORBA를 구현한 제품의 대다수가 이들 COSS의 기능을 제공하기 위해 많은 작업을 수행하고 있다.

COM[편집]

CORBA와 대응하는 유일한 기술로, 마이크로 소프트에서 개발되었고, COM(Component Object Model)에 분산 기능을 추가한 DCOM(Distributed COM)도 있다. COM은 마이크로소프트의 모든 기술적 근간을 이루었다. 클라이언트 프로그램과 오브젝트 서버 프로그램 간의 상호 통신 방식을 정의한 모델로서, 윈도우 환경에서 이 모델을 통해 오브젝트 간 통합이 가능하게 된다. 클라이언트에 의해 생성되고, 원하는 서버를 찾아 구동시키는 기능을 제공한다. 이때 COM은 서버 객체의 인터페이스를 클라이언트에게 전달해 주고, 클라이언트는 COM에게서 전달받은 인터페이스를 통해 원하는 서버의 기능을 호출하여 사용하게 된다. 이와 같이 바이너리 차원의 프로그램 또는 컴포넌트 통합 기능을 제공하는 것이 CORBA와의 가장 큰 차이점이다. COM IDL이란 인터페이스 정의 언어를 통해 COM 객체를 정의할 수 있는데, 현재 COM은 로컬 머신에서만 작동한다. 마이크로소프트에서 COM을 개발할 당시 분산 환경이 이렇게까지 각광받을 거라 예상하지 못했던 탓에, 마이크로소프트 운영체제에서 분산 컴퓨팅을 지원할 방법을 모색하고 있는데, 그 결과가 DCOM이다. DCOM은 COM이 갖고 있는 제약을 극복할 목적으로 DCE/RPC로 서로 통신 가능한 분산으로, 아직까지 DCOM을 구현한 제품은 개발되지 않았다.[7]

클라이언트 서버 모델[편집]

데이터베이스 미들웨어를 사용한 구조를 2계층 구조라고 하고, 그 외의 미들웨어가 사용되면 2계층 구조라고 한다.[8]

2계층 구조[편집]

서버와 클라이언트로 나눌 수 있고, 서버는 데이터관리 및 클라이언트와 독립적이다. 따라서 자바 애플릿이나 애플리케이션이 데이터베이스에 직접 접근하는 것이다. 서버에 걸리는 부하가 감소하고, 대량 자료에 접근하여 정교한 자료 분석을 할 수 있게 해준다. 또한 사용자에게 정보를 제공해주고 쉬운 시스템을 개발할 수 있도록 기능을 제공해준다. 다만 클라이언트가 비대해지고, 네트워크의 부하가 증대할 수 있다. 동시 사용자 수 증가에 따른 서비스 어려움이 발생할 수 있고, 더미 터미널이나 트리거가 발생할 수 있다. 더미 터미널은 데이터 처리 능력 없이, 데이터를 입출력하는 기능만을 가지는 단말기를 뜻하고, 트리거는 데이터베이스가 미리 정해 놓은 조건을 만족하거나 어떤 동작이 수행되면 자동적으로 수행되는 동작이다.

3계층 구조[편집]

2계층 구조와 마찬가지로 서버와 클라이언트로 나눌 수 있다. 서버는 업무 규칙 구현, 자료 접근 규칙, 중간층 서버의 구조를 가지려 클라이언트는 화면 운용 구조를 가진다. 자바 애플리케이션이나 애플릿이 데이터베이스 관리 시스템을 직접 접근하는 것이 아니라 중간에 있는 미들웨어를 거쳐 데이터베이스에 접근하는 것이다. 서버 확장이 용이하고, 미션 크리티컬을 응용할 수 있고, 시스템 관리가 수월하다는 장점이 있다. 그러나 초기 설치 비용이 많이 들고, 사용자에 따라 성능이 좋아질 수도, 나빠질 수도 있다. 수정에 어렵다는 점 또한 단점이 된다.[9]

각주[편집]

  1. 1.0 1.1 하이파이브, 〈미들웨어(middleware) 종류, 이점〉, 《네이버 블로그》, 2017-08-08
  2. nwow, 〈분산시스템에서의 미들웨어의 기능〉, 《티스토리》, 2009-04-28
  3. yeondulung, 〈분산시스템 미들웨어(Middleware)]〉, 《티스토리》, 2020-08-15
  4. 4.0 4.1 듀폰, 〈미들웨어의 정의, 종류〉, 《네이버 블로그》, 2014-08-08
  5. Root Over-grow, 〈4. 웹 서버의 기능, 종류, 역할/ WAS란, 종류, 웹서버와의 차이점/...〉, 《티스토리》, 2019-07-06
  6. 몽키몽키, 〈ESV(Enterprise Service Bus) 개념잡기〉, 《네이버 블로그》, 2007-11-18
  7. Laonatti, 〈분산 컴퓨팅의 총아, 미들웨어 총정리〉, 《티스토리》, 2007-08-03
  8. 려찬, 〈(TUXEDO) 미들웨어 개념과 종류/2-Tier, 3-Tier 비교〉, 《티스토리》, 2014-05-09
  9. rokmc, 〈2-Tier과 3-Tier장단점, 비즈니스레이어, active X조사..!!〉, 《티스토리》, 2005-04-07

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 미들웨어 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.