SOA는 기업의 정보 시스템을 서비스 위주로 분할하는 아키텍처를 말한다. SOA는 기본적으로 서비스들의 집합이다. 여러 서비스를 묶어 다른 서비스가 되기도 하며 서비스가 서비스를 서로 사용하기도 한다(여기서 말하는 서비스는 잘 정의되고, 다른 서비스에 종속적이지 않은 기능의 단위이다). 객체지향(Object Orientation)과 같은 많은 개념들이 그렇지만 SOA 역시 완전히 새로운 개념은 아니다.
‘서비스’란 용어는 이미 수 십 년 전부터 쓰여 왔으며, 90년대 분산객체 기술이 각광을 받기 시작하면서 널리 쓰였다. 최근에 진정한 의미의 SOA를 가능하게 해줄 것으로 기대되는 XML과 웹 서비스가 등장하면서 SOA가 다시 각광을 받고 있다. 이 때문에 많은 사람들이 SOA와 웹 서비스를 동등한 것으로 바라본다. 좀 더 정확히 이야기하면 SOA는 모델(혹은 아키텍처 패턴)이고 웹 서비스는 ‘서비스들을 연결하는 기술’이다.
SOA가 기존의 클라이언트/서버, 분산 컴포넌트 등의 아키텍처들과 크게 다른 점은 서비스 인터페이스와 실제 구현을 별개로 가져간다는 점이다. 이런 특징으로 ‘비지니스 모델 및 프로세스들의 동적인 통합’을 가능하게 하고 있다. SOA는 비지니스 모델 및 프로세스들의 동적인 통합이라는 면에서 가장 큰 의의를 찾을 수 있다. 즉 느슨하게 연결된 서비스들간에 비동기 메시지를 주고받아서 구현되는 동적으로 비즈니스 절차를 구현하는 것이다.
SOA와 웹 서비스
SOA는 다음과 같이 세 가지로 구성 된다.
서비스 요청자(requestor) + 서비스 제공자(provider) + 서비스 중개자(broker)
SOA를 구성하는 세 가지 요소는 서로 느슨하게 연결되어 있으며 서로 완전히 독립적이다. SOA가 다른 모델과 크게 다른 특징으로 프로세스(더 정확히는 비즈니스 프로세스)를 위주로 정보 시스템 인프라를 구축한다는 것과 느슨하게 결합된(loosely coupled) 애플리케이션 개발 및 관리 아키텍처라는 점을 들 수 있다. 느슨하게 결합되어 있다는 것은 필요할 때만 연결이 이뤄진다는 이야기이며 또한 서로 독립적으로 운영되고 있음을 뜻한다. SOA 모델에는 서비스를 요청하는 요청자와 서비스를 제공하는 제공자 외에 서비스에 대한 정보를 서비스 요청자에게 알려주는 중계자(broker)가 존재한다. 즉 원하는 서비스가 어디에 있으며 어떤 모습을 하고 있는지를 찾아주는 중계자가 있다.

여기서 한 가지 주의할 것이 있는데, SOA는 관점과 접근 방법을 제공할 뿐 SOA 자체가 구현 기술은 아니라는 점이다. 즉 꼭 웹 서비스가 아니라도 SOA를 구현할 수 있는 다른 방법들도 많이 있을 수 있다. SOA(혹은 웹 서비스)는 다음과 같은 특징을 가진다. 이 특징들을 이해하는 것은 웹 서비스의 활용도와 사용 범위를 결정하는 중요한 것이다.
[1] 느슨한 연결(Loosely Coupled)
[2] 성긴 인터페이스(Coarse Grained)
[3] 비 동기성(Asynchronous)
‘성긴 인터페이스(Coarse Grained)’란 거칠게 갈은 곡식 알갱이란 비유인데 인터페이스의 단위를 세밀하게 나누는 것이 아니라 거래의 의미가 있는 큼직한 단위의 인터페이스로 만드는 것이 좋다는 의미이다.
SOA 관련 업계 동향
웹 서비스 표준화가 꾸준히 진행되고 있고 SOA에 대한 논의도 활발하지만 SOA에 대한 정의와 전략은 벤더들마다 다르다. 특이할만한 사실은 SOA 관련 노력들에 벤더들의 행보와 크게 다른 점은 서로 배타적이지 않다는 점이다. 특히 마이크로소프트는 지금까지 보여 왔던 독자적인 규격을 고집하지 않고 리눅스를 포함하여 다양한 플랫폼과 기술간의 상호 운영성에 대해 지원을 아끼지 않고 있다. 이런 현상은 다른 벤더들도 마찬가지이다. 배타적인 기술 정책으로는 더 크게 성공하기 힘든 시대가 된 것이다.
BEA는 SOA를 선도하는 대표적인 벤더 중의 하나이다. 지난 5월에 있었던 BEA eWorld 2004 컨퍼런스에서 발표된 BEA의 전략들을 살펴보면 BEA가 SOA에 전력투구할 것을 시사하고 있다(이 컨퍼런스의 표어가 ‘Deploy SOA. Now!’였다). BEA의 비전은 ‘서비스 지향 아키텍처(SOA)를 기반한 리퀴드 컴퓨팅(Liquid Computing)’이라고 요약할 수 있다. 현재의 웹로직 서버에 BPM(Business Process Management) 기능을 확장한 웹로직 서버 프로세스 에디션(WebLogic Server Process Edition)을 내놓고 있다. 이것은 애플리케이션 개발과 업무 프로세스 관리(BPM)을 결합하여 보다 빠르게 기업 애플리케이션을 개발할 수 있게 한다.
한국 IBM은 SOA를 자사의 ‘온 디맨드’의 핵심 기반으로 삼고 SOA 관련 서비스와 통합 서비스를 제공하고 있다. 특히, 웹스피어의 비즈니스 인티그레이션 서버 파운데이션은 SOA 지원을 위한 소프트웨어 솔루션을 제공한다. 웹 서비스 기술에 투자를 아끼지 않는 벤더 중의 하나가 마이크로소프트이다. 닷넷이 바로 ‘XML 웹 서비스 플랫폼’이자 마이크로소프트의 전략 이름이다. 마이크로소프는 XML을 포함하여 웹 서비스 관련 다양한 표준화에 적극적으로 참여하고 있으며 의외로(?) 열린 아키텍처를 지향하고 있다.
한국의 대표적인 WAS 제품 개발 업체인 티맥스소프트는 WAS 제품인 제우스(JEUS) 5.0을 J2EE 기반의 웹 서비스 플랫폼으로 내놓고 있다. 이 제품 역시 SOA를 지향하는 제품이며 BPM 솔루션인 ‘비즈마스터(BizMaster)’을 내놓았다. 이 제품은 데이터 중심 통합과 함께 프로세스 개선과 적용을 가능하게 하는 기능, 다양한 어댑터, 채널, 통합 개발?관리 등을 제공한다.
SOA 트랜드 읽기
BEA를 포함하여 여러 벤더들의 움직임이 어느 때 보다 활발하게 움직이고 있다. 여러 업체들의 움직임에서 중요한 흐름들을 몇 가지 읽을 수 있다.
타사 기술 끌어안기 - 상호운용전략
W3C, OASIS, WS-I 표준화 기구들은 웹 서비스를 다양한 측면에서 계속 표준화 시키고 있다. 이와 별도로 SOA와 웹 서비스 관련 벤더들의 공동적인 움직임 중의 하나는 바로 서로 다른 기술과 서로 다른 플랫폼에 대한 상호운용 전략이다. SOA 구축을 위해서는 다른 기술과 접목되고 연결되는 것이 매우 중요하게 되는데 웹 서비스와 같이 서비스와 서비스를 연결하는 기술뿐만 아니라, 기존 비즈니스 기능을 웹 서비스로 끌어 올리거나 레거시를 지원해야 하기 때문이다. 이 때문에 경쟁 관계에 있는 벤더의 기술도 지원하는 사례가 늘어나고 있다.
SOA 다음은 프로세스 - BPM 지향
SOA가 구축되면 그 다음은 자연스럽게 BPM로 넘어간다. 서비스 자체가 단위 비즈니스 로직을 담고 있기 때문에 SOA가 구축되고 나면 이 서비스들 간의 효율성과 프로세스 개선이 화두가 된다는 이야기이다. 대표적인 예가 웹 서비스 기반의 워크플로우(Workflow)이다. 또한, 비즈니스 프로세스 설계, 운용, 평가 등 다양한 분야에 거쳐 BPM 이슈가 생겨난다. 웹로직의 워크샵(Workshop)과 같이 SOA를 지향하는 제품들이 비즈니스 프로세스 모델링 기능을 가지고 있다.
적과의 동침 - 오픈소스
많은 업체들이 매우 적극적으로 오픈 소스를 도입하기 시작했다. IBM은 보이게 혹은 보이지 않게 오픈소스를 지원하고 역으로 오픈소스를 잘 활용해 왔다. BEA 역시 자사 제품의 일부를 오픈소스로 만들어 공개하고 개발 환경의 일부를 오픈소스로 진행할 예정이라고 한다. 이처럼 오픈소스를 적극 도입하거나 제품의 일부를 오픈소스로 하는 움직임들이 많아지고 있다. 오픈소스의 그 문화나 정책을 수용하는 제품들이 늘어나고 있다.
약간 앞선 미래 - '그리드 컴퓨팅 + SOA'
약간 앞선 이야기가 되겠지만 SOA의 미래와 그리드 컴퓨팅은 멀지 않은 미래에 서로 만나게 될 것이다. SOA가 지속적으로 수정하고 보완하기 쉬운 유연한 모델을 제공하지만 퍼포먼스 측면에서는 다소 약점을 가지고 있는 게 사실이다. 이 부분을 보완하려는 많은 노력들이 있으며 그 중 특이할 만한 것이 바로 그리드 컴퓨팅을 활용하려는 노력이다.
SOA의 과제
SOA가 장점만을 가진 것은 아니다. 비즈니스 모델 및 프로세스들의 동적인 통합을 가능하게 하는 장점이 있고 기업 내부뿐만 아니라 외부까지 아우르는 통합을 제공할 수 있다. 그러나 동적인 특성 때문에 서비스들을 관리하는 문제가 큰 과제로 남는다. 또한 기존 기간 시스템이 가지고 있는 기능을 웹 서비스로 끌어 올리는 것이 매우 힘들다는 문제를 안고 있다. 즉 기간 시스템의 전반적인 성숙도가 낮다면 SOA를 구축을 방해하는 큰 걸림돌이 된다.
SOA를 이야기할 때 벤더들마다 고유한 전략들이 있다. 이 전략 이름들은 구체적인 제품이 아니고 비전을 담은 것들이기 때문에 다소 추상적이고 이상적이다. IBM의 온디맨드, BEA의 리퀴드 컴퓨팅, HP의 어댑티브 엔터프라이즈(AE) 등이 있다. 대부분의 벤더들이 전략들의 기반으로 SOA를 가져가고 있는데, 이 전략들에 사용되는 SOA에 대한 개념이 완전히 동일한 것은 아니다.
컴퓨팅 환경의 큰 발전 단계가 클라이언트/서버, 웹 기반 컴퓨팅, SOA가 될 것이라고 예측하는 전문가들도 상당 수 있다. 그 만큼 SOA는 이미 상당히 중요한 개념으로 자리 잡았다. DCOM, DCE, CORBA 등 한 시대를 풍미했던 분산객체 기술들은 이제 웹 서비스에 자리를 내주고 있다. 분산객체 기술의 쇠락의 가장 큰 원인은 벤더들이 독자적인 표준을 만들었다는 점과 산업계의 지원이 부족했다는 점을 들 수 있다. 웹 서비스는 그 자리를 물려받았으며 XML SOAP과 같은 표준 기술과 업계의 공동의 노력으로, 분산객체 기술이 이루지 못했던 진정한 의미의 플랫폼 독립적인 통합을 이룰 것으로 기대되고 있다. @