참조 : https://chacha95.github.io/2020-06-15-gRPC1
참조 : https://grpc.io/docs/what-is-grpc/introduction/
- gRPC가 무엇인지 알기전에, 몇가지 추가 개념에 대해 알아봅시다.
RPC
- RPC(원격 프로시저 호출)는 한 프로그램이 다른 컴퓨터에 있는 프로그램에 서비스를 요청하는 프로토콜입니다.
- 클라이언트에서 서비스를 요청(function call)하면, 서버에서 서비스를 제공합니다.
- RPC는 client-server 모델을 사용합니다.
스텁(Stub)
- 서버와 클라이언트는 다른 주소 공간을 사용합니다.
- 그래서, 함수호출에 사용되는 매개변수를 변환이 필요한데,
- 스텁이 담당합니다.
마샬링(Marshalling)
- 스텁은 클라이언트와 서버 각각에 존재합니다.
- client Stub은 함수 호출에 사용될 파라미터를 변환(Marshalling),
- 함수 실행 후 서버에서 전달 된 결과의 변환을 담당합니다.
언마샬링(Unmarshalling)
- server stub은 클라이언트가 전달한 매개 변수의 역변환(Unmarshalling),
- 함수 실행 결과를 변환합니다.
IDL(Interface Definition Language)
- 서버와 클라이언트가 정보를 주고 받는 규칙이 프로토콜이라면,
- IDL은 정보를 저장하는 규칙입니다.
- 대표적인 IDL로는 다음의 3가지가 존재합니다.
- XML
- Json
- Protocol buffers(proto)
XML
- XML(eXtensible Markup Langauge)은 어떠한 데이터를 설명하기 위해 이름을 임의로 지은 태그로 데이터를 감싸며,
- 태그로 사용자가 직접 데이터 구조를 정의 할 수 있습니다.
- 데이터를 저장하고 전달하는게 목적입니다.
Json
- javascript의 부상으로 많이 쓰이고 있는 데이터 구조입니다.
- XML이 가진 읽기 불편하고 복잡하고 느린 속도 문제를 해결했습니다.
- key-value로 정의된 구조 자체가 굉장히 사람에게 직관적입니다.
Protocol buffers(proto)
- Protocol buffers는 구조화(structured)된 데이터를 직렬화(serialization)하기 위한 프로토콜로 XML보다 작고 빠르고 간단합니다.
- XML 스키마처럼 .proto 파일에 protocol buffer 메세지 타입을 정의합니다.
- 현재 proto2와 proto3가 있으며, proto3의 사용을 권장합니다.
gRPC
- gRPC는 Google에서 개발한 RPC(Remote Procedure Call) 시스템입니다.
- 최신 버전의 IDL로 proto3를 사용합니다.
- C#에서 사용 가능합니다.
- SSL/TLS를 사용하여 서버를 인증하고 클라이언트와 서버간에 교환되는 모든 데이터를 암호화합니다.
- HTTP 2.0을 사용하여 성능이 뛰어나고 확장 가능한 API를 지원합니다.
- gRPC에서 클라이언트 응용 프로그램을 서버에서 함수를 바로 호출 할 수 있습니다.
- 서버 측에서는 서버 인터페이스를 구현하고, gRPC 서버를 실행하여 클라이언트 호출을 처리합니다.
'프로그래밍' 카테고리의 다른 글
Zero Copy 란? (0) | 2023.03.05 |
---|---|
[프로그래밍] 디자인패턴 (0) | 2022.11.07 |
[Git] 실수로 지운 commit 복구 (0) | 2022.06.16 |
Kosta비대면 교육 - Linux System & Network Programming (0) | 2022.06.05 |
스케일 업(Scale-Up), 스케일 아웃(Scale-Out) (0) | 2022.03.20 |