2011년 5월 24일 화요일

Chapter 1 Web Service의 첫 걸음

Chapter 1 Web Service의 첫 걸음


1. Web Service의 정의
“웹 서비스는 표준화된 XML메시징을 통하여 접근 가능한 네트워크 명령들의 집합을 기술한 인터페이스이다. 웹 서비스는 특정 작업이나 이들의 집합을 수행한다. 웹 서비스는 메시지 포맷, 전송 프로토콜, location을 포함하고 서비스를 위한 필요 요건들을 상세히 기술한 서비스 명세서인 표준 형식의 XML을 통하여 표현된다.” - IBM
“웹 서비스는 다른 어플리케이션에 데이터와 서비스를 제공하는 어플리케이션 로직의 단위이다. 어플리케이션은 각각의 웹 서비스가 어떻게 구현되었는지 걱정할 필요 없이 HTTP, XML 그리고 SOAP과 같은 웹 프로토콜들과 데이터 포맷들을 이용하여 웹 서비스에 액세스한다. 웹 서비스는 CBD(Component-Base Development)와 웹의 최선의 결합이며 Microsoft .NET의 근간이다.” – Microsoft
“웹 서비스는 표준 인터넷 프로토콜을 통하여 접근 가능하도록 프로그래밍된 어플리케이션 로직이다. 웹 서비스는 CBD 와 Web 형태의 최선의 결합이다. 컴포넌트와 마찬가지로 웹 서비스는 어떻게 구현되었는지에 대하여 신경 쓰지 않고, 재사용 가능한 블랙박스 형태의 기능을 제공한다. 최근 컴포넌트 기술과는 달리, 웹 서비스는 DCOM, RMI, IIOP와 같은 객체 모델의 프로토콜을 통하여 접근되지 않는다. 대신, HTTP, XML과 같은 Web 프로토콜들과 데이터 포맷들을 통하여 접근된다. 웹 서비스 인터페이스는 웹 서비스가 받아들이고 만들어 내는 메시지에 의해서 엄격히 규정된다. 다시 말해서, 웹 서비스의 사용자는 프로그래밍 언어와 플랫폼에 상관없이 단지 웹 서비스의 인터페이스를 위해 정의된 메시지를 생성하고 사용해서 구현할 수 있다.” - Microsoft
“웹 서비스는 사용자의 문제나 요청에 솔루션을 제공하기 위한 임의로 찾아서 조합될 수 있는 소프트웨어 컴포넌트이다. 자바와 XML은 웹 서비스를 위한 뛰어난 기술이다.” -SUN

2. SOA(Service-Oriented Architecture) 서비스 지향 아키텍처
CBD기반의 J2EE, .NET을 사용하여 원격의 서로 다른 시스템을 만들었고 각 시스템은 각각의 방화벽 안쪽에 위치한다면 서로의 데이터 교환이 어려워 재사용성을 기대하기 어려울 것이다. 이와 같은 컴포넌트 기반 시스템의 한계를 극복하기 위해서 나온 개념이 SOA 즉 서비스 지향 아키텍처이다. 단순하게 말하면 서비스 지향 아키텍처란 우리가 웹 브라우저에서 파일을 요청하는 것처럼 컴포넌트를 감싸는 서비스를 중심으로 비즈니스를 구성한다는 개념이다. 웹 브라우징은 단지 특정 파일을 요청하면 파일을 돌려주는 형식이지만, 서비스 지향 아키텍처는 특정 클래스의 메소드를 호출하고 반환값을 받는 것과 동일하게 웹에서 파일 요청대신 특정 정보를 담아서 호출하고, 그 결과를 파일로 받게 되는것이다. 또한 웹 서비스는 비동기적인 시스템 구성이 가능하고, HTTP, XML에 의존하기 때문에 기존에 존재하는 비즈니스 아키텍처를 그대로 두고 시스템 간의 연동이 가능하게 된다. 아래의 그림은 SOA의 구성을 도식화 한것이다.

  • 서비스 제공자(Service Provider) : 서비스 제공자는 서비스 명세서를 만들고, 하나 이상의 서비스 브로커(Service Broker)에 서비스 명세서를 등록(publish)하고, 하나 이상의 서비스 요청자(Service Requester)로부터 웹 서비스 호출 메시지를 받을 책임이 있다.
  • 서비스 요청자(Service Requester) : 서비스 요청자는 하나 이상의 서비스 브로커에 등록되어 있는 서비스 명세서를 찾고(Find), 서비스 제공자에 의해 호스팅 되는 웹 서비스를 호출하거나 연결(Bind)하기 위하여 서비스 명세서를 사용할 책임이 있다.
  • 서비스 브로커(Service Broker == Service Registry) : 서비스 브로커는 서비스 제공자에 의해 등록된 웹 서비스 명세서를 홍보하고, 서비스 브로커 안에 보관되어 있는 서비스 명세서의 집합에서 서비스 요청자가 원하는 것을 찾을 수 있게 할 의무가 있다. 서비스 브로커의 역할이 서비스 제공자와 요청자를 연결하는 것이다.
  • 등록(Publish) : 서비스를 등록하고 서비스를 홍보하는 행위, 서비스 제공자와 서비스 브로커 사이에 이루어진다. 서비스 제공자가 서비스 브로커에 자신의 서비스 명세서를 등록한다면, 서비스 브로커는 서비스 요청자의 집단에 등록된 웹 서비스에 대한 세부적인 사항을 알려 주게 된다.
  • 찾기(Find) : 서비스 요청자와 서비스 브로커 사이에서 발생하는 것으로, Find 기능을 통하여 서비스 요청자는 서비스의 종류나 서비스가 보장하는 특징과 같은 찾고자 하는 서비스에 대한 다양한 특징을 기술하게 된다. 그러면, 서비스 브로커는 서비스 요청자가 기술한 특징과 맞는 웹 서비스를 이미 등록되어 있는 웹 서비스 명세서에서 찾게 되고, 이렇게 해서 찾아진 서비스 명세서의 리스트가 찾기 기능의 결과물이 된다.
  • 연결(Bind) : 서비스 요청자와 서비스 제공자 사이의 클라이언트-서버 관계를 말한다. 연결 기능은 웹 서비스를 호출하기 위하여 사용되는 서비스 명세서에 기반을 둔 클라이언트측 대리자의 동작 상태와 같이 매우 정교한 동적이거나 개발자가 클라이언트 어플리케이션에서 웹 서비스를 호출하기 위하여 작성한 코드와 같이 정적인 모델이 될 수도 있다.
  • 서비스 명세서 : 서비스 제공자가 서비스 브로커에 제출하는 것으로, 찾기 기능의 결과로 서비스 요청자에게 제공되는 것이며, 서비스 제공자가 제공하는 웹 서비스를 호출하거나 바인딩 하기 위하여 서비스 요청자가 알아야 할 모든 것이 기술되어 있다. 또한, 웹 서비스에 대한 호출의 결과로서 서비스 요청자에게 돌아오는 정보가 무엇인지를 알려준다.


SOAP, WSDL, UDDI에 대하여 다음 장에 자세히 알아보고 여기서는 간단히 알아보도록 하자.
각 개체 간의 통신은 SOAP(Simple Object Access protocol)을 통해 이루어진다. SOAP는 서비스 기반 아키텍처에서 Remote서비스를 실행하기 위한 단방향 프로토콜이다. XML 웹 서비스의 통신은 대부분 HTTP에 기반하고 있지만, HTTP에서 Remote에 있는 서비스를 실행시킬 수가 없기 때문에 HTTP위에 XML로 구성된 SOAP을 올리게 된다.

WSDL(Web Services Description Language)은 서비스 명세서를 구성하는 언어이다. WSDL은 서비스를 요청할 때 요청 메시지를 어떤 포맷으로 만들어야 하고 응답 메시지는 어떻게 구성되어 있는지에 대한 정보를 담고 있다. WSDL은 XML 형식으로 되어 있다. XML로 되어 있기 때문에 어떤 플랫폼이나 언어로도 해당 웹 서비스가 어떻게 구성되어 있는지 알 수 있다.

UDDI(Universal Description, Discovery and Integration)은 서비스 브로커를 의미하는 것으로 검색 엔진과 동일한 개념이다. UDDI에 등록되는 항목은 특정 서비스를 제공하는 기관의 이름과 그 기관에서 제공하는 XML 웹 서비스의 내용, 웹 서비스의 분로, tModel이다. 특히 UDDI문서 형식으로 정의된 웹 서비스를 Type Model 또는 tModel이라고 하는데, 개발자가 사용해야 하는 해당 웹 서비스의 설명을 가지고 있다. UDDI을 운영하는 곳은 Oracle, Microsoft, IBM, SAP 등이 있으면 이와 같이 일반사람들이 공유해서 사용하는 UDDI를 USR이라 하며 이와 달리 개인이나 회사 내부에서만 사용하기 위해 개별UDDI를 구성하는 것을 Private UDDI라 한다.

3. 웹 서비스 구성 요소
웹 서비스 요청자(소비자)가 제공자(공급자)가 제공하는 웹 서비스를 사용하는 과정을 보면 다음과 같다.
UDDI(discovery)
WSDL(API description)
SOAP(messaging)
XML(lingua france)
HTTP(transport)

  1. 웹 서비스 제공자는 자신의 웹 서비스를 공개하기로 결정하여 UDDI에 웹 서비스를 배포한다.
  2. 웹 서비스 소비자는 자신이 원하는 웹 서비스를 UDDI를 이용해 찾는다. 검색 결과 원하는 웹 서비스가 있어 그 웹 서비스를 사용하기로 한다.
  3. 웹 서비스 소비자는 웹 서비스 제공자에 접속해서 WSDL을 가져오고, 웹 서비스에 대한 정보를 확인한 후 웹 서비스 제공자에 접속할 준비를 한다.
  4. 웹 서비스 소비자는 SOAP프로토콜을 사용해서 웹 서비스 제공자에 서비스를 요청하고, 제공자는 결과를 돌려준다.
참고 : 웹 서비스는 만능이 아니다.
웹 서비스는 분명 좋은 기술임에 틀림없다. 하지만 웹 서비스가 항상 좋은 것은 아니다. 만약 동일한 아키텍처로 여러 시스템이 구축된다면 굳이 웹 서비스를 도입할 필요가 없다. 웹 서비스가 이기종 간의 통합에 큰 역할을 할 수 있지만 그에 따른 시스템 오버헤드 또한 무시할 수 없다. 아무래도 동일한 아키텍처에서 최고의 성능을 내도록 디자인된 시스템에 비해 웹 서비스는 많은 것을 희생해야 한다. 하지만 앞으로 시스템이 어떻게 확장될지는 모르는 것이기 때문에 시스템을 구축할 때 웹 서비스를 고려해서 기존 시스템 아키텍처를 최대한 활용해야 한다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...