gRPC 리서치 :: The Obligatory Courtesy Smile

gRPC 리서치

Posted by 곰도리네
2018.03.12 12:31 Computing&IT/프로그래밍 - golang

Micro-Service Architecture 방식으로 백엔드 서비스를 구성하고자 한다.


이 경우 모듈간의 소통을 위하여


개별 모듈간의 통신규약(protocol)을 정하고


각 통신규약의 서비스가 구동되는 방식을 구현해야 함.


그런데 이게 여간 성가시고 복잡한게 아님.


구글은 이와 관련된 문제를 한참 전부터 인식해왔었고 이를 해결하기 위해 stubby라는 것을 써왔는데


이를 gRPC로 다시 개칭해서 공개함.



gRPC는 RPC를 쉽고 빠르게 구현하도록 도와주는 라이브러리라 해야할까 뭐 .. 그런것.


먼저 protocol buffer를 이용해 프로토콜을 정의해주고


프로토콜이 오갈때 이를 go언어 기타 언어에서 처리하는 서비스와 해당 go언어 함수들을 위 protocol buffer를 통해 정의해준다.


그 후에 protocol buffer를 자신의 백엔드 서비스에서 사용하는 언어로 컴파일 한 후 


이를 호출하면 끝 ㅋ



gRPC 구동방식은 아래와 같은 경우로 나눈다.


1. Simple RPC


클라이언트가 서버에게 요청을 날리고 서버측 함수를 실행하고 다시 그 응답이 돌아온다.


2. Server-side streaming RPC


클라이언트가 서버에게 요청을 날리고 서버로부터 실행된 함수의 return 메세지의 시퀀스를 읽어들인다. 클라이언트는 더이상의 메세지가 없을 때까지 stream을 읽어들인다.


3. Client-side streaming RPC


클라이언트는 서버에게 메세지의 시퀀스를 송출하고, 클라이언트의 스트리밍이 끝나면 서버가 그것들을 전부 읽고 응답을 반환할때까지 기다림.


4. Bi-directional streaming RPC


read-write 스트림을 이용해서 클라이언트, 서버 양방향이 메세지를 보내도록 함. 두개의 stream은 상호독립적임.



각 구동방식 별로 proto 파일에서 service 정의하는게 조금씩 달라진다.


그리고 서버사이드와 클라이언트에서의 구현도 조금씩 달라짐.

이 댓글을 비밀 댓글로

티스토리 툴바