컴백부터 K-뷰티까지 — K-컬쳐의 모든 것을 메일로 받아보세요메일로 받아보기

METAL MEDIA

protocolbuffers/protobuf

71,769오늘 +4C++

구글이 만든, 서로 다른 언어와 시스템끼리 데이터를 주고받는 공용 포맷 Protobuf

Protocol Buffers(Protobuf)는 구글이 만든 데이터 직렬화 포맷으로, 프로그램이 사용하는 구조화된 데이터를 파일이나 네트워크로 주고받을 수 있는 압축된 형태로 바꿔준다. .proto 파일에 데이터 구조를 정의하면 protoc라는 컴파일러가 C++, Java, Python 등 여러 언어용 코드를 자동 생성해준다. 71769개의 스타를 받은 이 저장소는 컴파일러와 여러 언어의 런타임 라이브러리를 함께 제공한다.

무엇을 하는 레포인가

  1. 언어와 플랫폼에 상관없이 구조화된 데이터를 직렬화(프로그램 내부 데이터를 저장·전송 가능한 형태로 변환)하는 방식을 정의한다
  2. .proto 파일로 데이터 구조를 한 번 정의하면 protoc 컴파일러가 C++, Java, Python, C#, Ruby, PHP 등 각 언어에 맞는 코드를 만들어준다
  3. Go, JavaScript, Dart는 별도의 다른 저장소에서 지원한다
  4. Bazel 빌드 시스템을 쓰는 프로젝트는 Bzlmod(Bazel 8 이상)나 기존 WORKSPACE 방식으로 protobuf를 의존성으로 추가할 수 있다
  5. 정식 배포판(release)을 기준으로 쓰는 것을 권장하며, 최신 개발 코드(main 브랜치 head)는 중간에 호환성이 깨질 수 있다고 안내한다

왜 중요한가

다른 언어로 짜인 서버와 클라이언트, 혹은 다른 회사 시스템끼리 데이터를 주고받으려면 공통 규칙이 필요한데 Protobuf가 그 표준 중 하나로 널리 쓰인다. API나 마이크로서비스, gRPC 통신을 구현하는 개발자라면 이 포맷을 실무에서 마주칠 가능성이 높다.

이 레포의 용어

  • 직렬화(serialization) · 프로그램이 다루는 데이터를 저장하거나 전송할 수 있는 형태로 변환하는 과정
  • protoc · .proto 파일을 읽어 각 프로그래밍 언어용 코드를 생성해주는 protobuf 컴파일러
  • .proto 파일 · 주고받을 데이터의 구조(필드, 타입 등)를 정의하는 protobuf 전용 설정 파일
  • Bazel / Bzlmod · 구글이 만든 빌드 시스템과 그 의존성 관리 방식
  • 런타임(runtime) · 생성된 코드가 실제로 동작하는 데 필요한 라이브러리

레포 원문 소개 (영문)

Protocol Buffers - Google's data interchange format

GitHub에서 보기

주목받는 레포

레포 전체 보기 →

METAL MEDIA 최신 기사