REST의 장단점
REST는 다음과 같은 장점이 있습니다.
• 단순하고 익숙합니다.
• 포스트맨(Postman) 같은 브라우저 플러그인이나 curl 등의 CLI 도구를 사용해서 HTTP API를 간편하게 테스트할 수 있습니다.
• 요청/응답 스타일의 통신을 직접 지원합니다.
• HTTP는 방화벽 친화적(firewall friendly)18입니다.
• 중간 브로커가 필요하지 않기 때문에 시스템 아키텍처가 단순해집니다.
다음과 같은 단점도 있습니다.
• 요청/응답 스타일의 통신만 지원합니다.
• 가용성이 떨어집니다. 중간에서 메시지를 버퍼링하는 매개자 없이 클라이언트/서비스가 직접 통신하기 때문에 교환이 일어나는 동안 양쪽 다 실행 중이어야 합니다.
• 서비스 인스턴스(들)의 위치(URL)를 클라이언트가 알고 있어야 합니다. 요즘 애플리케이션은 서비스 디스커버리 메커니즘을 이용해서 클라이언트가 서비스 인스턴스 위치를 찾을 수 있으므로 큰 단점은 아닙니다(3.2.4절).
• 요청 한 번으로 여러 리소스를 가져오기 어렵습니다.
• 다중 업데이트 작업을 HTTP 동사에 매핑하기 어려울 때가 많습니다.
REST는 사실상 API 표준이지만 요즘은 흥미로운 대체 기술이 많습니다. 유연하고 효율적인 데이터 조회 기능을 자랑하는 GraphQL(8장)도 있고, 곧이어 설명할 gRPC도 REST를 대체 가능한 기술입니다.
18 단일 포트를 사용하고, 인터넷에서 서버 접속이 가능하며, TCP를 사용하는 등 방화벽 입장에서 쉽게 접근 가능한 특성을 지니고 있다는 뜻입니다.