EAI관점에서 본 SOA
2009-07-29
Oracle Korea/Principal Consultant
Byungwook.Cho (byungwook.cho 골뱅이 oracle.com)
SOA(Service Oriented Architecture) 에 대한 접근 방법은 BPM을 이용한 비즈니스의 민첩성 확보나 비즈니스의 서비스화를 통한 재 사용성등에 초점이 맞추어져왔다.
BPM을 통한 민첩성 확보등은 실제 비즈니스에서 그만큼 변화가 다양한 업무 요건을 필요로하고 BPM으로 구현할 만큼 긴 프로세스가 정리되어 구현될 프로세스가 많지 않다. [ 사실 BPM으로 전체 프로세스를 시스템화 한다는 것은 상당히 힘든일이다. 그만큼 변화나 융통성이 많이 필요하기 때문인데, “일례로 XX과장님 무슨 업무 처리 부탁드립니다.” 와 같은 이메일이나 업무 협조 요청등을 통해서 일어나는 정형화되지 않은 프로세스도 있기 때문에 업무 절차에 대한 정리가 선행되야 BPM 도입시 효과를 볼 수 있다. ]
또한 재사용에 대한 문제 역시, 소프트웨어 공학론에서 수십년 전에서부터 언급되어 온 만큼 쉬운일이 아니다. 인터페이스를 통일하고 비즈니스 단위로 서비스를 만들어서 재사용을 하려면 상당히 고도화된 수준의 디자인 노하우가 필요하다.
그렇다면 SOA를 도입하는 데 있어서 다른 장점은 없을까? 그 중 하나가 통일된 인터페이스를 이용한 애플리케이션간의 통합을 SOA를 통해서 구축할 수 있다.
EAI (Enterprise Application Integration)
먼저 전통적인 애플리케이션간의 통합 방식인 EAI에 대해서 살펴보도록 하자.
1990년대에 인터넷의 활성화와 비즈니스의 IT 시스템의 도입이 가속화되면서 기업의 업무들은 급속하게 IT 시스템으로 구축되었다. ERP,CRP,PLM 등등 업무 부서별로 또는 비즈니스 영역별로 시스템들이 구축되었다.
구축이 완료되고 시스템이 운영되기 시작하면서 문제가 발생되기 시작했다. 업무 시스템들이 서로 분리가 되어 있고, 업무에 대한 데이터가 서로 다른 시스템에 분리되서 관리되었던 것이다.
물류 와 구매시스템에서 발생한 회사의 수입과 지출 내역이 회사의 회계 시스템과 분리되서 관리되었고 이로 인해서 각 시스템간의 데이터를 맞추는 작업이 수작업이나 또는 기타 원시적인 방법으로 진행되었다. 그러한 과정에서 실수도 발생을 하고 효율과 경영 여건에 대한 민첩성도 떨어지게 되었다.
업무간의 연계를 위해서 각각의 업무시스템을 P2P 형식으로 연결하기 시작했지만, 방대한 데이터에 대한 안정성,성능 그리고 모니터링등 여러가지 문제가 발생하였고, 이러한 애플리케이션간의 연동만을 전문으로 하는 아키텍쳐와 솔루션이 필요하게 되었는데 그것이 바로 EAI이다.
분리된 각각의 IT 시스템을 연결할 수 있는 인프라를 제공함으로써 전체 IT 시스템들의 유기적인 결합을 가능하게 하는 개념이다.
EAI의 통합상 문제점
그런데 이러한 전통적인 방식의 EAI는 통합 방식에 있어서 몇가지 문제를 가지고 있다.
그 중 하나가 통합 인터페이스의 문제이다. 통합하고자 하는 애플리케이션의 인터페이스를 이용하기 때문에, 통합이 발생할 때 마다 별도의 통합 프로그램을 구축해야 한다.
예를 들어 3개의 시스템을 서로 통합하고자 할 때, 각 업무 시스템별로 하나의 인터페이스만을 가지고 통합한다고 해도, 시스템의 인터페이스 방식이 틀리기 때문에 총 3개의 연결이 필요하다. 업무가 4개로 늘어나면 6개의 형태의 인터페이스 타입이 5개로 늘어나면 10개로 업무 시스템의 개수가 늘어나고 통합하고자 하는 기능의 수가 늘어날수록 통합 프로그램의 수는 급격하게 증가하게 된다.
이는 통합 프로그램의 구현에 드는 자원과 이에 따른 관리 문제를 만들게 되고 특히 업무시스템 담당 부서간의 커뮤니케이션에 드는 노력을 급격하게 증가 시킨다.
EAI 프로젝트의 경우 통합 하고자 하는 양쪽의 시스템의 현업 담당자들이 서로 인터페이스를 협의하고 메시지 타입을 협의하고, 연동할 인터페이스를 구현해야 하며 이에 대한 테스트를 수행해야 한다. 이 과정은 송신 시스템,EAI 시스템,수신 시스템 3개의 업무 부서가 관여하기 때문에, 커뮤니케이션에 소요되는 시간과 비용이 통상적으로 예상할 수 있는 범위를 넘어선다.
또한 기존 시스템들이 교체 되었을 때, 교체된 시스템의 인터페이스를 전면 교체해야 하는 작업이 발생한다. 그리고 EAI 시스템은 별도의 시스템들을 Native 인터페이스를 이용해서 연결하는 것이기 때문에, 각 시스템에 대한 전문 지식과, 타 업무 부서와 일하기 위한 프로세스, 그리고 연동 프로그래밍에 대한 능력등을 갖춘 개발자가 필요하다. 즉 인력이 교체될 때 높은 Learning Curve 와 Education Cost가 필요하게 된다는 것이다.
이러한 EAI의 문제는 각 시스템간의 인터페이스가 통일되어 있지 않고 호환되지 않기 때문에 발생하게 되는 것이다.
SOA를 이용한 통합
그러면 전통적인 EAI가 가지고 있는 문제를 해결하자면 어떻게 해야할까? 앞에서도 언급했듯이 이런 문제는 인터페이스의 비호환성에서부터 발생한다. 즉 해결 방식은 인터페이스 방식을 통합하는 것이다.
웹서비스나 CORBA등의 통합된 인터페이스 방식을 이용해서 모든 시스템들이 통신하게 되면 시스템이 바뀌었을때도 동일한 형태의 인터페이스를 노출해주면 되고, 중간에서 연동을 하는 입장에서도 여러 플랫폼에 대한 기술을 이해할 필요없이 하나의 표준 인터페이스 기술을 사용하면 되기 때문에 인력 운용면이나 Learning Curve 면에서도 여러가지 장점을 가질 수 있게 된다.
SOA와 EAI의 융합
그러면 EAI 는 더 이상 쓸모가 없는 것 일까? EAI는 통합에 있어서 SOA와 다른 관점을 가지는 만큼 다른 장점 또한 제공한다.
Tightly Coupled 통합
EAI는 통합 대상이 되는 애플리케이션에 대한 Native 인터페이스를 이용하기 때문에, Tightly Coupled 된 통합이 가능하다. 이 말은 애플리케이션간의 분산 트렌젝션과 같은 저수준의 통합을 가능하게 해준다는 것이다.
특히 여러 개의 애플리케이션을 묶어서 하나의 서비스 기능으로 도출하고자 할 때, EAI내의 work flow 기능들을 이용하여 대상 애플리케이션들을 composite 하고 이를 서비스 형태로 expose (노출) 시키면 애플리케이션간의 분산 트렌젝션이 연계된 형태의 서비스를 노출 시킬 수 있다.
즉 SOA에서 EAI는 저 수준의 시스템간의 통합을 담당하고 이를 서비스로 노출 시키는 역할을 한다.
이렇게 기존의 Legacy 시스템들을 표준화된 인터페이스로 expose 해주는 계층을 SOA에서는 Service Enablement Layer라고 하고, EAI는 그 중에서 단일 시스템에 대한 expose 보다 하나 이상의 Legacy를 통합하여 expose 하는 composite 기반의 Service Enablement 를 수행한다.
기존 업무 조직에 대한 기술적 차이에 대한 중계
SOA 프로젝트에서 문제점중의 하나가 기존의 기술 조직의 서비스 구축에 대한 기술적인 차이이다.
예를 들어 ‘A사의 ERP 솔루션을 이용해서 ERP를 구축한 회사가 있다고 하자. 이 회사는 SOA로 아키텍쳐를 전환하기로 결정했고, ERP 팀에 회사 표준 인터페이스 기반으로 서비스를 Expose 하도록 지시했다고 가정하자.
그런데 이 ERP 팀의 개발자들은 오직 ERP 시스템에서 사용된 언어만을 안다. 설사 웹서비스와 같은 기술이 제공되더라도 XML도 모르고, 웹서비스를 공부할만한 시간도 의지도 없다. 결국에는 재사용이 가능한 높은 수준의 서비스가 아니라 간신히 구현한 서비스가 나오거나 또는 업무팀의 반발로 데이터 베이스간의 연동으로 통합을 하게 되고, SOA에서 추구하고자 하는 원래의 목적은 허물어져 간다.’
이런 시나리오는 실제 SOA 프로젝트에서 발생하는 시나리오이다. 처음부터 전체 시스템을 다시 구축하는 회사면 모르겠지만 새로 세운 회사가 아닌 이상, Legacy 시스템은 존재한다. 또한 하나의 솔루션에 전문화되어 있는 현업 인력에게 웹서비스라는 새로운 기술을 들이 민다는 것도 쉬운일이 아니다.
여기서 EAI가 사용될 수 있는데, 업무팀은 현재 사용하고 있는 솔루션의 기술을 이용하여 비즈니스 서비스를 구축하면 EAI에서 해당 솔루션에 대한 아답터를 이용하여 연결하고 웹서비스로 외부에 Expose 해주는 기능을 수행한다.
EAI의 인터페이스 변환은 단순하게 프로토콜이나 사용기술의 변화뿐만 아니라 조직간의 기술 차이에 대한 중재 역할까지 수행하게 된다.
결과적으로 EAI를 SOA에 적용하면 Service Enablement Layer로써 다음과 같은 계층 구조를 가지게 된다.
결론
지금까지 간단하게나마 기업의 애플리케이션의 통합의 필요성과 EAI를 통한 통합 그리고 SOA에서 애플리케이션의 통합 방법에 대해서 알아보았다. Application Integration은 현재의 Enterprise Architecture에서 반드시 필요한 요구사항이다. EAI가 되었건, SOA가 되었건 어떤 방식이던지 통합이 필수적인 요건이다. 어떤 방식으로 구현하느냐는 해당 기업의 시스템의 아키텍쳐와 요구사항에 따라 틀릴 것이고 SOA를 이용한 통합 방식이 전통적인 EAI방식보다 몇몇 장점이 있다는 것을 살펴보았다.
사실 본 문서에서 언급한 인터페이스 통일을 통한 시스템의 통합 방식은 SOA의 발전 모델중의 첫번째 모델인 통합 중심의 Fundamental SOA에 해당한다. (참고 : http://www.slideshare.net/Byungwook/soa-overview )
그러나 SOA가 반드시 모든 통합에 적합한 것은 아니다. EAI방식의 통합이 적절할때가 있고 SOA방식이 적절할때가 있기 때문에 SOA중심의 통합은 EAI 를 흡수하는 형태로 상호 보완적인 통합이 되어야 한다.
그리고 SOA의 목적 자체가 통합 하나만이 되서는 곤란하다. 여러 목적 중의 하나가 통합이고 그외에 서비스의 재사용, 시스템의 유연성과 민첩성등이 반영되어야 진정한 SOA 라고 이야기 할 수 있다.
'아키텍쳐 > SOA' 카테고리의 다른 글
SDP (Service Delivery Platform) (1) | 2009.09.15 |
---|---|
모차세대 시스템의 WAS 아키텍쳐 Blue Print (8) | 2009.07.30 |
SOA를 공부하세요. 최고입니다. (4) | 2009.07.04 |
JEE enterprise Application Grid Architecture (0) | 2009.06.12 |
괜찮은 SOA 테스팅 툴 발견 (0) | 2009.03.16 |