Go Academy · 강의

Protocol Buffers와 .proto 파일

메시지 타입, 서비스 및 protoc 코드 생성

레슨 1/413개 단계

Protocol Buffers와 .proto 파일은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Protocol Buffers란 무엇인가요

Protocol Buffers(protobuf)는 Google이 개발한 언어 중립적인 이진 직렬화 형식입니다. JSON보다 작고 빠르며 gRPC의 표준 와이어 형식입니다.

.proto 파일 문법

메시지와 서비스를 .proto 파일에 정의합니다:

syntax = "proto3";
package user;
option go_package = "github.com/example/user/pb";

message User {
    int64 id   = 1;
    string name = 2;
    string email = 3;
}

service UserService {
    rpc GetUser (GetUserRequest) returns (User);
}
message GetUserRequest { int64 id = 1; }

필드 번호

각 필드에는 이진 인코딩에 사용되는 고유 번호(태그)가 있습니다. 스키마가 사용되기 시작한 후에는 기존 필드 번호를 절대 변경하지 마십시오. 호환성이 깨집니다.

proto3 기본값

proto3에서는 모든 필드에 기본값이 있습니다(숫자는 0, 문자열은 "", 불리언은 false). 필수 필드와 선택적 필드의 구분이 없으므로 필드가 없으면 기본값이 사용됩니다.

protoc 설치

protobuf 컴파일러와 Go 플러그인을 설치합니다:

brew install protobuf
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

Go 코드 생성

protoc을 실행하여 Go 구조체와 gRPC 스텁을 생성합니다:

protoc --go_out=. --go_opt=paths=source_relative \
       --go-grpc_out=. --go-grpc_opt=paths=source_relative \
       user/user.proto

생성되는 유형

protoc은 메시지마다 하나의 Go 구조체, getter 메서드, 서비스 인터페이스, 구현되지 않은 서버 구조체, 모든 RPC 메서드를 포함하는 클라이언트 구조체를 생성합니다.

반복 필드

repeated를 사용하여 목록을 나타냅니다(Go 슬라이스로 매핑됩니다):

message ListUsersResponse {
    repeated User users = 1;
}

열거형

proto3에서 열거형을 정의합니다. 첫 번째 값은 0이어야 합니다(기본값):

enum Role {
    ROLE_UNSPECIFIED = 0;
    ROLE_USER        = 1;
    ROLE_ADMIN       = 2;
}

널리 사용되는 유형

google/protobuf 패키지는 일반적으로 사용되는 유형을 제공합니다: Timestamp, Duration, Struct(JSON과 유사), Any. .proto 파일에서 가져옵니다.

import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }

하위 호환성 규칙

안전한 변경: 새 필드 추가, 새 메시지 유형 추가, 새 열거형 값 추가. 안전하지 않은 변경: 필드 번호 변경, 필드 유형 변경, 필드 삭제(삭제된 필드는 조용히 기본값이 됩니다).

빠른 확인

protobuf 메시지의 필드 번호에 대해 반드시 성립해야 하는 것은 무엇입니까?

복습: Protocol Buffers

핵심 내용:

  • .proto는 메시지(필드 + 형식)와 서비스(RPC)를 정의합니다
  • 필드 번호는 영구적이므로 절대 재사용하거나 변경하지 않습니다
  • protoc + Go 플러그인은 Go 구조체와 gRPC 스텁을 생성합니다
  • repeated 필드는 슬라이스가 되며, 열거형은 0부터 시작해야 합니다
무료로 시작

AI 튜터와 함께 Go을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
51
레슨
203

자주 묻는 질문

“Protocol Buffers와 .proto 파일” 강의는 무료인가요?

네 — “Protocol Buffers와 .proto 파일” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Protocol Buffers와 .proto 파일”에서 뭘 배우나요?

메시지 타입, 서비스 및 protoc 코드 생성 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Protocol Buffers와 .proto 파일” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Protocol Buffers와 .proto 파일
  2. 단항 gRPC 서비스 구현
  3. 서버 및 클라이언트 스트리밍
  4. gRPC 인터셉터와 메타데이터
← Go Academy(으)로 돌아가기