How are Protocol Buffers used?

Sharing data across languages

syntax = "proto3"

message MyMessage {
	uint32 id = 1;
}
  • 위 프로토타입 스키마를 통해, 자바, 파이썬, 고랭, 그외 여러 다른 언어의 코드를 생성할 수 있음.

직렬화

  • .proto 파일에서 프로토콜 버퍼를 사용하여 데이터 구조를 정의한 경우, 프로토콜 버퍼 컴파일러 (protoc)를 사용하여 대상 언어로 코드를 생성함. (Java, C++, Python, Go)
  • 생성된 코드에는 정의한 데이터 유형에 해당하는 클래스, 혹은 구조체가 포함됨.
  • 클래스 또는 구조체 인스턴스를 생성해서 해당 필드에 값을 설정할 수 있음.
    • 데이터 구조 필드 중 하나는 일반적으로 고유 식별자, ID로 지정됨.
  • 데이터 구조에 값을 설정하고, 생성된 코드의 직렬화 메서드를 사용하여 데이터를 압축된 바이너리 형식으로 변환함.

역직렬화

  • 수신 측의 다른 시스템에서는 생성된 코드와 해당 역직렬화 메서드를 사용하여 바이너리 데이터를 원래 데이터 구조로 다시 변환함.
  • 프로토콜 버퍼에서 사용하는 디코딩 알고리즘은 언어에 구애받지 않음.

Used for

  • 클라이언트-서버 시스템 간의 통신에 널리 사용됨.
    • 널리 사용되는 프레임워크 중 하나가 gRPC 임.
    • 클라이언트와 서버는 다양한 프로그래밍 언어로 구현할 수 있음.
    • gRPC는 Python, Go, C#등 여러 언어를 지원함.
  • gRPC와 프로토콜 버퍼
    • gRPC는 구글에서 개발한 오픈소스 RPC 프레임워크임.
      • 분산 시스템 간의 효율적이고 고성능 통신을 가능하게 함.
    • gRPC는 프로토콜 버퍼를 기본 데이터 직렬화 형식으로 사용함.

프로토콜 버퍼와 gRPC의 이점

  • 더 작은 페이로드
    • 바이너리 형식은 텍스트 기반 형식에 비해 페이로드가 작음 → 네트워크 전송 데이터 크기가 줄어듦.
  • 더 빠른 직렬화/역직렬화
    • 컴팩트한 바이너리 형식 → 더 빠른 데이터 직렬화 및 역직렬화 가능 → 클라이언트와 서버 간 통신 성능 향상에 기여
  • 언어 상호 운용성
    • gRPC는 여러 프로그래밍 언어를 지원함.
    • 서로 다른 언어로 작성된 클라이언트와 서버가 동일한 프로토콜 버퍼 스키마를 공유하는 한 원할하게 통신 가능.
  • 버전 관리 및 하위 호환성
    • 프로토콜 버퍼는 스키마 진화를 지원함.
    • 이전 버전과 호환성을 유지하면서 시간이 지남에 따라 데이터 스키마를 수정할 수 있음.
  • 위 이점을 통해, 프로토콜 버퍼와 gRPC 조합은 분산 시스템, 마이크로서비스 아키텍처, API에서 효율적이고 고성능 통신 채널을 구축할 수 있음.

Used By

프로토콜 버퍼는 널리 채택되어 다양한 회사에서 다양한 용도로 사용되고 있음.

  • Google
    • Google은 프로토콜 버퍼의 최초 개발함.
    • Google은 효율적이고 언어에 구애받지 않는 데이터 직렬화 형식에 대한 필요성을 해결하기 위해 내부적으로 개발했음.
    • Google은 많은 내부 서비스와 API에서 프로토콜 버퍼를 광범위하게 사용하고 있음.
  • 넷플릭스
    • 세계 최대 스트리밍 엔터테인먼트 회사 중 하나인 넷플릭스는 API에 프로토콜 버퍼를 사용함.
    • 프로토콜 버퍼를 사용하면 서로 다른 서비스와 클라이언트 간의 통신에서 데이터를 효율적으로 직렬화 및 역직렬화할 수 있음.
    • 이를 통해 네트워크 대역폭을 최적화하고 전반적인 성능을 개선할 수 있음.
  • 언급된 기업 외에도 다른 주요 기업들도 기술 스택에 프로토콜 버퍼를 사용하고 있음.
    • 앞서 언급했듯이 프로토콜 버퍼는 성능, 효율성, 언어에 구애받지 않는 특성으로 널리 인정받는 성숙한 기술이 됨.
    • 많은 기업들이 데이터 직렬화 및 통신 문제를 효과적으로 해결하기 위해 분산 시스템, 마이크로서비스 아키텍처, API에 프로토콜 버퍼를 사용하고 있음.
  • 주요 기술 기업들이 프로토콜 버퍼를 채택한 것은 데이터 직렬화 형식으로서 프로토콜 버퍼의 견고함과 신뢰성을 입증하는 것임.
    • 더 작은 페이로드 크기, 더 빠른 직렬화/역직렬화, 언어 상호 운용성, 버전 관리 및 이전 버전과의 호환성 지원 등의 이점이 프로토콜 버퍼의 인기를 끌고 있음.
  • 점점 더 많은 기업이 프로토콜 버퍼를 활용함에 따라 이 기술이 다양한 시스템과 플랫폼에서 효율적인 통신과 데이터 교환을 가능하게 하는 최신 소프트웨어 개발에서 중요한 역할을 한다는 사실이 점점 더 분명해지고 있음.

'Skills > protocol buffers' 카테고리의 다른 글

Why Protocol Buffers?  (0) 2023.08.02

댓글

Designed by JB FACTORY