GRPC

SeungJoo
|2023. 9. 17. 20:18
반응형

GRPC(Google. Remote Precedure Call)

고성능의 분산 시스템을 구축하기 위한 오픈 소스 프레임워크입니다. 현대적인 애플리케이션에서 마이크로서비스 간 통신을 구축하는 데 사용되며 gRPC는 언어에 중립적이며 플랫폼에 독립적이어서 크로스 플랫폼 응용 프로그램을 쉽게 만들 수 있게 해 줍니다. 전반적으로 GRPC는 효율적이고 확장 가능한 분산 시스템을 구축하는 강력한 도구로, 마이크로 서비스 아키텍처 및 네트워크 애플리케이션에 많이 사용됩니다. GRPC는 원격 통신에 대한 현대적이고 다재다능한 접근 방식으로 개발자가 복잡한 분산 시스템을 쉽게 개발 유지 보수 할 수 있도록 도와줍니다.

 

RPC(Remote Procedure Call, RPC)

 원격 프로시저 호출인 RPC는 분산 컴퓨팅에서 사용되는 프로그래밍 모델 중 하나로, 프로그램이 다른 원격 프로그램에서 제공하는 서비스나 프로시저를 호출하는 방법을 제공해줍니다.

RPC는 네트워크 통신의 복잡성을 추상화하며 프로그래머가 원격 프로시저를 로컬 함수 또는 프로시저 호출처럼 다룰 수 있게 합니다. 이로써 다양한 컴포넌트가 서로 다른 컴퓨터나 다른 프로그래밍 언어에서도 원활하게 통신할 수 있습니다.

작동방식

클라이언트 - 서버 상호작용  : 서버에서 요청된 서비스나 프로시저를 제공해 주는 프로그램입니다.

요청과 응답 : 클라이언트는 서버에게 요청을 보내며, 이 요청에는 호출하려는 프로시저와 필요한 매개변수가 포함되며 요청은 네트워크로 전송됩니다.

서버에서 실행 : 서버는 요청을 받아들이고 요청된 프로시저를 제공된 매개변수와 함께 실행됩니다.

클라이언트 응답 ; 프로시저 실행이 완료되면 서버는 결과 또는 응답을 클라이언트에 다시 네트워크를 통해 전송합니다.

클라이언트 수신 및 처리 : 응답을 받게 되면 프로시저의 결과인 성공 실패를 알려줍니다.

HTTP/2

월드 와이드 웹에서 사용되는 프로토콜인 HTTP의 주요 버전이며 웹 성능을 향상시키기 위한 다양한 기능을 도입하고 있으며, HTTP/1.1에 비해 빠르고 효율적인 통신을 지원합니다.

특징

다중화 : 하나의 TCP연결을 통해 여러 개의 요청과 응답을 병렬로 처리할 수 있습니다. 여러 리소스를 동시에 가져오는 데 유용하며, HTTP/1.1의 순차적이 요청과 응답 처리 방식에 비해서 성능을 향상 시켜 줍니다.

헤더 압축 : 헤더 필드를 압축하여 불필요한 데이터 전송을 줄이고 대역폭이 감소하며 페이지 로딩 시간이 단축됩니다.

서버 푸시 : 서버가 클라이언트 요청 없이 리소스를 미리 보내는 서버 푸시 기능을 제공합니다.

 

프로토콜 버퍼

데이터 직렬화 형식과 관련된 개방형 표준이자 언어 중립적인 인터페이스 정의 언어 IDL입니다. 

데이터 직렬화의 역직렬화를 위한 가볍고 효율적인 방법을 제공하며, 다양한 프로그래밍 언어에서 사용할 수 있는 데이터 교환 형식을 정의할 수 있습니다.

 

직렬화

데이터를 바이너리 형식으로 인코딩하는 과정을 나타냅니다. 프로토콜 버퍼는 언어 중립적인 인터페이스 정의 언어로 데이터 구조를 정의하고 그 구조로 직렬화와 역직렬화 코드를 생성 가능합니다.

 

아래 그림을 보면 text JSON인 경우 82Byte가 사용되는 것이 비해 protocol buffer는 번호, 유형을 1byte로 받아 33byte만 필요하게 됩니다.

출처 : https://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html

 

728x90

'BackEnd > API' 카테고리의 다른 글

JSON API  (0) 2023.09.15