gRPC란?
구글에서 개발한 어느 환경에서도 실행할 수 있는 최신 오픈 소스 고성능 RPC 프레임워크
RPC(Remote Procedure Call)
프로세스 간 통신 기술. 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 해준다.
MSA 구조의 서비스에서 모듈 간의 언어에 구애받지 않고 원격에 있는 프로시저를 호출해 고유 프로그램의 개발에 집중할 수 있게 해주는 기술이다. (MSA의 각 모듈 간 통신을 원활하게 해주는 기술)
gRPC를 이용하면 원격에 있는 애플리케이션의 메서드를 로컬 메서드인 것처럼 직접 호출할 수 있기에 애플리케이션과 서비스를 보다 쉽게 만들 수 있다.
gRPC 서버(Proto Response), gRPC 클라이언트(Proto Request 전송 부분)
Stub
서버와 클라이언트는 서로 다른 주소 공간을 사용하므로 함수 호출에 사용된 매개변수를 꼭 변환해줘야 한다. 그렇지 않으면 메모리 매개 변수에 대한 포인터가 다른 데이터를 가리키게 된다.
클라이언트 stub : 함수 파라미터 변환 -> 함수 실행 -> 서버 response 변환 담당
서버 stub : 클라이언트가 전달한 매개변수 역변환, 함수 실행 결과 변환 담당
Protocol Buffer
gRPC에서는 IDL(Interface Definition Language)로 protocol buffer를 사용한다.
protocol buffer : 직렬화 데이터 구조. Json, XML
proto file : 직렬화하려는 데이터 구조 정의. 특정 언어에 대한 종속성이 없는 데이터 타입. 프로토 버퍼는 여러 프로그래밍 언어를 지원하기 때문.
프로토콜 버퍼 데이터는 ‘이름-값’의 쌍을 포함하는 작은 논리적 레코드인 메시지로 구성됨
proto file -> protoc 컴파일로 컴파일 -> 언어에 맞는 데이터 클래스 생성
만들어진 클래스는 각 필드를 위한 접근자 뿐 아니라
전체 구조 -> 바이트 (직렬화)
바이트 -> 전체 구조 (파싱)
메서드 제공
gRPC 특징
높은 생산성과 다양한 언어 및 플랫폼 지원
Protocol Buffer의 IDL만 정의하면 서비스와 메시지에 대한 소스코드가 자동으로 생성되고 데이터를 주고 받을 수 있따.
HTTP/2 기반 양방향 스트리밍
성능 이점
gRPC는 HTTP/2 레이어 위에서 Protocol Buffers를 이용해 직렬화된 바이트 스트림으로 통신해 JSON 기반 통신보다 더 가볍고 통신 속도가 빠르고, latency 감소, 더 많은 트래픽 처리 가능
-> 속도 빠르고, 더 많은 트래픽 처리 가능하며, 편리하다
'개인프로젝트' 카테고리의 다른 글
[개인 프로젝트] 가계부 프로젝트 step2 : UI (0) | 2024.04.25 |
---|---|
[개인 프로젝트] 가계부 프로젝트 step1 : 기획 (0) | 2024.04.24 |
성능 향상을 위한 공부3 - 서킷 브레이킹 (0) | 2024.02.13 |
성능 향상을 위한 공부2 - 스로틀링(throttling), 대기열 (1) | 2024.02.13 |
성능 향상을 위한 공부1 - 스케쥴러 분산 (0) | 2024.02.13 |