본문 바로가기

Framework and Tool/gRPC and Protobuf5

Protocol buffer - Convention - 출처: https://developers.google.com/protocol-buffers/docs/style - Formatting protocol buffer 파일을 작성할 때에는 아래의 format을 따른다. 1 라인당 80 글자수 들여쓰기는 2 space string은 ""를 사용 - File 구조 File은 lower_snake_case.proto 형태를 갖는다. 파일내에 기술되는 항목의 순서는 다음과 같다. License header File overview Syntax(2, 3) Package Imports (sorted) File options 그 외 - Packages package 명은 소문자 여야 한다. - Message and field name Message: CamelCase.. 2022. 4. 29.
Protocol buffer - Proto3 - 출처: https://developers.google.com/protocol-buffers/docs/proto3 - Message Type 정의 아래는 .proto 파일에 메시지를 정의한 예제이다. syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; } 맨 첫줄 syntax = "proto3";은 proto3 문법을 사용하겠다는것을 나타낸다. 만약 이 선언이 없다면 proto2를 사용한다고 가정한다. 위의 .proto 파일에는 SearchRequest 메시지 안에 3개의 field가 존재한다. 그리고 각 field는 이름과 형을 갖는다. 예제에서는 scal.. 2022. 4. 24.
Protocol buffer - 출처: https://developers.google.com/protocol-buffers/docs/overview - 개요 Protocol buffer는 언어 및 Platform에 중립적이며 구조화된 데이터를 직렬화하거나 그 반대 방향으로도 변환가능한 확장 매커니즘이다. JSON과 비슷하지만 더 작고 빠르며 지원하는 언어라면 해당 언어에 맞는 코드를 생성한다. Protocol buffer는 정의하는 부분(.proto 파일)과 proto 컴파일러가 생성하는 코드 부분으로 구성되어 있다. - Protocol buffer를 사용하여 어떤 문제를 해결할 수 있는가? Protocol buffer는 최대 몇 MB정도 되는 구조화되거나 형을 갖는 데이터 package을 위한 직렬화 형태를 제공한다. Protoc.. 2022. 3. 13.
gRPC with protobuf - 출처: https://grpc.io/docs/what-is-grpc/introduction/ - 출처: https://grpc.io/docs/languages/go/quickstart/ - 출처: https://github.com/grpc/grpc-go/tree/master/examples/helloworld - 개요 google에서 개발한 Remote Procedure Call이다. IDL(Interface Definition Language) 및 기본 메시지 교환형식으로 protocol buffer를 사용할 수 있다. RPC와 비슷하게 서버측에서는 interface를 구현하고 gRPC 서버를 실행하면 클라이언트에서는 서버와 같은 메소드의 stub을 갖는 구조이다. gRPC는 여러 언어를 지원하는데.. 2022. 3. 13.
RPC(Remote procedure call) - 출처: https://en.wikipedia.org/wiki/Remote_procedure_call#Analogues - 출처: https://pkg.go.dev/net/rpc - RPC란 무엇인가 gRPC에 관해 알아보기 전에 RPC란 개념부터 알아보기로 하자. RPC란 Remote procedure call 의 약자이다. 다른 주소공간(일반적으로는 같은 네트워크를 공유하는 다른 컴퓨터)의 procedure를 실행할 때, 원격 세부사항에 관한 명시적인 코딩없이 마치 local 컴퓨터의 procedure를 호출하는것처럼 사용하는 방식이다. OOP에서는 RMI(Remote method invocation)으로 표현하기도 한다. Go에서는 package rpc를 제공하며 Java에서는 Java RMI를 .. 2022. 3. 13.