Notice
Recent Posts
Recent Comments
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

SYDev

gRPC란? 본문

GDGoC KHU 1th

gRPC란?

시데브 2024. 11. 16. 01:03

gRPC란? 

  • gRPC: Cloud Native Computing Foundation에서 관리하는 open source API architecture 및 system.
  • Remote Procedure Call(원격 프로시저 호출) 모델을 기반으로 함
  • RPC 모델은 광범위 하지만, gRPC는 특정 구현

1. Remote Procedure Call

  • RPC에서 client-server 통신은 client API request가 local 작업이거나, request가 내부 서버 코드인 것처럼 작동
  • request에는 직접적으로 호출할 server function parameter 포함
  • RPC API는 HTTP, TCP 또는 UDP와 같은 protocol을 기본 데이터 교환 메커니즘으로 사용

2. gRPC

  • gRPC는 몇 가지 최적화와 함께 기존 RPC를 구현하는 시스템 
    • ex) gRPC는 데이터 전송에 Protocol BufferHTTP 2를 사용
  • 개발자의 데이터 교환 메커니즘을 추상화 
    • ex) 널리 사용되는 또 다른 RPC API 구현인 OpenAPI를 사용할 때, 개발자가 RPC 개념을 HTTP 프로토콜에 매핑해야 함, 하지만 gRPC는 기본 HTTP 통신을 추상화 -> 이런 최적화 덕에 다른 RPC 구현보다 더 빠르고 쉽게 구현할 수 있으며 웹 친화적임
Protocol Buffer: 구글에서 개발한 구조화된 데이터를 직렬화하는 메커니즘 
언어/플랫폼 중립적, 확장성을 갖춤

HTTP/2: HTTP protocol version 2
- HTTP/1.1과의 차이점 중 Multiplexing: HTTP/1.1에서는 한 리소스를 로드할 수 없는 경우 그 뒤에 있는 다른 모든 리소스가 차단됨 -> HTTP/2에서는 단일 TCP 연결을 사용하여 한 번에 여러 데이터 스트림을 보낼 수 있음 
- 데이터이진 코드 메시지로 분할하고, 클라이언트가 각 이진 메시지가 속한 스트림을 알 수 있도록, 메시지에 번호를 부여


https://ko.wikipedia.org/wiki/HTTP/2
https://protobuf.dev/
  • Google에서 만든 RPC(Remote Procedure Call) 프로토콜이며, 네트워크 요청을 sw 내부에 있는 함수를 호출하듯이 사용하게 도와주는 프로토콜

3. gRPC 이점

- 성능

  • network request를 전송할 때, Protobuf를 직렬화(Serialization) 및 역직렬화(Deserialization)하는 작업 -> JSON 형태 직렬화/역직렬화보다 빠름
  • gRPC의 network 속도가 HTTP POST/GET 속도보다 빠름

- API 우선 방식

  • Protobuf를 통해 기능을 개발하기 전에 API를 먼저 정의할 수 있음
  • API가 먼저 정의될 경우 개발팀이 병렬적으로 일을 진행할 수 있어, 개발 속도가 빨라지며 API를 좀 더 안정적으로 제공할 수 있음

- REST API 지원

  • Protobuf로 정의된 API는 envoyproxy나 grpc-gateway 같은 gateway를 통해 REST API로 제공 가능 
  • gRPC로 정의된 API를 OpenAPI 프로토콜로 변환하여 REST API를 사용하는 클라이언트에도 API 우선 방식 적용 가능

참고자료

 

gRPC와 REST 비교 - 애플리케이션 설계의 차이 - AWS

REST는 소프트웨어 구성 요소 간 데이터 교환을 위한 일련의 규칙을 정의하는 소프트웨어 아키텍처 접근 방식입니다. REST는 웹의 표준 통신 프로토콜인 HTTP를 기반으로 합니다. RESTful API는 생성,

aws.amazon.com

 

Golang gRPC 예제

gRPC는 Google에서 개발한 고성능, 오픈소스, 원격 프로시저 호출(RPC) 프레임워크입니다.gRPC는 클라이언트와 서버 간의 통신을 처리하기 위한 간단한 인터페이스를 제공하며 이를 통해 클라이언트

velog.io

 

gRPC

이 문서는 gRPC에 대한 간단한 설명과 사용 방법 및 가이드라인을 제공한다. gRPC를 사용하기 위한 protobuf에 관한 내용도 포함한다. gRPC의 정의 gRPC는 Google 에서 만든 RPC(Remote Procedure Call) 프로토콜

tech.buzzvil.com