Protocol Buffers(Protobuf)는 Google이 개발한 이진 직렬화 형식이다. JSON보다 3~10배 작고 빠르며, gRPC의 기본 데이터 형식으로 마이크로서비스 간 효율적인 통신에 사용된다.
JSON vs Protobuf
JSON (텍스트):
{"id": 1, "name": "Alice", "age": 30}
크기: 34 바이트
Protobuf (이진):
Alice
크기: ~9 바이트
.proto 파일 정의
protobuf
syntax = "proto3";
message User {
int32 id = 1;
string name = 2;
int32 age = 3;
repeated string emails = 4;
}
service UserService {
rpc GetUser (UserRequest) returns (User);
}
python
from google.protobuf import descriptor_pool
import user_pb2 # protoc로 생성된 파일
user = user_pb2.User(id=1, name="Alice", age=30)
serialized = user.SerializeToString() # 이진 직렬화
user2 = user_pb2.User()
user2.ParseFromString(serialized) # 역직렬화
print(user2.name) # Alice
관련 개념
- •gRPC — Protobuf를 기본 직렬화로 사용
- •마이크로서비스 — 서비스 간 효율적 통신
참고문헌
- •Protocol Buffers 공식 문서: protobuf.dev