[gRPC] gRPC란?

류넹·2024년 9월 6일
2

etc

목록 보기
11/16

RPC(Remote Procedure Calls)란?

  • 다른 컴퓨터에 있는 기능을 마치 로컬에서 실행하는 것처럼 사용할 수 있게 해주는 프로토콜

❓ gPRC (Google Remote Procedure Calls)

  • 구글에서 만든 RPC 프레임워크
  • Stub 객체는 서버의 대리인 역할을 한다. Stub을 통해 원격 서버의 메서드를 호출할 수 있으며, 마치 로컬의 객체처럼 사용할 수 있다.
    즉, 클라이언트는 서버나 통신 과정에 대해 자세히 알 필요 없이 로컬 함수처럼 원격 기능을 쉽게 호출할 수 있다.
  • gRPC는 프로토콜 버퍼(Protocol Buffers)를 사용해, 정의된 사양에 따라 언어와 환경이 다른 시스템 간에도 원활하게 통신할 수 있도록 지원한다.
  • .proto 파일은 서버와 클라이언트가 주고받을 메시지 형식에 대한 명세를 담고 있으며, 이를 기반으로 양측은 메시지를 작성하고 해석한다.

💡 .proto 파일 예시)

아래 코드는 서버에서 구현되고, 클라이언트에서 호출하는 함수가 된다.

service LoanService {
  rpc CheckBookAvailability(BookRequest) returns (BookResponse) {}
}

message BookRequest {
  string book_id = 1;
  int32 quantity = 2;
}

message BookResponse {
  bool available =        1;
  string location =       2;
  float rentalPrice =     3;
  int32 rentalDays =      4;
  string additionalInfo = 5;
}

☑️ gRPC의 장점 : HTTP/2 기반 통신

  • RESTful API에서 주로 사용되는 HTTP/1.1 방식은 편지처럼 요청과 응답을 주고받는 구조다.
    클라이언트가 편지들(요청)을 보내면 서버는 이를 하나씩 처리해 답장(응답)을 돌려주는데, 앞선 요청이 지연되면 뒤따르는 요청들도 대기하게 된다.

  • 반면, HTTP/2는 전화 통화처럼 양방향 동시 통신이 가능하다.
    여러 요청을 한 번에 보내고, 순서에 관계 없이 처리된 응답을 받을 수 있다.

  • 따라서, gRPC를 통해 서버와 클라이언트는 더 빠르고 유연하게 소통할 수 있다.



Reference

profile
학습용 커스터마이징 간단 개발자 사전

0개의 댓글