티스토리 뷰
gRPC 심화
gRPC는 RPC(Remote Procedure Call) 에서의 컨셉과 같이 한 프로세스가 원격 서버에서 호출할 수 있도록 하는 방식을 사용합니다.
gRPC는 여러 기술의 확장판으로 표현할 수 있습니다.
- CORBRA와 같이 서비스 정의를 위해 IDL(Interface Definition Language)를 사용합니다.
- Java RMI와 같이, 클라이언트가 로컬에서 원격 메소드를 호출합니다.
- SOAP과 같이, 여러 언어를 위한 클라이언트 및 서버 코드를 자동으로 생성 가능합니다.
- REST와 같이 HTTP를 (정확하게는 HTTP/2)를 사용합니다.
하지만 gRPC는 단순히 기술의 집합체가 아니라, 보다 더 많은 분야서 서비스 아키텍처의 창출을 위해 설계된 프레임워크입니다.
- Protocol Buffer를 사용함으로써 payload 값을 가볍고 빠르게합니다.
- HTTP/2를 통해 multiplexes long-lived된 TCP 연결을 지원하며 이를 통해 동시성과 효율적인 커뮤니케이션이 가능합니다.
- 클라이언트 - 서버 간 양방향 통신을 지원합니다.
- 확장가능한 미들웨어 API를 통해 Authentication, Authorization, flow-control, tracing, circuit-breaking, service policies 등을 구현 가능합니다.
또한 gRPC는 교차 플랫폼으로써 10개의 언어가 지원됩니다.
C++, Java, Python, Go, Ruby, C#, Node.js, Android Java, Objective-C, PHP
어떻게 동작하는가
대부분의 언어에서 gRPC 서비스를 만드는 것은 세가지 기본 단계로 이루어집니다.
- Define IDL
- protoc
- Impl service
먼저 protocol buffers IDL 파일을 정의합니다. 이후 protocol bufferes 컴파일러인 protoc를 통해 선택한 언어에 대한 서비스 인터페이스, 클라이언트 스텁을 생성하며, 마지막으로 IDL에 정의된 서비스 인터페이스를 구현합니다.
자바 기반의 예제코드는 다음 사이트에서 확인가능합니다
내용 : https://blog.thecodeteam.com/2017/09/08/grpc-framework-efficient-service-architectures/
참고 : https://medium.com/@EdgePress/is-grpc-the-future-of-client-server-communication-b112acf9f365