gRPC 정리

Programming/Extractions 2021. 1. 9. 14:34

gRPC는 구글이 개발한 원격 프로토콜 호출(RPC, Remote Protocol Call) 방식이다. gRPC는 데이터 전송을 위해 HTTP/2를 이용하고 프로토콜 버퍼(Protocol Buffer)라는 인터페이스 정의 언어(IDL, Interface Definition Language)를 사용하여 다른 프로세스의 메소드를 호출한다.

HTTP/2는 HTTP/1의 성능을 개선한 버전이다. HTTP/1은 기본적으로 클라이언트 요청에 서버가 응답하기 때문에 매 요청마다 커넥션(connection)을 생성해야 하며 쿠키를 포함한 헤더로 인해 용량이 크다. 반면 HTTP/2는 헤더 테이블과 호프만 인코딩 기법을 사용하여 헤더 정보를 압축하고, 서버가 클라이언트 요청 없이도 리소스를 전달할 수 있으며 하나의 커넥션만으로 데이터 교환이 가능하기 때문에 HTTP/1에 비하여 성능이 뛰어나다.

RPC를 이용하는 환경에서 클라이언트는 서버의 메소드를 직접 호출하여 데이터를 요청한다. 만약 서버와 클라이언트 구현에 사용된 프로그래밍 언어나 프레임워크가 서로 다르다면 동일한 데이터 구조임에도 불구하고 표현 방식이 달라 데이터 전송을 하지 못할 수 있다. 직렬화는 이처럼 상이한 시스템 환경에서 데이터 구조를 동일한 표현으로 변환하는 과정으로, 프로토콜 버퍼는 gRPC에서 사용하는 직렬화 데이터 표현 방식이다.

gPRC는 다양한 언어와 플랫폼에서 사용이 가능하고, RPC의 다른 방식 보다 구현이 쉽고 지원하는 기능 많고 성능이 우수하다. 또한 HTTP/2 기반이기 때문에 실시간 및 비동기식 데이터 전송, 푸시 서비스를 간단하게 구현할 수도 있다. 이러한 장점 덕분에 로컬환경 내의 애플리케이션 간 데이터 교환이나 마이크로서비스(Microservice)를 구축하기 위한 해법으로 많은 개발자들에 의해 채택되고 있다. 

 

gRPC 출처

 

 

 

 

gRPC 배경부터 활용까지

1. 등장 배경 1.1 Server-Client Model PC(Personal Computer)의 개념이 없던 시절, 프로그램은 하나의 메인 프레임에서 동작하는 Monolothic 구조로 설계되었다. 이때까지만 해도 모든 기능들이 한 공간에서 구..

incredible-larva.tistory.com

 

 

'Programming > Extractions' 카테고리의 다른 글

Call by Reference, Call by Value에 대한 고찰  (0) 2021.02.11
CNN 용어 정리  (0) 2021.01.28
RNN 학습에 필요한 데이터 분할  (0) 2021.01.25
써드 파티(3rd party) 개발자  (0) 2021.01.20
객체와 인스턴스의 차이  (14) 2016.06.21
admin