본문 바로가기

손안의세상/Tip

미들웨어(EAI, WAS, SOA)


- 말 그대로 "중간 단계에 위치하여 서비스를 해 주는 소프트웨어적으로 운영되는 프로세스" 를 말합니다. 이러한 소프트웨어가 출현한 배경으로는 우선 기존 Client/Server의 2Tier 환경에 있어서 업무 처리 로직이 Client에 위치하게 되어 Fat Client를 초래함으로써 버전 관리가 어렵고, Client 프로그램이 많아지게 되면 Server에 추가되는 부하도 동일하게 증가되어 대용량 환경하에서의 컴퓨팅에 적당하지 않게 되었습니다. 이에, 비즈니스 로직을 Client에서 떼어내고 Client의 수가 증가하더라도 Server에 미치는 영향을 최소화하고자 하는 측면에서 중간에 Middleware라는 소프트웨어를 활용하게 되었습니다. 현재 사용하는 EAI(Enterprise Application Integration), WAS(Web Application Server)도 Web환경하에서 운영되는 대표적인 미들웨어라고 볼 수 있습니다.


  • EAI(Enterprise Application Integration)

 - 기업이 업무를 처리하는데 있어서는 인사 시스템, 회계 시스템, 마케팅 시스템, 재무 시스템 등 많은 시스템들이 존재하게 되는데, 시간이 지남에 따라서 이러한 시스템들간에 데이터 연동이 필요로 하게 되었습니다. 이러한 연동을 위해서 각 시스템들간의 1:1 직접적인 연동 프로그램을 개발하여 문제를 해결하였습니다만, 이 같은 해결 방식은 연동 대상 시스템이 많을 경우, 개발한 연동 프로그램의 수가 많아질 뿐아니라, 연동에 대한 내용이 변경이 될 때에 관련되는 모든 프로그램을 고쳐야 해서 관리 측면에서 많은 문제를 야기 했습니다. 이러한 문제를 해결하기 위해서 연동되는 시스템들의 중간에 일종의 Middleware로서 EAI를 두고 EAI에서 각 시스템들간의 연동과 다른 시스템으로의 데이터 송수신을 책임지게 하는 아키텍처를 고안하게 되었습니다. 이렇게 되면 연동된 시스템들은 EAI에게만 데이터를 전송하면 EAI가 다른 시스템으로 필요한 데이터를 필요한 포맷에 맞게 전달해 주게 되어 기존의 1:1적인 연동으로 인해 일어나는 관리상의 문제들을 제거 할 수 있습니다.

  • SOA(Service Oriented Architecture)

 - IT 자원을 서비스화하여 재사용함으로써 비즈니스의 요구에 빨리 대응할 수 있게하는 IT Archetecture의 한 형태를 말합니다. IT 자원을 재사용한다는 측면에서 컴포넌트를 사용하는 개발방법과 유사하다고 할 수 있지만, 요즘 얘기되는 SOA는 플랫폼에 관계없는 표준기반의 기술을 사용한다는 측면에서 조금 차이가 있다고 볼 수 있습니다. SOA가 되기 위해서는 사용할 수 있는 서비스를 설명(Description)하고, 이러한 서비스를 찾을 수(Search) 있는 인프라가 제공이 되어야 하는데, 그러한 인프라를 요즘 얘기하는 ESB(Enterprise Service Bus)라고 합니다. 이 ESB는 일종의 Middleware로서 기존 시스템의 연동기능을 제공하는 EAI와 유사한 기능을 제공하고 있습니다만, EAI가 제공하는 업체가 사용하는 벤더 종속적인 기술을 사용하는 반면, ESB는 표준기반(예를 들면 웹서비스)의 기술을 사용한다는 측면에서 EAI와 가장 큰 차이가 있다고 볼 수 있습니다.
결론은 EAI나 SOA의 ESB는 Middleware라고 볼 수 있고 동일한 목적, 즉 시스템의 연동이라는 목적을 수행하는 솔루션이라고 볼 수 있지만, 그 방법에 있어서는 표준기술을 사용하느냐 하지 않느냐의 차이가 있습니다. 표준기술을 사용하는 것의 잇점은 서로 다른 벤더 제품의 ESB를 사용하고 있는 기업이라도 ESB의 연동을 통해 다른 기업의 IT자원을 재사용할 수 있어 기업간 프로세스 통합에 큰 도움이 된다는 것입니다.

  • WAS(Web Application Server)

 - WAS는 웹 프로그램(혹은 웹 시스템, 웹 사이트, 웹 서비스 등)을 실행할 수 있는 기초적인 환경을 제공하여 주는것이다. 종류로는 WebLogic, WebShpere, tomcat, Jeus, JBoss 등이 있다. WAS는 웹과 기업의 기간 시스템 사이에 위치하면서, 웹 기반 분산 시스템 개발을 쉽게 도와주고 트랜잭션 처리를 보장해 주는 일종의 Middleware 소프트웨어 서버입니다. 3계층 웹 컴퓨팅 환경에서 기존 Client/Server 환경의 애플리케이션 서버와 같은 역활을 하며, Client와 Server환경에서 트랜잭션 처리 및 관리와 다른 기종 시스템 간의 애플리케이션 연동 등을 주된 기능으로 하고 있습니다.
Web Application? 웹을 기반으로 실행되는 프로그램을 의미합니다.
웹 브라우저-1. 요청 ---> 웹서버-2. 처리를 요청 ---> 웹 애플리케이션 서버-3. 처리를 수행 ---> 데이터베이스(필요시)-3.처리를 수행 ---> 웹 어플리케이션-4. 서버(처리결과 웹서버로 돌려보낸다.) ---> 웹서버-5. 응답 ---> 웹 브라우저
Web Server? 대표적으로 아파치, 웹투비 등이 있다. 웹서버는 말그대로 작성된 html페이지 등을 네트워크망에 종속되지 않고 웹 서비스를 할 수 있도록 어플리케이션이라고 생각하면 간단합니다. HTTP를 통해 우베 브라우저에서 요청하는 HTML문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말합니다.
Web ServerWeb Application Server의 차이?
웹서버의 아파치나 IIS와 같은 소프트웨어는 HTML/CGI나 기타 웹 문서들을 HTTP규약에 따라 웹 클라이언트와 주고 받으며 통신하는 것이 주 역활입니다. 웹어플리케이션서버는 우선 규모가 크고 엔터프라이즈 환경에 필요한 트랜잭션, 보안, 트래픽관리, DB커넥션 풀, 사용자 관리 등등의 다양하고 강력한 기능을 제공하는 s/w를 의미합니다.

웹서버에 화면을 동적으로 보여주기위해 여러가지 로직이 들어가게 되는데 한 서버에 로직이 집중되어 있다보니 무거워지고 속도 및 보안에 문제가 생깁니다. 그래서 화면에 뿌려주는 로직(Presentation Logic)은 웹서버(Servlet Engine)에 실제 돌아가는 로직(Business Logic)은 WAS에서 일을 나누어 역활 분담 시키는 것입니다.