정보공간_1

[6기 강남 윤재석] SOAP & REST 본문

IT 놀이터/Elite Member Tech & Talk

[6기 강남 윤재석] SOAP & REST

알 수 없는 사용자 2014. 10. 15. 17:08


 




 


 


 안녕하세요. 삼성소프트웨어 멤버십 엘리트멤버 6기 윤재석입니다. 오늘은 SOAP과 REST에 대해서 이야기하고자 합니다.

 

.

SOAP(Simple Object Access Protocol)

 


  SOAP이란 위에 정의된 것 처럼 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜입니다. 

 

 

SOAP 장단점

 


SOAP의 장단점은 아래와 같습니다.


장점 

        * 기존 원격 기술들에 비해서 프록시와 방화벽에 구애 받지 않고 쉽게 통신이 가능하다.

        * 플랫폼과 프로그래밍 언어에 독립적이다.

        * 웹 서비스를 제공하기 위한 표준 (WSDL, UDDI, WS-*) 이 잘 정립되어 있다.

        * 에러 처리에 대한 내용이 기본으로 내장되어 있다.

        * 분산 환경에 적합하다.


단점

        * 복잡한 구조로 인한 오버헤드가 있으며, 이는 SOAP의 확장을 저해하고 있다.

        * REST에 비해 상대적으로 무겁고 속도도 느리다.

        * 개발 난이도가 높아 개발 환경의 지원이 필요하다.


 

<그림> SOAP 아키텍처




SOAP 아키텍처

 


  SOAP의 아키텍처는 크게 UDDI 레지스트리(UDDI registry), 서비스 요청자(Service requestor), 서비스 제공자(Service provider)로 구성됩니다. 서비스 공급자는 웹 서비스를 UDDI 레지스트리에 등록 (Publish)하며, 서비스 요청자는 웹 서비스를 UDDI 레지스트리에서 탐색 (Find) 합니다. 서비스 공급자와 서비스 제공자는 SOAP 형태로 인코딩된 메시지로 바인딩 (Bind) 합니다. 다시말하면 서비스 요청자는 SOAP으로 인코딩하여 웹 서비스를 요청합니다. 서비스 제공자는 이를 디코딩하여 적절한 서비스 로직을 수행시켜서 결과를 얻고 그 결과를 다시 SOAP으로 인코딩하여 반환합니다.

 


SOAP 메시지의 구조

 <그림> SOAP 메시지 구조




  SOAP 메시지는 HTTP 헤더를 포함하며, SOAP Envelope에 SOAP Header와 SOAP Body를 포함하도록 구성되어 있습니다. 

 

<그림> SOAP 메시지 코드레벨 예시










REST(REpresentational State Transfer)

 


  REST란 위에 정의된 것 처럼 HTTP를 통해 세션 트랙킹 같은 부가적인 전송 레이어 없이, 전송하기 위한 아주 간단한 인터페이스 입니다. 또한 HTTP 등의 기본 개념에 충실히 따르는 웹 서비스 입니다. 

 

  

 REST 장단점

 


REST의 장단점은 아래와 같습니다.


장점 

        * 플랫폼과 프로그래밍 언어에 독립적이다. ( = SOAP )

        * SOAP 보다 개발하기 단순하므로 학습곡선이 작고 도구가 거의 필요없다.

        * 간결하므로 추가적인 메시지 계층이 없다.


단점

        * Point-to-point 통신 모델을 가정하므로 둘 이상으로 상호작용하는 분산환경에는 유용하지 않다.

        * 보안, 정책 등에 대한 표준이 없다.

        * HTTP 통신 모델만 지원한다.

 


 REST 아키텍처

 


  REST의 아키텍처는 자원 요청자(Resource requester), 자원 제공자(Resource provider) 로 구성됩니다. REST는 자원을 등록하고 저장해주는 중간 매체 없이 자원 제공자가 직접 자원 요청자에게 제공합니다. REST는 기본 HTTP 프로토콜의 메소드인 GET/PUT/POST/DELETE를 이용하여 자원 요청자는 자원을 요청합니다.  자원 제공자는 다양한 형태로 표현된 (JSON, XML, RSS 등)의 리소스를 반환합니다.

 


REST 메시지의 구조

<그림> REST 메시지 코드레벨 예시

 



 Google Trend로 보는 SOAP과 REST

 

  Google Trend를 통해 SOAP과 REST 검색량 비교를 해본 결과 SOAP은 평행을 유지하고 있지만 REST는 급격히 상승하고 있는 것을 알게 되었습니다. SOAP이 견고하고 단단하지만 많은 제약을 갖고 있어서 확장에 불편함이 있는 것에 비해, 최근에는 REST 처럼 간편하지만 활용성이 높은 웹 서비스가 많아지고 있는 현상을 표현해주고 있다고 생각합니다.

 




 오늘은 SOAP과 REST에 대해 간단히 알아보는 시간을 가졌습니다. 다음 포스트에서는 안드로이드 프레임워크를 포팅하는 방법, 커널 포팅하는 방법 등 안드로이드 프레임워크에 대해서 이야기하는 시간을 갖도록 하겠습니다.






Written By Jaeseok Yoon, email : yjaeseok@gmail.com