웹 서비스의 아키텍처 스타일

웹 서비스는 REST(Representational State Transfer)와 연관된 문서 지향 스타일인 원격 프로시저 호출(RPC), 또는 REST-RPC라는 하이브리드 스타일을 나타낼 수 있습니다.

웹 서비스는 전통적으로 RPC 스타일을 사용해 왔습니다. 이 스타일은 함수를 호출할 때처럼 비즈니스 고유 조작 이름(예: UpdateEmployeeData)과 인수 세트를 사용합니다. 대부분의 경우 리턴값이 있습니다.

RESTful 스타일은 대부분 단일 비즈니스 데이터 단위의 전송을 기반으로 합니다. 이 서비스 구현은 필요한 모든 작업을 수행할 수 있으나, 조작 이름은 일반 이름입니다. 예를 들면, 조작 이름은 GET 또는 UPDATE가 될 수 있습니다.

RESTful 스타일은 세부사항을 숨깁니다. 예를 들면, 직원 레코드는 데이터에 수행되는 작업에 관계없이 몇 가지 방법 중 하나로만 처리된다고 표시됩니다. UpdateEmployeeData와 같은 비즈니스 고유 조작 이름은 수행하는 작업을 결정하는 데 영향이 없습니다.

REST-RPC 서비스는 비즈니스 고유 작업 이름을 사용합니다. 보통 이러한 서비스는 RPC 스타일의 데이터 교환을 사용하지만 기존 웹 서비스를 처리하는 경우 필요한 복잡한 관리 파일을 사용하지 않습니다.

RPC 스타일 SOAP 서비스

기존 웹 서비스는 데이터를 SOAP 형식으로 수신하고 리턴합니다. SOAP 엔벨로프는 HTTP 엔티티 본문의 기본 컨텐츠입니다.
<Envelope>
   <Header>
      <!-- SOAP Headers here, for QoS -->
   </Header>
   <Body>
      <!-- Business data -->
   </Body>
</Envelope>

SOAP 메시지는 복잡하지 않습니다. 헤더는 보안 및 서비스 조정을 지원함으로써 SOAP의 주요 이점을 제공합니다. 본문은 서비스 요청 중 서비스 구현에 의해 사용되거나 서비스 응답 중 요청자에 의해 사용되는 데이터를 저장합니다.

기존 웹 서비스에서 SOAP 엔벨로프의 컨텐츠는 복잡한 WSDL(Web Services Description Language) 파일의 컨텐츠와 관련되어 있습니다. 이러한 파일은 다음과 같은 경우에 사용됩니다.
  • 서비스 디자인 시, 서비스 인터페이스가 개발자 및 다른 디자이너와 통신하기 위해
  • 요청자 개발 시, 개발자가 서비스 내에서 교환될 데이터를 정의하는 프로세스에 도움을 주기 위해
  • 런타임 시, 서비스 위치를 지정하고 SOAP 메시지의 런타임 유효성 검증을 허용하기 위해

기존 기술을 사용하면 런타임 시에 요청자가 사용하는 WSDL 파일을 업데이트하여 요청자가 다른 위치에 있는 동일하게 이름 지정된 서비스에 액세스하도록 할 수 있습니다. 이 방법을 사용하면 합병 등을 동반하는 기술 변화에 빠르게 대응할 수 있습니다.

개발자 및 배치자는 WSDL 파일에 대해 작업하는 데 자동화된 도구를 사용합니다.

REST 서비스

일부 컨텍스트에서, REST 서비스는 RESTful 스타일을 구현하기 위해 웹 기능을 사용합니다. RESTful 스타일에서는 단일 비즈니스 데이터 단위(있는 경우)를 전송하며 좁은 범위의 조작 이름 세트를 사용합니다. 또한 서비스 주소는 조작 대상 데이터에 대한 정보를 포함합니다. 예를 들면, 세 개의 규정자로 구성된 다음 주소를 참고하십시오.
www.example.com/employee/123

이 주소는 웹 페이지를 가리키지 않고 두 번째 규정자로 표시된 바와 같이 직원에 대한 정보를 가리킵니다. 특히, 이 주소는 세 번째 규정자로 표시된 바와 같이 특정 직원(번호 123)에 대한 정보를 가리킵니다.

웹 사이트와 REST 서비스는 모두 여러 주소와 연관됩니다. 웹 사이트의 경우 주소는 웹 페이지에 대한 액세스를 제공합니다. REST 서비스의 경우 주소는 비즈니스 데이터 단위에 대한 액세스를 제공합니다.

REST 서비스는 다음 네 가지 조작 중 하나 이상을 제공합니다.
  • 데이터 읽기를 위한 GET
  • 데이터 작성을 위한 POST
  • 데이터 업데이트를 위한 PUT
  • 데이터 삭제를 위한 DELETE
이러한 조작은 HTTP 요청 메시지에 지정될 수 있는 주요 HTTP 메소드에 해당합니다.

REST 서비스는 일반적으로 WSDL 정의를 포함하지 않습니다.

REST 서비스에 HTTP 메시지가 사용될 때, 엔티티 본문은 보통 XML(Extensible Markup Language) 또는 JSON(JavaScript Object Notation) 양식으로 비즈니스 데이터를 저장합니다. 대부분의 경우에는 SOAP 엔벨로프가 없습니다.

SOA 런타임 소프트웨어가 QoS 문제를 더 잘 처리할 수 있도록 REST 서비스와의 데이터 교환에 SOAP 엔벨로프를 더 많이 사용하거나, 최소한 SOAP(또는 HTTP) 헤더라도 더 많이 사용하기를 원하는 작성자도 있습니다.

이 주제에 있는 정보는 REST 서비스와 SOAP 서비스 간의 차이를 나타내고 있으나, 사실 서로 극명하게 차이나는 것은 RPC 스타일과 RESTful 스타일입니다. REST에 대한 추가 세부사항은 "개발자를 위한 REST"를 참고하십시오.

추가 정보 소스

Richardson 및 Ruby의 저서인 Restful Web Services(O'Reilly Media, Inc., May 2007)에는 REST가 상세하게 소개되어 있습니다.

서비스 상호작용 및 몇 가지 RPC 관련 기술에 대한 개요는 Margolis 및 Sharpe의 SOA for the Business Developer(MC Press, May 2007)를 참조하십시오. 이 책에서는 다음 분야에 대한 개요도 제공합니다.
  • 웹 서비스에 사용되는 SOAP 형식의 기초이며 REST 서비스와 교환되는 메시지의 기초가 되기도 하는 XML(Extensible Markup Language)
  • XML을 유효성 검증하는 데 사용되는 코드인 XML 스키마

알림

앞서 제시된 자료의 일부는 Enterprise Web 2.0 with EGL(MC Press, 2009; http://www.mc-store.com/5107.html)의 자료입니다.