protocolbuffers/protobuf
구글이 만든, 서로 다른 언어와 시스템끼리 데이터를 주고받는 공용 포맷 Protobuf
Protocol Buffers(Protobuf)는 구글이 만든 데이터 직렬화 포맷으로, 프로그램이 사용하는 구조화된 데이터를 파일이나 네트워크로 주고받을 수 있는 압축된 형태로 바꿔준다. .proto 파일에 데이터 구조를 정의하면 protoc라는 컴파일러가 C++, Java, Python 등 여러 언어용 코드를 자동 생성해준다. 71769개의 스타를 받은 이 저장소는 컴파일러와 여러 언어의 런타임 라이브러리를 함께 제공한다.
무엇을 하는 레포인가
- 언어와 플랫폼에 상관없이 구조화된 데이터를 직렬화(프로그램 내부 데이터를 저장·전송 가능한 형태로 변환)하는 방식을 정의한다
- .proto 파일로 데이터 구조를 한 번 정의하면 protoc 컴파일러가 C++, Java, Python, C#, Ruby, PHP 등 각 언어에 맞는 코드를 만들어준다
- Go, JavaScript, Dart는 별도의 다른 저장소에서 지원한다
- Bazel 빌드 시스템을 쓰는 프로젝트는 Bzlmod(Bazel 8 이상)나 기존 WORKSPACE 방식으로 protobuf를 의존성으로 추가할 수 있다
- 정식 배포판(release)을 기준으로 쓰는 것을 권장하며, 최신 개발 코드(main 브랜치 head)는 중간에 호환성이 깨질 수 있다고 안내한다
왜 중요한가
다른 언어로 짜인 서버와 클라이언트, 혹은 다른 회사 시스템끼리 데이터를 주고받으려면 공통 규칙이 필요한데 Protobuf가 그 표준 중 하나로 널리 쓰인다. API나 마이크로서비스, gRPC 통신을 구현하는 개발자라면 이 포맷을 실무에서 마주칠 가능성이 높다.
이 레포의 용어
- 직렬화(serialization) · 프로그램이 다루는 데이터를 저장하거나 전송할 수 있는 형태로 변환하는 과정
- protoc · .proto 파일을 읽어 각 프로그래밍 언어용 코드를 생성해주는 protobuf 컴파일러
- .proto 파일 · 주고받을 데이터의 구조(필드, 타입 등)를 정의하는 protobuf 전용 설정 파일
- Bazel / Bzlmod · 구글이 만든 빌드 시스템과 그 의존성 관리 방식
- 런타임(runtime) · 생성된 코드가 실제로 동작하는 데 필요한 라이브러리
레포 원문 소개 (영문)
Protocol Buffers - Google's data interchange format
GitHub에서 보기주목받는 레포
- vorssaint/vorssaint-utils메뉴바 아이콘 하나로 유료 맥 앱 열 개 값을 대신하는 오픈소스 도구
- Alishahryar1/free-claude-code코딩 AI 에이전트를 무료 모델 49곳에 자유롭게 연결해주는 로컬 프록시
- freestylefly/awesome-gpt-image-2GPT-Image2로 원하는 이미지를 정확히 뽑아내는 프롬프트 설계도 532개를 모아놓은 저장소
- block/buzz사람과 AI 에이전트가 같은 채팅방에서 함께 일하는 오픈소스 협업 플랫폼
- NousResearch/hermes-agentNous Research가 만든, 쓰면 쓸수록 스스로 똑똑해지는 AI 에이전트 Hermes
- virgiliojr94/book-to-skill기술서 PDF를 AI 에이전트가 언제든 펼쳐볼 수 있는 '스킬'로 바꿔주는 도구
- VoltAgent/awesome-agent-skillsAI 코딩 도구가 특정 작업을 '전문가처럼' 하도록 도와주는 매뉴얼 1000개 이상을 한곳에 모았다
- anthropics/claude-plugins-community누구나 만든 Claude 확장 기능을 한곳에 모아 설치하게 해주는 저장소