diff --git a/docs/GRPC.md b/docs/GRPC.md index b4aef35..d3eadd1 100644 --- a/docs/GRPC.md +++ b/docs/GRPC.md @@ -136,7 +136,20 @@ message RandomPass { 우리가 열심히 기획해서 적은 `.proto` 약속 파일을 컴퓨터(Go 언어)가 알아듣는 소스코드로 변환해 줄 **번역기(`protoc`)**와 **Go 전용 번역 플러그인**들을 로컬 개발 환경에 설치하고 구동하는 방법입니다. -### 4.1 번역 도구 설치하기 +### 4.1 핵심 도구 체인 삼각 편대 이해하기 +gRPC 개발 환경을 구축하기 위해 설치하는 세 가지 프로그램의 구체적인 역할과 설치 목적은 다음과 같습니다: + +1. **`protobuf-compiler` (또는 `protoc` 본체)**: + * **역할**: 프로토콜 버퍼의 코어 컴파일러 엔진 (**"번역기 본체"**) + * **목적**: `.proto` 문법 구조를 해석하고 분석하는 핵심 코어 본체입니다. 이 엔진 자체는 Go, Python 등 특정 프로그래밍 언어의 구체적인 소스 변환 지식은 없으며, 파싱한 데이터를 아래 기술되는 전용 플러그인(부품)에 전달하는 번역 지휘소 역할을 합니다. +2. **`protoc-gen-go` (Go 데이터 구조 금형틀)**: + * **역할**: Go 언어 전용 데이터 구조체 생성 플러그인 (**"구조체 조립 부품"**) + * **목적**: 명세서에 정의된 `message` 규격(예: `SensingData`)을 Go 프로그래밍 언어에서 바로 활용할 수 있도록 `struct`(구조체) 파일로 완전 자동 번역해 주는 부품입니다. (결과물: `*.pb.go` 파일 생성) +3. **`protoc-gen-go-grpc` (Go gRPC 통신망 금형틀)**: + * **역할**: Go 언어 전용 gRPC 통신 인터페이스 생성 플러그인 (**"네트워크 안테나 부착 부품"**) + * **목적**: 명세서에 선언된 `service` 규격(예: `IoTService` RPC)을 해석하여 기기와 서버가 실제로 네트워크 채널을 열고 연결하여 핑퐁 대화를 나눌 수 있게 통신 모듈 코드를 제공합니다. (결과물: `*_grpc.pb.go` 파일 생성) + +### 4.2 번역 도구 설치하기 * **macOS (Homebrew 사용)**: 터미널에 아래 명령어를 입력해 컴파일러와 Go 언어 통신용 변환 플러그인을 설치합니다. ```bash @@ -152,7 +165,7 @@ message RandomPass { go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest ``` -### 4.2 실제로 번역하기 (컴파일 명령어) +### 4.3 실제로 번역하기 (컴파일 명령어) 아래 명령어는 컴퓨터에게 **"내가 작성한 `protoapi.proto` 약속 장부를 Go 언어로 번역해서 `protoapi/` 폴더에 가지런히 넣어줘!"** 하고 지시하는 마법의 명령어입니다: ```bash protoc --go_out=. --go-grpc_out=. protoapi.proto