3.2.1 동기 RPI 패턴: REST
REST는 (거의 항상) HTTP로 소통하는 IPC입니다. 현재 API 개발은 REST 스타일이 대세입니다.11 다음은 창시자인 로이 필딩(Roy Fielding) 박사가 쓴 논문에서 인용한 단락입니다.
REST는 컴포넌트 상호 작용의 확장성, 인터페이스 일반화, 컴포넌트의 독립적 배포, 상호 작용 지연을 줄이기 위해 중간 컴포넌트, 보안 강화, 레거시 시스템의 캡슐화에 역점을 둔 아키텍처 제약 조건 세트를 제공한다.12
리소스는 REST의 핵심 개념입니다. Customer나 Product 같은 비즈니스 객체(들)를 의미하죠. REST는 HTTP 동사(verb)를 사용해서 URL로 참조되는 리소스를 가공(조작)합니다. 여러분도 알다시피, GET 요청은 대부분 XML 문서나 JSON 객체 포맷으로 리소스 표현형(representation)을 반환하고, POST 요청은 새 리소스를 생성하며, PUT 요청은 기존 리소스를 업데이트합니다. 예를 들어 주문 서비스에서 POST /orders는 Order를 생성하는 끝점, GET /orders/{orderId}는 Order를 조회하는 끝점입니다.
개발자는 대부분 자신이 작성한 HTTP 기반 API가 REST형(RESTful)이라고 주장하지만 로이 필딩 박사가 쓴 블로그 글13처럼 실제로 그렇지 않은 API도 많습니다. 그 이유를 이해하기 위해 먼저 REST 성숙도 모델을 알아봅시다.