Dev.GA

[REST] REST란 무엇인가? REST맛보기 본문

Dev.Back-End/RESTful

[REST] REST란 무엇인가? REST맛보기

Dev.GA 2018. 4. 4. 16:20

[REST] REST란 무엇인가? REST맛보기




 REST란 무엇인가?


REST는 Representational State Transfer의 약자로 월드와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식이다. REST란 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었는데 로이 필딩 박사는 당시 사용되는 웹 아키텍쳐가 웹의 본래 설계의 우수성을 활용하지 못한다 하여 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐를 제안하였고 이 개념은 네트워킹 문화에 널리 펴졌다고 한다. 이를 간단히 RESTful 웹 서비스라고 부른다.


REST는 '네트워크 아키텍쳐 원리'의 모음으로써, 여기서 '네트워크 아키텍쳐 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 의미한다. 간단히, SOAP과는 다르게 별도의 전송계층 없이 웹의 자원을 전송하기 위한 인터페이스를 뜻한다.


그렇다면 SOAP와는 어떠한 차이가 있는지 알아보자.



 SOAP vs REST


  • SOAP 
    - SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML기반의 메세지를 네트워크상에서 교환하는 프로토콜이다.

    SOAP 기반의 서비스는 SOA의 개념을 실현하기 위한 기술이다.
    SOA(Service Oriented Architecture)란 서비스 지향 아키텍쳐라는 뜻으로 대규모 시스템을 구축 시 시스템의 각 업무(기능)를 비즈니스적인 의미를 갖는 서비스라는 단위로 묶어 조합하여 시스템을 구축하는 소프트웨어 아키텍쳐를 의미한다.

    SOAP에서는 모든 데이터가 XML로 표현되며, 데이터와 데이터를 다루는 오퍼레이션들이 WSDL로 정의되면 UDDI라는 전역적인 서비스 저장소에 등록되어 누구라도 서비스를 찾을 수 있도록 공개된다. 여기서 WSDL이란 Web Services Description Language의 약자로 웹 서비스 기술언어 또는 기술된 정의 파일의 총칭으로 기술된 XML이며, UDDI는 웹서비스를 등록하고 검색하기 위한 저장소로 웹서비스를 공개적으로 접근, 검색이 가능하도록 공개된 레지스트리이다.

    위의 정의에서 나온것처럼 SOAP은 HTTP, HTTPS, SMTP등을 통해 XML기반의 메세지를 네트워크상에서 교환하는데 아래 그림과 같이 Envelope, Header, Body로 구성된 XML문서로 표현되며, 복잡한 구조를 가져 HTTP상에서 전달되기 무겁고 메세지의 인코딩/디코딩 과정 등 개발하는데 난이도가 높다.


  • REST 
    - REST에 대한 정의는 위에서 다루었고 REST의 원리를 따르는 시스템을 RESTful이라고 부른다.

    RESTful 기반의 서비스는 ROA의 개념을 실현한 기술이다.
    ROA(Resource Oriented Architecture)란 자원 지향 아키텍쳐라는 뜻으로 RESTful 인터페이스 자원의 형태로 소프트웨어를 설계 및 개발을 위한 소프트웨어 아키텍쳐와 프로그래밍 패러다임의 스타일이다. 한마디로 ROA는 REST를 위한 아키텍쳐라고 볼 수 있다.

    RESTful 서비스란 HTTP프로토콜로 데이터를 전달하는 프레임워크이다. RESTful 서비스는 클라이언트와 서버간의 구성요소를 엄격하게 분리하여 구현을 단순화하며 확장성을 향상시킨다는 점에서 SOAP와 큰 차이를 보이고 있다.

    이 중에서도 REST의 핵심은 WEB에 개방된 리소스를 이용하여 원격으로부터 리소스들을 쉽게 이용할 수 있도록 만들어졌다. 


  • SOAP과 REST 비교하기








비교1.

SOAP는 구조에 따라 UDDI레지스트리를 통해서 웹서비스를 등록, 검색, 바인딩하여 사용하며

RESTful의 경우 리소스를 등록하고 저장해두는 중간 매개체 없이 리소스 제공자가 리소스 요청자에게 직접 제공한다.


비교2.

SOAP는 상호통신하는데 있어 프로그램들이 잘 이해할 수 있는 문법에 따라 개발되었으며 이에 따라 기술적으로 맞는 개발 프로그래밍 능력이 요구된다. 

반면, RESTful은 인터넷 서비스 업체들이 개발자들에게 손쉬운 데이터를 제공하자는 목적에 출발하여 SOAP와 비교해 쉽게 개발/이용 할 수 있다.


비교3.

비교2와 함께 보면 SOAP은 사람보다 기계가 우선적으로 이해하기 쉬운 구조인 반면

RESTful은 기계보다 사람이 이해하기 쉽게 인터넷 기본(HTTP/XML) 구조로 별도의 환경이 필요없다는 장점이 있다.




이번 포스팅은 RESTful에 대한 학습을 시작하기전 SOAP과 비교를 통해 RESTful에 대한 맛보기를 진행하였다.

다음 포스팅을 통해 RESTful에 대해 더욱 깊고 자세히 알아보도록 하겠다.


'Dev.Back-End > RESTful' 카테고리의 다른 글

[REST] RESTful 웹서비스 만들기  (0) 2018.05.11
[REST] RESTful 파헤치기  (0) 2018.04.13
Comments