본문 바로가기

Java

API -클라이언트/서버


이런 웹사이트 주소가 있습니다. 

위 주소에서 HTTP는 HyperText Transfer Protocol의 약자입니다.

HyperText는 link가 포함된 텍스트를 의미합니다.

transfer protocol은 "한 장소로부터 무엇인가를 확보하여 다른 곳으로 이동시키는 규칙"을 말합니다. 

이 규칙은 웹페이지를 웹브라우저로 이동시키는 것에 관한 것입니다.

아래는 DopZa.com 이라는 웹페이지에 대하여 정보를 요청하는 JavaScript 코드입니다.


var xhr = new XMLHttpRequest();

xhr.open("GET", "http://www.dopza.com/", false);

xhr.send();

console.log(xhr.status);

console.log(xhr.statusText);


클라이언트/서버 관계

위 예제의 실행결과는 


200

OK


입니다.

 

인터넷에서는 웹페이지에 관한 정보를 얻기 위하여 HTTP를 사용합니다. 

그런데 이러한 웹페이지는 도대체 어디에서 가져올까요?

웹페이지는 서버라고 하는 인터넷 상에 있는 다른 컴퓨터로부터 가져옵니다.

인터넷은 웹페이지, 파일 등 다양한 자원을 요구하는 많은 클라이언트와 그러한 다양한 정보를 저장하고 있는 서버로 구성되어 있습니다.

HTTP request를 작성하면, 이 request는 이 request에 응답하여 그 결과를 제공하는 방법을 알고 있는 서버를 발견할 때까지 인터넷의 세계를 빠르게 순회합니다. 

그러다 적절한 서버를 만나면 그 서버가 클라이언트에게 response를 보냅니다.

서버 1대는 한 번에 여러 개의 requests를 처리합니다.

 

client/server 관계는 REST(Representational StateTransfer)  라고 하는 규칙의 전제조건입니다. 

link를 클릭하여 여러 웹사이트를 순회하는 것은 바로 상태이전(state transition)을 하고 있는 것입니다.

이러한 상태이전을 통하여 다음 페이지로 이동하게 되는 것입니다.

즉, 애플리케이션의 다음 상태를 representing 하는 것입니다.

클릭을 통하여 어떤 웹페이지에서 다른 웹페이지로 이동하는 모습을 보면 REST 원칙을 쉽게 이해할 수 있습니다.

 

REST원칙에 따르는 것을 RESTful하다고 합니다.


REST는 HTTP 상에서 일반적으로 가동되는 연결이 단절되는 단순한 구조입니다.


REST는 구조적 스타일이며, 웹서비스의 개발에 자주 사용되는 커뮤니케이션에 대한 접근방식입니다.

REST이 보다 무거운 SOAP (Simple Object Access Protocol) style보다 자주 사용되는 이유는 REST는  bandwidth를 많이 사용하지 않기 때문인데, 밴드대역을 많이 사용하지 않으면 인터넷에서의 사용이 보다 적합해지기 때문입니다.

SOAP 방식에서는 데이터를 서브할 제공된 서버 프로그램과 데이터를 요청할 클라이언트 프로그램의 작성 또는 사용이 필요합니다.

REST는 그 연결이 단절된 구조, 그리고 생산자와 소비자사이의 보다 가벼운 커뮤니케이션 때문에Amazon, Microsoft, Google이 제공하는 클라우드 기반의 API에 대하여 인기있는 빌딩스타일이 되었습니다.

웹서비스가 REST 구조를 사용할 때, 이것을 RESTful APIs (Application Programming Interfaces) 또는 REST APIs라고 합니다.

REST 구조는 XML 파일이 포함된 지정된 웹페이지를 읽도록 되어 있습니다.

XML 파일은 요구되는 컨텐트를 서술하고 포함하고 있습니다.

일단 동적으로 정의되면, 소비자는 interface에 접근할 수 있습니다.

일반적으로 HTTP에서 가동되는 REST는 몇 가지 구조적 제약사항을 갖고 있습니다. 

1. 소비자를 생산자로부터 단절시킴 

2. Stateless existence

3. cache를 활용할 수 있음

4. layered system을 활용함

5. 통일된 interface를 활용함


REST는 모바일 애플리케이션, 소셜네트워킹 웹사이트, mashup 도구, 그리고 자동화된 비즈니스 프로세스에 자주 사용됩니다.

REST style은 클라이언트와 서비스 사이의 상호작용은 제한된 수의  operations (동사들)를 가짐으로써 강화된다는 점을 강조합니다.

resources (명사들)에게 유일한 Universal Resource Identifiers(URIs)를 할당함으로써 유연성이 제공됩니다.

각각의 동사는 특정한 의미(GET, POST, PUT, DELETE)를 갖고 있기 때문에, REST는 모호성이 없어집니다.

몇 가지 단점도 있습니다.

REST는 서버에서 생성된 metadata로부터 클라이언트를 생성하는 것을 직접적으로 지원하지 않습니다.

그런데 SOAP는 Web Service Description Language (WSDL)로 이것을 지원합니다.

REST는 특히 SOAP에 비하여 다음과 같은 장점을 갖고 있습니다. 

  • RESTful 웹서비스는 무료이고 비싸지 않은 많은 도구로 쉽게 활용할 수 있습니다. REST는 RESTful 웹서비스의 사용을 포함한 시스템 상호작용에서 dial tone이 되고 있습니다. RESTful 웹서비스는 대부분이 클라우드 제공자가 자신의 클라우드 서비스를 외부화하는 수단입니다.
  • SOAP 서비스는 RESTful 서비스보다 확장하기가 매우 어렵습니다. 따라서, REST는 자주 인터넷을 통하여 노출되는 서비스(Facebook, MySpace, Twitter, 대부분의 public cloud 제공업자)에 대한 구조로 선택됩니다
  • 학습곡선은 감축됩니다. 개발자는 SOAP보다 빠르게 애플리케이션내에서 REST를 사용할 수 있습니다. 따라서 시간이 절약되고 비용이 절감됩니다.
  • REST는 SOAP보다 작은 메시지 포맷을 사용합니다. SOAP는 모든 메시지에 XML을 사용하기 때문에 메시지 크기가 많이 커지고 효율성이 떨어집니다. 이는 REST가 적은 비용은 물론 효율성이 높다는 것을 의미합니다. 또한, intensive processing가 필요하지 않기 때문에, 전통적 SOAP보다 훨씬 빨라집니다.
  • REST는 Open Internet/Web에서의 사용 목적으로 설계되었습니다. Web scale applications에는 REST가 적합한데, cloud-based platforms에는 보다 더 적합합니다.

REST는 기업들이 애플리케이션 및 인프라스트럭쳐 서비스를 위하여 개방되고 잘 정의된 인터페이스를 제공하는 것을 찾고 있기 때문에 계속하여 성장할 것입니다.

공개 및 사설 클라우드 컴퓨팅의 성장은 그 수요를 확대시키고 있으며 계속하여 성장할 것입니다.


 출처 | http://b2bhjlee.blog.me/220182903766


'Java' 카테고리의 다른 글

당신의 API가 Restful 하지 않은 5가지 증거  (0) 2015.10.27
RESTful API  (0) 2015.10.27
API Keys  (0) 2015.10.27
HTTP Status 405 - Request method 'POST' not supported  (0) 2015.10.27
[Spring] Restful API  (0) 2015.10.27