posted by 방랑군 2009. 12. 22. 15:14
우선 SOA가 무엇인지 알아보자면요,
 
SOA는 아키텍처와 인터페이스의 다른점을 신경 쓰지않고 모든 어플리케이션을 
네트워크를 경유하여 서비스로서 자유롭게 조합하여 이용할 수 있도록 하기위한 시스템 설계상의 방법입니다.
 
여기서 서비스라는 것은 비지니스 로직을 컴포넌트화 한 것으로, 예를 들면 '2분기연속으로 이익을 내고 있는 기업의 
리스트를 조회한다'라는 비교적 포괄적인 형태에서도 API를 호출하는 것처럼 서비스를 호출하는 측이 하위레벨(네트워크 설정과 SQL 등)를 의식할 
필요가 없이 필요로 하는 서비스를 호출하기만 하면 됩니다.
 
웹 서비스는 여기서 말하는 서비스의 내장방법 중에 하나입니다.
 
그럼 다음으로 EAI는 무엇인지 알아보겠습니다.
 
소위 EAI 툴이라 불리 우는 제품을 판매하고 있는 각 벤더는 최근에는 EAI 보다는 BPM이라는 단어를 사용하기 
시작하고 있고 웹 어플리케이션 서버도 어댑터가 사용되면서 EAI 툴이라 불리게 되었습니다.
 
더욱 진보한 SOA(Service Oriented Architecture)에 기반으로 하는 ESB 
(Enterprise Service Bus) 제품 이라는 새로운 흐름도 나타나기 시작했습니다. 그 외에 데이터 웨어 하우스 구축에서 사용되는 
ETL (Extract, Transform, Loading : IT환경에서 상이한 종류의 데이터를 추출, 변환, 가공하는 툴)도 어플리케이션의 
데이터 연계라는 의미에서는 EAI의 범위에 포함됩니다.
 
EAI의 기본은 1대1 어플리케이션 연계에서 시작됩니다.
다시 말해서 EAI는 부분적으로 도입 되어지는 업무 어플리케이션과 기존 시스템을 통합해서 하나의 시스템으로 활용하기 
위한 조합을 목적으로 하고 있습니다. 
여기에서 우선 1대1 어플리케이션 연계를 설명해보도록 하죠.
 
1대1 어플리케이션 연계에는 MOM(Message Oriented Middleware)이 
사용됩니다.
MOM 이라는 것은 어플리케이션간의 계속적인 쌍방향 데이터 교환을 가능하게 하는 미들웨어 이며 EAI의 가장 기본이 
되는 소프트웨어입니다.
프로그래머는 MOM을 도입함으로써 어플리케이션의 통신부분을 개발하지 않고도 개발을 마칠 수 있습니다. 어플리케이션의 
연계부분의 개발시간과 개발비용을 크게 절감 할 수 있다는 얘기가 됩니다.
MOM에는 메시지 큐잉 모델이 사용됩니다.
 
여기서는 아이비엠의 MQ를 예를 들어 알아보겠습니다.
이 시스템간의 통신방식의 최대 특징은 어플리케이션 간에 직접 세션을 맺지않고 큐(Queue)라고 불리는 스토리지 
(디스크상이나 메모리 상에 생성이 가능)를 경유해서 간접적으로 메시지(데이터)를 주고 받을 수 있습니다.
결국 메시지 큐잉 모델에서는 메시지 발신 어플리케이션에서 발송 되어진 메시지를 일단 큐에 저장을 하고 그 후에 수신 
어플리케이션이 큐로부터 메시지를 받는 방식으로 되어있습니다.
 
이 방법이라면 발신측은 수신측 상태를 신경 쓸 필요가 없어집니다. 실제 어플리케이션 간의 통신에서는  
운영체재의 장해, 네트워크의 장해 등으로 수신측 어플리케이션이 이용할 수 없는 경우가 발생하지만 그 때에는 이용이 가능할 때까지 큐에 메시지를 
일시적 (장기간 보존가능)으로 보관해 두기만 해도 됩니다.
 
구체적으로는 MQ는 tcp/ip, SNA 등의 복수의 프로토콜에 대응하고 있기 때문에 프로그래머는 어떤 통신 
프로토콜을 통해서 통신을 하고 있는가에 대해 의식 할 필요가 없습니다.
MQI(Message Queue Interface)라는 복수의 플랫폼 간의 통일된 13개의 인터페이스 
(MQOPEN:큐의 오픈, MQPUT : 큐로 메시지 전송) 구사만으로 충분합니다.

이 지식은 삼성경제연구소에서 공유해주셨습니다.