본문 바로가기

Back-end

API 아키텍처 스타일의 비교: RPC vs SOAP vs REST vs GraphQL

API 아키텍처 스타일의 비교: RPC vs SOAP vs REST vs GraphQL

이 글에서는 네 가지 주요 API 스타일을 설명하고, 강점과 약점을 비교하고, 각각에 가장 적합한 시나리오를 강조합니다.

 

Remote Procedure Call (RPC)

원격 프로시저 호출. 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술. 분산 네트워크 환경에서 더 편하게 프로그래밍하기 위해 등장.

특징: 다양한 언어를 가진 환경에서 쉽게 확장, 비즈니스 로직에 집중하여 생산성을 증가 / 시스템과의 coupling

사용 사례: Facebook (Apache Thrift), Twitch (Twirp), 외부 API나 API 서비스가 아닌 내부 마이크로서비스에 적합

 

SOAP (Simple Objects Access Protocol)

envelope/header/body로 구성되는 메시지. API 규약과 정의는 WSDL (Web Service Description Language)로 작성됨.

특징: 엔터프라이즈 급 트랜잭션에 적합한 보안 체계 / XML only. Heavyweight.

사용 사례: 고도로 표준화 된 사례에 적합(billing, pament,...). 기업 간 통합에(integration) 자주 사용됨.

 

REST (Representational State Transfer)

6가지 제약 조건(uniform interface, stateless, caching, client-server architecture, layered system, code-on-demand)

특징: 클라이언트와 서버의 디커플링, 캐시 친화적, 방대한 커뮤니티 / under-fetching, over-fetching

사용 사례: Public API, 쿼리에 유연성이 필요하지 않은 리소스 기반 앱에 유용

 

GraphQL

필요한 데이터만 쿼리. 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적. 여러번 네트워크 호출을 할 필요 없이, 한번의 네트워크 호출로 쿼리를 처리 할 수 있음.

특징: 필요한 데이터만 반환할 수 있음. 프론트엔드-백엔드의 생산성 향상 / 러닝 커브, 캐싱 복잡성

사용 사례: 복잡한 시스템 및 마이크로서비스, 모바일 API

 

 

Reference

Comparing API Architectural Styles: SOAP vs REST vs GraphQL vs RPC

levelup.gitconnected.com/comparing-api-architectural-styles-soap-vs-rest-vs-graphql-vs-rpc-84a3720adefa

 

Medium

 

levelup.gitconnected.com

 

반응형