메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

웹 서비스와 관련된 질문 중에서 가장 많이 언급되는 10가지 질문

한빛미디어

|

2002-10-23

|

by HANBIT

12,260

저자: 『Web Service Essentials』의 저자 에단 크라미(Ethan Cerami),역 한빛리포터 이상화

웹 서비스는 분산시스템을 제작이 중요한 진화적 과정을 거치고 있다는 것을 의미한다. 그러나 사람들은 웹 서비스가 정확히 무엇을 말하는 것이며 웹 서비스 프로토콜 스택(stack)이 무엇인지, W3C가 지원하고 있는 웹 서비스 표준이 존재하는지에 대해서는 잘 알고 있지 못하는 것 같다.

본 기사는 웹 서비스와 관련된 질문 중에서 가장 많이 언급되는 10가지 질문에 대한 해답이다. 따라서 독자들은 웹 서비스 개요뿐만 아니라 좀더 세부적인 내용도 충분히 참고할 수 있을 것이다.

1. 웹 서비스란 무엇인가?

웹 서비스 정의에 대해 많은 논란이 있었다. 그렇지만 사람들의 공통적인 의견을 추린다면 웹 서비스란 인터넷을 통해 표준화된 XML 메시지 시스템을 사용하는 소프트웨어의 작은 조각이라고 말할 수 있다.

XML은 웹 서비스의 모든 통신을 인코딩 하는데 사용된다. 예를 들어 클라이언트는 XML 메시지를 통해 웹 서비스를 시작하며 요청에 대응하는 XML 응답을 기다린다. 결국 XML을 사용하여 모든 통신이 이루어지기 때문에 웹 서비스는 특정한 OS나 언어에 구애받지 않는다. 이는 곧 자바와 펄(Perl)이 서로 통신할 수 있고 윈도우 애플리케이션과 유닉스 애플리케이션도 통신할 수 있다는 뜻이다.

이러한 기본적인 정의 이외에도 웹 서비스는 아래와 같은 두 가지 추가적인 속성을 가지고 있다.
  • 첫째, 웹 서비스는 XML로 정의된 공개 인터페이스를 가진다. 인터페이스는 클라이언트가 사용할 수 있는 메소드를 정의하고 메소드에 대한 용법을 설명한다. 현재 인터페이스 정의는 WSDL(Web Service Description Language)를 통해서 이루어진다. (FAQ 7번 참고)
  • 둘째, 웹 서비스를 작성한다면 그것을 발행(Publish)하기 위한 단순한 메커니즘이 필요하다. 마찬가지로 인터페이스를 공개하거나 서비스를 사용하고자 하는 곳에 제공하기 위한 메커니즘도 필요하다. 현재 유력한 웹 서비스 디렉토리 서비스는 UDDI(Universal Description, Discovery, and Integration)을 통해 이루어지고 있다. (FAQ 8번 참고)
웹 서비스는 현재 뉴스 배급회사와 같은 거대한 시스템을 비롯하여 날씨, 주식 정보, 배송추적과 같은 세부적인 시스템에까지 운영되고 있다. 현재 사용가능한 웹 서비스의 범위를 보고싶다면 웹 서비스 디렉토리인 XMethods를 방문해보자.

2. 웹 서비스에서 새로워진 점은?

사람들은 지금도 RPC(Remote Procedure Calls)을 사용하고 있다. 그리고 과거에도 HTTP를 통해 RPC를 전달하는 방법을 모르고 있었던 것은 아니다.

그렇다면 과연 무엇으로 인해 웹 서비스가 과거 기술과는 달리 새로워졌다는 것인가? 정답은 XML이다.

XML은 웹 서비스의 핵심이며 RPC, 웹 서비스, 웹 서비스 디렉토리를 기술하는 공통 언어를 제공한다.

XML이전에도 다른 애플리케이션 간에 데이터를 공유할 수 있었지만 XML은 이것을 좀더 쉽게 할 수 있게 해주었다. 같은 맥락으로 웹 서비스 없이도 코드와 서비스를 공유할 수 있었지만 XML로 인해 같은 기능을 좀더 수월하게 수행할 수가 있게 되었다.

XML으로 모든 것을 표준화시킴으로써 서로 다른 애플리케이션은 좀더 편하게 상대방과 통신할 수 있고 이로 인해 소프트웨어에 대한 관심이 증가되고 있다.

3. 웹 서비스에 대한 글은 읽었지만 실제로 웹 서비스가 동작되는 것은 본적은 없다. 웹 서비스가 실행되는 것을 보여줄 수 있는가?

웹 서비스에 좀더 관심이 있다면 IBM Alphaworks 사이트에 있는 IBM 웹서비스 브라우저를 실행해 보아라. 이 브라우저는 웹 서비스 데모를 제공하고 있다. 브라우저 화면 뒤에서는 SOAP, WSDL, UDDI 기술이 웹 서비스 검색과 실행을 위한 단순한 plug-and-play 인터페이스를 제공하기 위해 작동되고 있다. 예를 들어 주식 시세 서비스, 교통 정보 서비스, 날씨 정보 서비스를 발견했다면 각각의 서비스는 독립적으로 작동되기 때문에 건물 벽돌처럼 쌓을 수 있다. 그러므로 여러 개로 된 서비스 결과를 마치 my.yahoo, my.excite처럼 하나의 페이지에 담을 수 있다.


참고 기사: 아마존의 새로운 웹 서비스 사용하기

위에서 예로든 IBM Alphaworks 사이트 말고도 한빛미디어 네트워크 페이지에 등록된
「아마존의 새로운 웹 서비스 사용하기」에서
웹 서비스에 대한 더 자세한 내용을 참고할 수 있습니다.



4. 웹 서비스 프로토콜 스택(stack)은 무엇인가?

웹 서비스 프로토콜 스택은 웹 서비스 정의, 발견, 실행을 위해 사용되는 프로토콜의 집합이다. 핵심 프로토콜 스택은 다음과 같이 4개의 층(layer)으로 이루어져 있다.
  • 서비스 전송 계층: 애플리케이션 간 메시지 전송의 책임이 있다. 현재 HTTP, SMTP, FTP와 BEEP(Blocks Extensible Exchange Protocol) 같은 새로운 프로토콜을 포함한다.
  • XML 메시지 계층: 종단(end)에서 메시지가 해석되기 위해 공통된 XML 포맷으로 메시지를 인코딩 해야 하는 책임이 있다.
  • 서비스 기술(description) 계층: 웹 서비스를 설명하기 위해 공개 인터페이스를 기술해야 하는 책임이 있다. 현재 WSDL이 사용된다.
  • 서비스 발견(discovery) 계층: 공통 레지스트리로 서비스를 집중화시키거나, 발행(publish)/검색(find) 기능을 제공해야 하는 책임이 있다. 현재 UDDI가 사용된다.
웹 서비스의 본질을 이루고 있는 XML-RPC, SOAP, WSDL, UDDI 이외에도 웹 서비스 프로토콜 스택은 WSFL (Web Services Flow Language), SOAP-DSIG (SOAP Security Extensions: Digital Signature), USML (UDDI Search Markup Language)과 같은 새로운 프로토콜을 포함하고 있다. 이러한 프로토콜을 자세히 알려면 오라일리 on XML.com에 있는 Pavel Kulchenko의 기사 「Web Services Acronyms, Demystified」를 참고하기 바란다.

다행하게도 웹 서비스를 구현하기 위해서 이러한 전체 프로토콜 스택을 이해 해야 할 필요는 없다. HTTP에 대해서 알고 있다면 XML 메시지 층위에서 웹 서비스를 실행해 볼 수 있기 때문이다.


Web Services Essentials

참고 도서

Web Services Essentials
Ethan Cerami




5. XML-RPC는 무엇인가?

XML-RPC는 RPC를 수행하기 위해 XML 메시지를 이용하는 프로토콜이다. 요청은 XML로 인코딩 되며 HTTP POST 메소드를 통해 전송된다. XML 응답은 HTTP 응답 메시지 안에 포함되어 있다.

좀더 보기 쉽게 표현한다면 "XML-RPC = HTTP + XML + RPC"라고 할 수 있다.

XML-RPC는 플랫폼 독립적이기 때문에 다양한 애플리케이션과 통신 할 수 있다. 예를 들어 자바 클라이언트는 XML-RPC를 통해 펄 서버와 대화 할 수 있다.

XML-RPC를 좀더 빨리 이해할 수 있게 날씨 정보 서비스에 대한 XML-RPC 요청(request) 예를 들어보겠다. (HTTP 헤더는 생략)


   weather.getWeather
   
      10016
   

요청은 단순한 요소로 이루어져 있다. 이것은 메소드 이름(getWeather)과 메소드 파라미터(zip code)를 가지고 있다.

날씨 정보 서비스에 대한 XML-RPC 응답(response)은 다음과 같다.


   
      
         65
      
   

응답은 리턴 값(현재 온도)을 포함하고 있는 하나의 요소로 구성되어 있다. 이 경우에 리턴 값은 정수 값이다.

다양한 방법으로 XML-RPC는 SOAP보다 단순해 질 수 있기 때문에 웹 서비스를 가장 쉽게 시작할 수 있는 방법이다.

공식적인 XML-RPC 스펙은 XML-RPC.com에서 참고할 수 있다. 위 사이트에서는 펄, 파이썬, 자바, 루비(Ruby)로 이루어진 XML-RPC를 시험해 볼 수 있다. 완전한 실행 목록을 보려면 XML-RPC 홈페이지를 방문해 볼 것을 권장한다.

6. SOAP은 무엇인가?

SOAP은 컴퓨터 사이에서 정보를 교환하기 위한 XML 기반 프로토콜이다. 비록 SOAP이 다양한 메시지 시스템에서 사용될 수 있고, 다양한 전송 프로토콜 위에서 전달될 수 있지만, 중요한 것은 HTTP를 통해 RPC가 가능하다는 것이다. XML-RPC처럼 SOAP도 플랫폼 독립적이기 때문에 다양한 애플리케이션의 상호통신이 가능하다.

이해를 돕기 위해서 날씨 정보 서비스 요청에 대한 SOAP 메시지 예를 살펴보도록 하자. (HTTP 헤더는 생략)


   
      10016
      
   

보다시피 이 요청은 XML-RPC보다 다소 복잡하고 XML 네임스페이스와 XML 스키마를 사용하였다. XML-RPC와 비슷하게 요청의 바디부분은 메소드 이름(getWeather)과 파라미터 목록(zipcode)을 가지고 있다.
Programming Web Services with SOAP


날씨 정보 서비스 SOAP 응답은 다음과 같다.

   
      
         65
      
   

응답은 단순한 정수 리턴 값(현재 온도)을 나타내고 있다.

W3C는 SOAP 표준 제정을 진행하고 있다. 최근 개발 초안은 SOAP 1.2 이며 두 부분으로 나뉘어 졌다. Part 1은 SOAP 메시지 프레임워크와 엔빌로프(envelop) 스펙을 기술하고 Part 2는 SOAP 인코딩 법칙과 SOAP-RPC 규약, HTTP 바인딩을 기술하고 있다.

7. WSDL은 무엇인가?

WSDL(Web Services Description Language)은 현재 웹 서비스 프로토콜 스택 층 위에서 서비스 기술(description)층을 나타내고 있다. 간단히 말해 WSDL란 웹 서비스의 공개 인터페이스를 설명하기 위한 XML 문법이다. 공개 인터페이스는 다음과 같은 것들을 포함한다.
  • 공개적으로 사용할 수 있는 기능들의 정보
  • XML 메시지를 위한 데이터 타입 정보
  • 사용된 전송 프로토콜에 관한 바인딩 정보
  • 특정한 서비스 위치에 관한 주소 정보
WSDL은 XML 메시지 시스템에 꼭 필요한 것은 아니지만 SOAP 메시지를 기술하기 위한 빌드인 익스텐션(built-in extensions)을 포함하고 있다.

다음은 WSDL 예제이다. 이것은 이전 SOAP 예제에서 사용된 날씨 정보 서비스에 대한 공개 인터페이스를 기술하고 있다. 이 예제를 이해하려면 많은 것을 알아야 하지만 일단은 두 가지만 생각해보자.
첫째, 요소는 컴퓨터사이에서 전송되는 각각의 XML 메시지를 설명한다. 이 경우에는 getWeatherRequest, getWeatherResponse를 가지고 있다. 둘째, 요소는 SOAP과 특정 URL을 통해서 사용 가능한 서비스를 설명하고 있다.



   
      
   
   
      
   

   
      
         
         
      
   
   
   
      
      
         
         
            
         
         
            
         
      
   

   
      WSDL File for Weather Service
      
         
      
   

WSDL을 사용해서 클라이언트는 웹 서비스의 위치를 지정할 수 있고 공개적으로 사용 가능한 기능들을 불러 낼 수도 있다. WSDL을 감지하는 유틸리티를 통해 모든 프로세스는 자동적으로 수행되며 새로운 서비스는 부가적인 작업 없이 쉽게 애플리케이션에 통합 될 수 있다. 예를 들자면 Mind Electic사의 GLUE 플랫폼을 참고하기 바란다.

WSDL은 W3C에 제출되었지만 현재까지 공식적인 위치를 가지고 있지 않다. 최근 초안인 W3C 페이지를 참고하기 바란다.

8. UDDI는 무엇인가?

UDDI(Universal Description, Discovery, and Integration)는 웹 서비스 프로토콜 스택에서 서비스 발견 계층을 나타낸다.

UDDI는 원래 마이크로소프트(Microsoft), IBM, 아리바(Ariba)에 의해서 만들어 졌고, 웹 서비스와 비즈니스를 발행(publish)/검색(Find)하기 위한 기술적인 스펙을 나타낸다.

UDDI는 다음과 같이 두 부분으로 구성되어 있다.
  • 첫째, UDDI는 비즈니스와 웹 서비스에 대한 분산 디렉토리를 만들기 위한 기술적인 스펙이다. 데이터는 특정한 XML 포맷으로 저장되고, UDDI 스펙은 존재하는 데이터를 검색하고 새로운 데이터를 발행하기 위한 세부적인 API를 포함하고 있다.
  • 둘째, UBR(UDDI Business Registry)는 UDDI 스펙에 대한 완전한 실행 방법이다. 2001년 5월 마이크로소프트와 IBM에 의해서 시작된 UDDI 레지스트리는 누구나 UDDI 데이터를 검색해 볼 수 있고 기업은 그들의 서비스를 등록할 수도 있다.
그리고 UDDI의 데이터의 범주를 크게 나누면 다음과 같이 세 가지 카테고리로 나뉜다.
  • White 페이지: 회사에 대한 일반적인 정보를 포함하고 있다. 예를 들면 비즈니스 이름, 비즈니스 세부내용, 비즈니스 주소가 있다.
  • Yellow 페이지: 회사나 서비스가 제공하는 분류된 데이터를 포함하고 있다. 예를 들면 표준 분류법을 토대로 산업별, 제품별, 지리적 코드별로 나뉜 데이터를 가지고 있다.
  • Green 페이지: 웹 서비스에 대한 기술적인 정보를 포함하고 있다. 일반적으로 외부 스펙을 가리키거나 웹 서비스 호출에 대한 주소를 가지고 있다.
마이크포소프트 UDDI 사이트, IBM UDDI 사이트를 참고하고 완전한 UDDI 스펙은 uddi.org에서 사용할 수 있다.
XML-RPC 프로그래밍


UDDI 2의 베타버전은 아래 링크에서 이용할 수 있다.
9. 웹서비스를 어떻게 시작할 것인가?

웹 서비스를 시작하는 가장 쉬운 방법은 XML-RPC를 이용하는 것이다. XML-RPC 스펙이나 필자의 책 『Web Service Essentials』나 사이먼 세인트 라우런트(Simon St. Laurent), 조 존스턴(Joe Johnston), 에드 덤빌(Edd Dumbill)이 함께 쓴 『Programming Web Services with XML-RPC』를 참고하자.

일단 XML-RPC의 기초를 익히고 난 후 SOAP, WSDL, UDDI를 차근차근 배우면 된다. 이러한 주제들은 모두 『Web Service Essentials』에서 다루고 있다. SOAP에 대해 더 자세한 내용을 알고 싶다면 더그 디드웰(Doug Tidwell), 제임스 스넬(James Snell), 파벨 쿨첸코(Pavel Kulchenko)가 쓴 『Programming Web Services with SOAP』을 참고하면 된다.

10. W3C는 웹 서비스 표준을 지원하고 있는가?

W3C(World Wide Web Consortium)는 활발하게 웹 서비스 프로토콜 표준화를 추진하고 있다. 2000년 11월 W3C는 XML Protocol Activity를 설립했다. 이 그룹의 목표는 SOAP의 정식 표준을 제정하는 것이다. SOAP 1.2 초안은 현재 검토 중이며 공식적인 W3C의 권고 안을 통해 진행중이다.

2002년 2월 25일 W3C는 Web Service Activity 조직 편성을 발표하였다. 이 새로운 조직은 두 개의 새로운 작업 그룹뿐만 아니라 현재의 SOAP 작업그룹도 포함하고 있다. 첫 번째 그룹은 WSDL에 관한 웹 서비스 기술 작업과 관련된 것이며, 두 번째 그룹은 웹 서비스 프로토콜 프레임워크에 대한 웹 서비스 구조를 만드는 활동이다.

W3C의 Web Service Activity에 대한 더 자세한 정보를 얻고 싶다면 오라일리 XML.com을 들어가서 에드 덤빌(Edd Dumbill)의 기사 「Welcome Web Services Activity」를 참고하기 바란다.
TAG :
댓글 입력
자료실

최근 본 책0