-
[매일읽기] Understanding gRPC개발자 라이프/매일읽기 2020. 9. 2. 10:58반응형
원문 : medium.com/better-programming/understanding-grpc-60737b23e79e
gRPC에 대해 간략히 알아본다. 또한 웹 애플리케이션과 통신하는 기존 프로토콜 혹은 아키텍처와 gRPC 간 비슷한 점과 다른 점을 알아본다.
gRPC란 무엇인가?
- gRPC는 서비스 간 고 성능 통신을 하기 위한 RPC(Remote Procedure Call) 프레임워크
- 서로 다른 언어로 작성된 서비스들을 연결
- 로드 밸런싱, 추적(tracing), 헬스 체크, 인증을 위해 필요에 따라 쓸 수 있음(pluggable)
- 기본적으로 구조화된 데이터를 직렬화 하는 것에 프로토콜 버퍼(protocol buffer) 기술을 사용함
- MSA에서 REST 통신의 대체재로 유력함
- g는 gRPC를 개발한 google의 앞머리에서 따옴
gRPC 구조
- RPC의 의미처럼 gRPC는 원격 서버의 함수나 메서드를 실행할 수 있다는 개념을 기초
- RPC 프로토콜은 어디서 그 함수나 메소드를 실행시켰든 항상 같은 포맷의 결과를 얻을 수 있도록 함
- 즉, API를 퍼블릭 메소드로 구현하고, 그 메서드를 아규먼트들과 함께 호출함
- HTTP API의 맥락 상 메소드는 URL에, 아규먼트는 쿼리 스트링이나 바디에 포함되어 요청
- REST :
- method : DELETE
- URL : /resource/1
- gRPC :
- method : POST
- URL : /deleteResource
- body : { "id" : 1 }
- REST :
gRPC가 다시 뜨는 이유
- gRPC의 가장 중요한 특징은 직렬화 혹은 통신을 위해 프로토콜 버퍼를 사용한다는 점
- 프로토콜 버퍼는 interface definition language 역할
- 프로토콜 버퍼는 구조화된 데이터나 그 데이터를 생성하거나 파싱 하기 위한 코드를 나타냄
- 이로 인해 서로 다른 언어로 작성된 서비스들 간에 통신이 가능
- 바이너리 데이터로 통신하는데, 이는 훨씬 가볍고 빠름
- REST는 텍스트 기반의 JSON 포맷이기 때문에 훨씬 무거움
- 물론 gRPC 데이터 포맷에 프로토콜 버퍼 외에도 다른 것을 사용할 수 있지만 프로토콜 버퍼가 가장 선호됨
- gRPC는 HTTP/2 기반으로 설계됨
- 기존 요청/응답과 함께 쌍방향 통신이 가능
- 멀티 플랙싱이 가능
- gRPC는 서버-클라이언트 간 결합도를 낮춤
읽고나서
- gRPC의 특징을 간략하게 알아볼 수 있어서 좋았음
- 프로토콜 버퍼와 HTTP/2 특징에 대해서 알아봐야겠음
반응형