[IT]/MSA

[MSA] REST Web Service 성숙도 모델 (REST Maturity Model)

ee2ee2 2022. 5. 9. 16:15
728x90
반응형

성숙도 모델을 통한 REST Web Service의 성숙도 판단하기

  • Leonard Richardson이 REST 서비스 성숙도 모델을 고안함.
  • 레벨 0 : 단일 URI와 단일 동사로부터 레벨 3 : HATEOAS까지 총 네 단계로 구성되어 있음.
  • 레벨 2 부터 진정한 RESTful 서비스 수준에 도달했다고 말할 수 있음. 

 

성숙도 모델 레벨 별 요약

Level 3 : HATEOAS 클라이언트 요청에 따른 응답에 하이퍼미디어 컨트롤을 포함하고 있어서 클라이언트가 다음에 어떤 액션을 할 지 안내한다. 리소스를 표현하는 것 이상의 정보를 갖고 있어서 RESTful에 대한 논쟁이 있다.
Level 2 : HTTP Verbs POST와 더불어 GET, HEAD, DELETE, PUT을 사용하며, 진정한 REST 서비스 단계에 도달했다. 요청에 따라 적절한 메소드를 사용하며 여러 리소스를 갖추었다.
Level 1 : Resources POST 메소드를 사용하며 메소드와 인자를 사용하는 대신에 REST URI을 사용한다. (메소드 하나만 사용) 복잡한 기능을 여러 리소스로 나누어 표현한다.
Level 0 : The Swamp of Plain Of XML SOAP이나 XML-RPC로 XML 메시지를 전송하며 POST 메소드 만을 사용한다. SOA(Service Oriented Architecture) 어플리케이션을 구축하는 가장 원시적인 형태이다.

레벨별  예제 살펴보기

1) Level 0 : The Swamp of Plain Of XML

RPC(Remote Procedure Call)을 사용하고, Serialized 된 전체 doc을 리턴한다.


2) Level 1 : Resources

분할 정복 방법을 사용하여 복잡성을 처리하고, 대규모 서비스 엔드포인트를 여러 리소스로 나눈다.  POST 메소드를 사용하며 메소드와 인자를 사용하는 대신에 REST URI을 사용한다. (메소드 하나만 사용) 복잡한 기능을 여러 리소스로 나누어 표현한다.


3) Level 2 : HTTP Verbs

표준 HTTP Verb(동사) 세트를 적용하여 유사한 상황을 동일한 방식으로 처리하여 불필요한 변형을 제거하였다. POST와 더불어 GET, HEAD, DELETE, PUT을 사용다. 요청에 따라 적절한 메소드를 사용하며 여러 리소스를 갖추었다


4) Level 3 : HATEOAS (Hypermedia As The Engine Of Application State)

프로토콜을 자체 문서화하는 방법을 제공하는 검색 가능성을 도입하였다. 클라이언트 요청에 따른 응답에 하이퍼미디어 컨트롤을 포함하고 있어서 클라이언트가 다음에 어떤 액션을 할 지 안내한다.

예를 들어, RESTful API는 웹사이트에 비유할 수 있다. 사용자로서 웹사이트의 루트 URL만 알고 있을 때, URL을 입력하거나 링크를 클릭하면 모든 추가 경로와 작업은 다른 링크에 의해 정의된다. 이러한 링크는 언제든지 변경될 수 있지만 사용자로서 루트 URL만 알고 있으면 여전히 웹사이트를 사용할 수 있다.