GO · 패턴
gRPC 기초
Protocol Buffers와 gRPC로 고성능 서비스 간 통신을 구현합니다.
패턴고급grpcprotobufrpcservice
핵심 설명
Protocol Buffers와 gRPC로 고성능 서비스 간 통신을 구현합니다.
Go code
package main
import "fmt"
// protobuf 정의 (user.proto):
// syntax = "proto3";
// package user;
// option go_package = "./pb";
//
// service UserService {
// rpc GetUser (GetUserRequest) returns (User);
// rpc ListUsers (ListUsersRequest) returns (stream User);
// }
//
// message GetUserRequest { int32 id = 1; }
// message ListUsersRequest { int32 page = 1; int32 size = 2; }
// message User {
// int32 id = 1;
// string name = 2;
// string email = 3;
// }
// gRPC 서버 구현 예시:
// type server struct {
// pb.UnimplementedUserServiceServer
// }
// func (s *server) GetUser(ctx context.Context, req *pb.GetUserRequest) (*pb.User, error) {
// return &pb.User{Id: req.Id, Name: "Gopher"}, nil
// }
func main() {
fmt.Println("gRPC 워크플로우:")
fmt.Println("1. .proto 파일 정의")
fmt.Println("2. protoc --go_out=. --go-grpc_out=. user.proto")
fmt.Println("3. 서버: pb.RegisterUserServiceServer(grpcServer, &server{})")
fmt.Println("4. 클라이언트: pb.NewUserServiceClient(conn)")
fmt.Println("5. grpc.NewServer() → Serve(listener)")
}학습 팁
gRPC는 HTTP/2 기반으로 양방향 스트리밍, 바이너리 직렬화로 REST보다 빠릅니다. 서비스 간 내부 통신에 적합합니다.
주의할 점
UnimplementedXxxServer를 임베딩하지 않으면 새 RPC 메서드 추가 시 컴파일 에러가 발생합니다. 항상 임베딩하세요.
자주 묻는 질문
gRPC 기초란 무엇인가요?
Protocol Buffers와 gRPC로 고성능 서비스 간 통신을 구현합니다.
gRPC 기초 학습 시 주의할 점은 무엇인가요?
UnimplementedXxxServer 를 임베딩하지 않으면 새 RPC 메서드 추가 시 컴파일 에러가 발생합니다. 항상 임베딩하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.