RPC(Remote Procedure Calls)란?
- 다른 컴퓨터에 있는 기능을 마치 로컬에서 실행하는 것처럼 사용할 수 있게 해주는 프로토콜
Stub
객체는 서버의 대리인 역할을 한다. Stub을 통해 원격 서버의 메서드를 호출할 수 있으며, 마치 로컬의 객체처럼 사용할 수 있다..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;
}
RESTful API에서 주로 사용되는 HTTP/1.1 방식은 편지처럼 요청과 응답을 주고받는 구조다.
클라이언트가 편지들(요청)을 보내면 서버는 이를 하나씩 처리해 답장(응답)을 돌려주는데, 앞선 요청이 지연되면 뒤따르는 요청들도 대기하게 된다.
반면, HTTP/2는 전화 통화처럼 양방향 동시 통신이 가능하다.
여러 요청을 한 번에 보내고, 순서에 관계 없이 처리된 응답을 받을 수 있다.
따라서, gRPC를 통해 서버와 클라이언트는 더 빠르고 유연하게 소통할 수 있다.
Reference