[gRPC] Protocol Buffer란? - 1

iguigu·2022년 4월 8일
0

gRPC

목록 보기
1/2

What is it?

Structure dataSerialize 하는 방식

Why we use it?

Other solutions

  • 특정한 라이브러리를 쓴다.
    - 하지만 이 방식은 특정 언어 플랫폼에 종속되는 문제가 있음
    다양한 language platform에서 효과적으로 사용이 가능함
  • 데이터를 특정 스트링으로 인코딩한다.
    - 간단한 데이터에 대해서 효과적이지만, 파싱하는데 런타임 과정에서 시간이 소요될 수 있음
    간단한 데이터를 인코딩하는데 효과적임
  • 데이터를 XML로 serilize한다.
    - XML은 human-readable하기 때문에 효과적인 방식이지만, 성능적으로 굉장히 안 좋음

Protocol Buffer (ProtoBuf)

  • 효율적이고 유연하며, 위의 문제들에 대한 automated solution
  • .proto 파일은 저장하기를 희망하는 데이터의 structure임
  • 이를 이용하여 protobuf 컴파일러는 클래스를 만들고 바이너리 형태의 데이터를 효과적으로 인코딩과 파싱을 함

Benefits of ProtoBuf

  • Cross-language Compatibility : 여러 언어에서 호환 됨
  • Cross-project Support : .proto의 message를 정의함으로 여러 프로젝트에서 사용 가능
  • Updating Proto Definitions Without Updating Code : repaeted 키워드 이용하여 forward compatibilty 지원

When ProtoBuf is a not good fit

  • 데이터가 MB를 넘을 때
    - 메모리 사용에 비효율적임
  • 동일한 데이터가 여러 binary serialization을 가질 때
    - fully parsing하지 않고는 데이터 비교가 불가능함
  • 압축이 필요할 때
    - ProtoBuf의 Message는 압축되지 않음
  • Multi dimension array나 floating number를 많이 포함할 때
    - FITS 같은 어플리케이션이 더 적합
  • OOP(객체지향)를 지원하지 않은 언어일 때
    - Fortran, IDL 같은 언어는 지원이 잘 안됨

How do ProtoBufs work?

  • 인터페이스 정의용 언어 (IDL)을 이용하여 데이터를 저장하기 위해 proto라는 형태로 정의
  • protoc (proto compile)이 언어에 맞는 코드를 생성해줌

Who use ProtoBuf

  • gRPC
  • Google cloud
  • Envoy Project
profile
2929

0개의 댓글