반응형
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
< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >
🔗 velog 버전 보기 : https://velog.io/@ryuneng2/gRPC-gRPC란
'etc' 카테고리의 다른 글
[GitHub] velog와 GitHub 연동하기 (velog 글 작성 시, 자동으로 깃허브에 커밋하는 방법) (0) | 2025.01.24 |
---|---|
[GitHub] 로컬에서 깃허브 원격 저장소 변경하는 방법 (0) | 2025.01.24 |
[AWS] 인텔리제이 Database 플러그인을 활용한 AWS RDS DB 연결 방법 (0) | 2025.01.21 |
[GitHub] 깃허브 Commit & Push 내역 삭제하는 방법 (Feat. git reset, revert 차이) (0) | 2025.01.21 |
[Jasypt] 자십트 사용법, DB 정보 암호화 (0) | 2025.01.21 |