회사 업무 중 rpc 라는 개념을 알게 되어서 찾는 김에 정리한다
원격 호출’을 마치 '로컬 함수 호출'처럼 보이게 추상화한 기술
# HTTP 방식 예시
import requests
res = requests.get("http://example.com/user/sangwoo")
data = res.json()
print(data['name'])
# gRPC 방식 예시
user = client.GetUserInfo("sangwoo")
print(user.name)
'둘 다 서버에 요청하고 결과를 받는다는건데 왜 굳이 RPC를 사용하는가?' 라는 의문이 생김
1. 추상화(로컬 함수처럼 사용)
2. 데이터 직렬화 최적화(성능)
3. 자동화된 코드 생성(생산성)
4. 정형화된 통신 방식(? 굳이 이게 왜 장점인가)
5. 클라이언트로 푸시, 양방향 스트리밍 가능(gRPC인 경우, 다른 RPC는 지원하는지 파악 못함)
RPC는 함수처럼 호출해서,
빠르고,
타입 안전하고,
자동화된 구조로,
복잡한 네트워크 통신을 추상화해서 처리하게 해주는 방식