한빛출판네트워크

IT/모바일

웹 서비스와 SOA(Service Oriented Architecture)

한빛미디어

|

2004-03-09

by HANBIT

저자: 이한수(KT 운용시스템 연구소)


필자가 "IT EXPERT, 웹 서비스 실전 프로그래밍" 이라는 제목의 웹 서비스 관련 책을 집필한지도 벌써 1년이 넘었다.

그동안 웹 서비스 관련 기술들에는 많은 변화들이 있었다. 예를 들면 보안, 호환, 트랜젝션 등을 비롯하여 작년부터 활발하게 진행되고 있는 프로세스 관리 등이 이들 변화의 큰 틀이라 볼 수 있다. 하지만 아쉽게도 아직 이러한 기술들의 성숙도가 우리가 기대하는 만큼의 수준에 이르지는 못한 것이 사실이다. 흔히들 웹 서비스 도입의 가장 큰 걸림돌로 확실한 보안 정책의 미비 혹은 웹 서비스간의 연동 시 발생하는 트랜젝션과 프로세스 관리의 문제를 들고 있기 때문이다.

그런데 조금 다른 관점에서 이 문제를 바라 본다면,

대규모 기업 시스템이나 웹사이트들이 겪고 있고 고민하고 있는 문제들 중에는 여전히 보안이나 연동시의 문제점들이 지적되고 있는 사실을 주목해 본다면 이제 3~4년 밖에 안된 유아 수준의 기술인 웹 서비스가 기술 성숙에 필요한 당연한 진화과정을 겪고 있다고도 볼 수 있는 것이다.

필자는 이러한 관점에서 웹 서비스를 생각할 때 "아직 보안이 미비하기 때문에 고려할 필요없다. 혹은 타 서비스와 연동 시 발생할 수 있는 문제 때문에 적용할 수 없다" 라는 식의 결론은 타당치 않다고 말하고 싶다.

왜냐하면 최근에 웹 서비스 기술에서 발현된 근본적이고도 혁신적인 개념이 앞으로 우리가 컴퓨터 시스템을 바라보는 시각을 송두리째 바꾸어 버릴 것이기 때문이다. 너무나 큰 반향 앞에 미시적인 문제들이 장애가 될 수 없다는 것이다.

시장조사 기관인 가트너 그룹은 2004년을 이끌고 갈 10대 핵심 기술로서 웹 서비스를 그 네 번째 항목으로 지목하였다. 그들은 왜 아직 기술적인 성숙도가 높지 않다고 생각되는 웹 서비스를 이렇게 중요하게 생각하고 있는 것일까?

그 생각의 중심에 SOA(Service oriented Architecture: 이하 SOA)라는 중요한 개념이 자리잡고 있다.

가트너는 더 나아가서 2006년까지 전 세계 비즈니스 애플리케이션의 80% 이상이 SOA 를 기반으로 개발될 것이며 향후 5년간 IT 애플리케이션 개발의 80%가 웹 서비스를 기반으로 하는 .Net과 J2EE로 개발될 것이라고 예측하고 있다.

그럼 도대체 SOA 라는 것이 무엇이길래 이렇게 중요하게 생각되는 것일까?

Service

SOA 가 무엇이냐는 정의에 앞서 더 중요한 정의를 짚어 보도록 하자.

도대체 우리가 말하는 "서비스"라는 것이 무엇일까?

필자는 이것이 우리가 심각하게 고민해 보아야 할 주제라고 생각한다. 서비스란 "무엇인가가 제공하는 어떠한 형태의 용역 혹은 역무"를 의미한다. 다시 말해 우리는 서비스를 이용하며 어떠한 과정을 거치는 것은 관심 밖이고 단지 우리가 원하는 결과물을 기대하는 것이다.

114 전화번호 서비스를 이용한다고 가정해 보자. 일단 찾고자 하는 상호를 말하고 우리는 단순히 약 2~3 초 간의 기다림 후에 서비스의 결과물인 전화번호를 기대하는 것이다. 전화번호를 찾아내기 위한 시스템의 구현 형태, 연동, 보안 따위의 문제는 서비스를 이용하는 고객이 걱정할 문제가 아닌 것이다.

더 나아가 만약 우리가 찾고자 하는 전화번호가 존재하지 않을 때를 생각해 보자. 친절하게도 안내 해주시는 분께서 "찾으시는 전화 번호가 없는데 상호를 잘못 말씀해 주신 것은 아닌지요?"와 같은 질문을 서비스 이용자에게 던지게 된다. 즉, 일종의 연동이라고나 할까? 사용자와 서비스 사이에서 중계하는 역할이라고 할 수 있다.

그런데 만약 이때 "고객님은 .Net을 쓰고 계시기 때문에 안내해 드릴 수 없습니다" 라고 말한다면 고객은 어떤 기분이 들 것인지는 굳이 언급하지 않아도 될 듯하다.

그럼 이제 우리가 다루는 시스템에 좀 더 가깝게 얘기해 보자.

만약 시스템을 개발하다가 사용자가 성인인지 아닌지를 판별하여 주는 기능이 필요하다고 하자. 이를 손수 개발하자고 하니 쌓여있는 데이터가 없어 곤란한 상황이다. 이럴 때 이 기능을 서비스로 제공하는 사업자가 있다면 조회 건수당 얼마씩의 비용을 내고 손쉽게 이용할 수 있을 것이다. 우리는 바로 이러한 것들을 서비스로 생각할 수 있을 것이다. 즉, 우리가 원하는 결과를 어떻게 해서든 제공해 줄 수 있고 손쉽게 이용할 수 있는 것!

Service Oriented Architecture

SOA는 지금까지 컴퓨터 시스템을 만들기 위해 소위 아키텍쳐라는 것을 만들어 가면서 혁신적인 개념으로 생각했던 객체지향적인 방법(Object Oriented)에서 컴포넌트 중심적인 방법(Component Based Development)과 모델 기반의 접근 방법(Model Driven Architecture)의 연장 선상에 있는 가장 포괄적이고도 현실적인 개념으로 인식되고 있다.

웹 서비스 이전에도 비즈니스 로직을 컴포넌트화 하여 이것을 서비스로 보고자 하는 DCOM, EJB, CORBA와 같은 개념도 있었지만 이들은 웹 서비스를 이용한 SOA와 명확한 차이를 가지고 있다. 필자가 생각 하기에 DCOM, EJB, CORBA 같은 개념들은 오히려 컴포넌트 중심적인 방법론에 가깝다고 할 수 있다. 왜냐하면 이들은 자신이 가지는 프레임워크 내부에서 비즈니스 로직을 어떻게 잘 모듈화 해서 최대의 효율성을 가지게 하는가에 주안점을 두고 있기 때문이다.

만약 DCOM으로 만들어진 시스템을 리눅스 사용자가 사용하려 한다면?

바로 이것이 기존의 컴포넌트 중심적인 개념들이 가지는 한계점이다. 각자의 Native 방식으로는 아주 효율적이고 강력하게 개발되고 사용되어질 수 있지만 자신의 시스템 경계를 넘어설 경우에는 당면하는 문제점들이 너무나 많다. 즉, 구현된 시스템을 마치 서비스를 사용하듯 자유롭게 연동하기가 어렵다는 것이다.

하지만 웹 서비스를 이용한 SOA는 이들과 근본적인 차이점을 가지고 있다.

시스템을 누구나 이용 가능한 서비스로 간주하고 연동과 통합을 전제로 아키텍쳐를 만든다는 것이다. 즉, 시스템을 개발하면서 처음부터 불특정 다수의 외부 시스템 혹은 고객과의 연동을 고려한다는 얘기이다. 여기서 불특정 다수라는 것이 큰 의미를 가지는데, 이는 어떠한 플랫폼에 있는 사용자가 요청을 하더라도 문제 없이 처리할 수 있도록 한다는 것이다.

그리고 더 나아가 서비스를 이용하기 위해서 특정 기술(EJB, DCOM, CORBA)에 얽매이지 않아도 되기 때문에 매우 유연한 시스템을 만들 수 있다는 장점이 있다.
유연하다는 장점은 별다른 수정 없이 "A" 라는 회사에서 제공하던 서비스를 같은 기능의 "B" 라는 회사에서 제공하는 서비스로 변경할 수 있다는 것이다.

SOA가 주목을 받고 있는 또 하나의 이유는 최근 엔터프라이즈 컴퓨팅의 큰 변화인 "Utility Computing" 과 관련이 있다. Utility Computing은 솔루션이나 시스템을 소비자가 예전처럼 구매하지 않고 기존에 구축된 내용을 이용한 만큼만 비용을 내게 한다는 개념이다.
따라서 손쉽게 사용할 컴퓨팅 자원을 선택하고 교체하려면 이들이 SOA로 구축이 되어야 한다는 것이다. 전문가들은 SOA가 IT 업계가 가야 할 궁극적인 목표인 Utility Computing 으로 가기 위한 중요한 포석이 되어 줄 것이라고 생각하고 있다.

이러한 웹 서비스를 이용한 SOA를 어떻게 설계할 수 있는지에 대한 좀더 기술적인 내용은 다음 글에서 다루기로 하고 마지막으로 우리가 웹 서비스 기술을 어떻게 준비해야 하는지에 대한 간단한 가이드 라인을 제시해 보겠다.
  1. 현재 웹 서비스를 사용하고 있지 않다면? 지금 즉시 테스트용 소규모 웹 서비스 시스템을 구축해야 한다.
  2. 이미 구축한 웹 서비스 시스템이 있다면? 좀더 기능이 강화된 다음 버전으로 개발해야 한다.
  3. 웹 서비스를 사내 시스템 통합 뿐 아니라 타 시스템 연동에도 사용하도록 한다.
  4. 개발자가 아직 웹 서비스에 대해 지식이 없다면? 지금 당장 서점에 가서 웹 서비스 관련 서적을 구해 공부해야만 한다.
즉, 지금 이 시점이 웹 서비스를 통해 이루어 지는 혁명적인 변화에 동참하기 위한 마지막 기차를 탈 수 있는 기회라고나 할까?

지금까지 간단하게 나마 웹 서비스를 이용한 SOA에 대하여 알아 보았다.
아직 구체적으로 기술적인 내용에 대해 짚어 보지는 않았지만 SOA가 무엇이며 웹 서비스 기술이 그 가운데 있음을 확인할 수 있었으리라 생각한다.

만약 지금도 "웹 서비스가 과연 도입될 수 있을까?" 라는 질문을 던지는 분이 계시다면 그분은 위의 4번 항목에 해당되므로 즉시 사고의 전환이 필요함을 말하고 싶다.
TAG :
댓글 입력