삽집하는 개발들/gRPC

[gRPC]란 무엇인가?!

악투 2023. 10. 16. 21:29
반응형

gRPC

gRPC는 구글에서 개발했다. 고성능 오픈 소스 범용 RPC 프레임워크라고 한다.

gRPC에서 클라이언트 어플리케이션은 다른 머신의 서버 어플리케이션에 있는 메소드를 로컬 객체처럼 직접 호출할 수 있으므로 분산 애플리케이션 및 서비스를 더 쉽게 만들 수 있다.

gRPC 공식 홈페이지 출처

gRPC 클라이언트와 서버는 Google 내부 서버부터 사용자 데스크톱까지 다양한 환경에서 서로 실행하고 통신할 수 있으며 gRPC가 지원하는 모든 언어로 작성할 수 있다. 예를 들어 Go, Python 또는 Ruby 클라이언트를 사용하여 Java로 gRPC 서버를 쉽게 만들 수 있다.. 또한 최신 Google API에는 gRPC 버전의 인터페이스가 있어 애플리케이션에 Google 기능을 쉽게 구축할 수 있다.

 

프로토콜 버퍼 작업

기본적으로 gRPC는 프로토콜 버퍼를 사용.

구조화된 데이터를 직렬화하기 위한 Google의 오픈 소스 메커니즘

(JSON과 같은 다른 데이터 형식과 함께 사용할 수도 있음)

프로토콜 버퍼로 작업할 때 첫 번째 단계는 proto 파일 에서 직렬화하려는 데이터의 구조를 정의.

이는 확장명이 있는 일반 텍스트 파일임.

.proto. 프로토콜 버퍼 데이터는 메시지 로 구성.

여기서 각 메시지는 필드 라고 하는 일련의 이름-값 쌍을 포함하는 작은 논리적 정보 레코드.

// The greeter service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

위에서 설명들만 보면 솔직히 잘 이해가 안된다...

그래서 대충 이해한 대로 정리를 해봤다.

 

장점

gRPC는 API의 대표격인 RestAPI+JSON보다 최대 10배 높은 성능과 API 보호를 제공한다고 하며,

HTTP/2에서만 이용가능 하기 때문에 브라우저에서 gRPC 서비스를 편하게 호출하기 쉽지 않다.

수 많은 시스템과 프로그래밍 언어를 gRPC에선 지원하고 있어 다른 언어 다른 플랫폼에서도 호환성이 매우 높다.

보안 또한 TLS 종단 간 암호화 세션을 통해 HTTP/2를 사용하는 gRPC에서 보장된다.

 

단점

아직 생태계의 크기가 크지않다? 마치 처음 flutter를 알게 되었을 때처럼 아직 많은 개발자들이 사용해보진 않았지만, 점점 더 새로운 개발자들이 유입되면서 생태계가 커지고 있다.

위에서 적었는 데 장점 안에 단점도 적어 놓았다. 제한된 브라우저 지원이다. 

Rest나 GraphQL에 비해 러닝커브가 좀 있다. 프로토콜 버퍼에 대해 익숙하지 않다면 익숙해지는 데 드는 시간이 필요하다.

반응형