NOTICE

사이트 마이그레이션 준비 중입니다

Jekyll에서 Astro로 이전하며 글·레이아웃을 정리하고 있습니다. 일부 글은 아직 이관되지 않았고, 주소·UI가 바뀔 수 있습니다.

kdjun99

gRPC VS REST

#grpc#rest#api

gRPC VS REST

gRPC란 무엇인가

gRPC는 CNCF에서 관리하는 오픈소스 API 아키텍쳐 및 시스템입니다. 원격 프로시저 호출(RPC) 모델을 기반으로 동작하고 gRPC는 RPC 모델의 특정 구현체입니다.

RPC에서 클라이언트-서버 통신은 클라이언트 API 요청이 로컬 작업이거나 요청이 내부 서버 코드인 것처럼 작동합니다. RPC에서 클라이언트는 서버의 프로세스로 요청을 전송합니다. 서버 프로세스는 항상 원격 호출을 수신 대기 중인 상태로 유지됩니다. 요청에는 직접적으로 호출할 서버 함수와 전달할 파라미터가 포함됩니다. RPC API는 HTTP, TCP 또는 UDP와 같은 프로토콜을 기본 데이터 교환 메커니즘으로 사용합니다.

gRPC와 RPC는 어떻게 다른가

gRPC는 몇 가지 최적화와 함께 기존 RPC를 구현하는 시스템입니다. 예를 들어 gRPC는 데이터 전송에 Protocol Buffer와 HTTP 2를 사용합니다. 또한 개발자의 데이터 교환 메커니즘을 추상화합니다. 예를 들어 널리 사용되는 또 다른 RPC API 구현인 OpenAPI를 사용할 때는 개발자가 RPC 개념을 HTTP 프로토콜에 매핑해야 합니다. gRPC는 기본 HTTP 통신을 추상화하고, 이러한 최적화 덕에 gRPC는 다른 RPC 구현보다 더 빠르고 쉽게 구현할 수 있으며 웹 친화적입니다.

REST란 무엇인가

REST는 소프트웨어 구성 요소 간 데이터 교환을 위한 일련의 규칙을 정의하는 소프트웨어 아키텍처 접근 방식입니다. REST는 웹의 표준 통신 프로토콜인 HTTP를 기반으로 합니다. RESTful API는 생성, 읽기, 업데이트 및 삭제 작업에 POST, GET, PUT, DELETE, 와 같은 HTTP Method를 사용하여 클라이언트와 서버 간의 통신을 관리합니다. 서버 측 리소스는 엔드포인트라고 하는 URL로 식별됩니다.

gRPC와 REST는 API 개발에 대한 2가지 다른 접근 방식입니다. API의 작동 방식은 서로 다른 애플리케이션이나 소프트웨어가 통신하는 방식에 대한 합의가 이루어져있습니다. API가 없다면 서로 다른 애플리케이션이나 소프트웨어 서비스가 통신하는 방식에 대한 공동의 합의가 이루어지지 않습니다. API 아키텍처에는 gRPC 및 REST 같은 다양한 유형이 있습니다.

gRPC와 REST의 유사점

아키텍처 원칙 : gRPC 와 REST

주요 차이점 : gRPC와 REST

비교 포인트 gRPC API REST API
무엇인가 원격 프로시서 호출 클라이언트 서버 통신 모델을
기반으로 API를 만들고 사용하는 시스템
클라이언트와 서버 간의정형 데이터
교환을 정의하는 일련의 규칙
설계 접근 방식 서비스 지향 설계 엔티티 지향 설계
통신 모델 단뱡항, 단일 서버-다중 클라이언트, 단일 클라이언트-
다중 서버, 다중 클라이언트-다중 서버 등 다양한 옵션
단방향, 단일 클라이언트가
단일 서버와 통신합니다.
구현 작동하려면 클라이언트와 서버 모두에
gRPC 소프트웨어가 필요
공통 소프트웨어 없이
다양한 형식으로 구현
데이터 엑세스 서비스 직접 호출 리소스를 정의하는 URL 형태의
여러 엔드포인트
반환된 데이터 ProtocolBuffer 파일에 정의된 서비스의 고정된
반환 유형으로 반환됩니다.
서버에서 정의하는 고정구조
(일반적으로 JSON)으로
반환됩니다.
클라이언트-서버 커플링 긴밀하게 결합됩니다.
클라이언트와 서버 모두에 데이터 형식을 정의하는
동일한 ProtocolBuffer 파일이 필요
느슨하게 결합됩니다.
클라이언트와 서버는
내부 세부 정보 인식X
자동 코드 생성 기본 제공 기능 서드 파티 도구가 필요
양방향 스트리밍 있음 없음
가장 적합한 용도 고성능 또는 데이터 사용량이
많은 마이크로서비스 아키텍처
리소스가 잘 정의된
단순한 데이터 소스