View
개념
gRPC is a modern open source high performance RPC framework that can run in any environment.
여기서 핵심은 RPC 이다. RPC란 Remote Procedure Control, 원격에 있는 프로시져를 호출한다는 뜻. REST같은 HTTP 프로토콜 기반의 URL 호출방식은 특정 URL String을 엔드포인트로 클라이언트가 서버에게 접근하지만 RPC 같은 경우 클라이언트 코드에서 서버의 메소드를 호출하여 데이터를 교환할 수 있는 방식이다.
예를들어 public User findUserById(Long userId)
라는 메소드가 서버의 UserService
클래스에 있다고 했을 때, 클라이언트에서도 마치 UserService
클래스에 findUserById
메소드가 있는 것 처럼 호출하여 사용할 수 있다. 일반적으로 HTTP API에서 json을 사용하고 어떤 json 구조를 사용할 지 정의한다면 gRPC에서는 proto
라는 형식으로 서버-클라이언트 간의 통신 양식을 약속하는데 이를 계약, contract
라고 한다.
클라이언트의 코드에서 서버의 메소드를 호출하려면 마치 클라이언트 코드에 서버의 메소드가 있는 것 처럼 코드를 생성해줘야 되는데 이런 코드들을 stub
이라고 한다.
클라이언트 또는 서버가 proto
에 따라 작성한 데이터들은 gRPC만의 특별한 데이터로 직렬화되어 전달되는데 이때 사용하는 직렬화 메커니즘을 Protocol Buffers
라고 하는데 매우 높은 압축률을 보인다.
개발자가 작성한 .proto
파일은 protofocol buffer compiler인 protoc
를 사용해서 특정 랭기지의 데이터 엑세스 클래스로 변환된다.
gRPC는 HTTP/2를 필수로 사용하고 있어 기본적으로 HTTP/1.x 보다 더 빠르고 HTTP/2의 특징을 기반으로 한 양방향 스트리밍등 여러가지 장점이 있다.
Example Project
Conclusion
- gPRC는 HTTP/2 기반으로 HTTP/2의 특징을 기반으로 속도 향상, 양방향 스트리밍등의 다양한 장점이 있다.
- 용어 개념 정리
- RPC : 서버의 프로시저(함수, 메소드)를 클라이언트에서 호출할 수 있는 방식
- proto : gRPC에서 클라이언트, 서버 간 메시징 약속
- Protocol Buffers : gRPC의 직렬화 메커니즘
Reference
'Framework & Library & Tool > etc' 카테고리의 다른 글
log4j에서 사용하는 로그 메세지 포맷 (0) | 2021.12.18 |
---|