docs: resolve unused import build error and absolute paths in README
This commit is contained in:
@@ -30,11 +30,9 @@ REST와 JSON은 단순하고 사람이 읽기 쉽다는 훌륭한 장점이 있
|
||||
|
||||
### gRPC 개요
|
||||
|
||||
이 장은 Go 언어를 사용하여 gRPC를 다루는 방법을 설명합니다. gRPC는 'google Remote Procedure Calls'의 약자로, 구글이 개발한 RESTful 서비스의 대안입니다. gRPC의 가장 큰 장점은 REST와 JSON 메시지를 사용하는 방식보다 훨씬 빠르다는 점입니다.
|
||||
위와 같이 gRPC가 고안된 배경과 필요성을 바탕으로, 구체적인 특징과 개발 프로세스를 살펴보겠습니다.
|
||||
|
||||
또한, gRPC는 풍부한 도구들을 제공하여 gRPC 서비스용 클라이언트를 더 빠르고 쉽게 만들 수 있도록 돕습니다. 마지막으로, gRPC는 바이너리 데이터 형식을 사용하기 때문에 JSON 형식을 사용하는 RESTful 서비스보다 훨씬 가볍습니다.
|
||||
|
||||
gRPC 서버와 클라이언트를 개발하는 과정은 크게 세 단계로 나뉩니다. 첫째, 인터페이스 정의 언어(IDL) 파일을 생성합니다. 둘째, gRPC 서버를 개발합니다. 셋째, 개발된 gRPC 서버와 통신할 gRPC 클라이언트를 개발합니다.
|
||||
gRPC 서버와 클라이언트를 개발하는 과정은 크게 세 단계로 나뉩니다. 첫째, 인터페이스 정의 언어(IDL) 파일을 생성하여 인터페이스를 계약(Contract)으로 정의합니다. 둘째, 이 정의를 기반으로 gRPC 서버를 개발합니다. 셋째, 해당 서버와 통신할 gRPC 클라이언트를 개발합니다.
|
||||
|
||||
### 다룰 주제
|
||||
|
||||
@@ -80,7 +78,7 @@ gRPC의 주요 장점은 다음과 같습니다:
|
||||
|
||||
이 리포지토리에 포함된 예제 코드를 사용해 gRPC 서버와 클라이언트를 실행하고 통신해 볼 수 있습니다.
|
||||
|
||||
### 1. 사전 준비사항
|
||||
## 1. 사전 준비사항
|
||||
gRPC를 구동하기 전에 아래 요구사항이 충족되었는지 확인하십시오:
|
||||
* **Go 설치 확인**: Go 버전이 1.25.4 이상이어야 합니다.
|
||||
```bash
|
||||
@@ -91,16 +89,29 @@ gRPC를 구동하기 전에 아래 요구사항이 충족되었는지 확인하
|
||||
go mod download
|
||||
```
|
||||
|
||||
### 2. (선택) IDL 파일 컴파일 및 Stub 생성
|
||||
## 2. (선택) IDL 파일 컴파일 및 Stub 생성
|
||||
이미 컴파일된 stub 파일들(`protoapi/protoapi.pb.go`, `protoapi/protoapi_grpc.pb.go`)이 리포지토리에 기본 포함되어 있어 **이 단계를 건너뛰고 바로 실행할 수 있습니다.**
|
||||
만약 `.proto` 정의 파일을 직접 수정하고 코드를 다시 빌드하고 싶다면, 구체적인 `protoc` 설치 및 컴파일 절차는 [grpcentity README](file:///home/godopu16/PuKi/lab/canary_projects/grpccanary/examples/grpcentity/README.md) 가이드를 참고하여 진행해 주시기 바랍니다.
|
||||
만약 `.proto` 정의 파일을 직접 수정하고 코드를 다시 빌드하고 싶다면, 구체적인 `protoc` 설치 및 컴파일 절차는 [grpcentity README](examples/grpcentity/README.md) 가이드를 참고하여 진행해 주시기 바랍니다.
|
||||
|
||||
### 3. 실습용 코드 준비 (main.go 편집)
|
||||
## 3. 실습용 코드 준비 (main.go 편집)
|
||||
이 프로젝트의 진입점 파일인 `examples/main.go`는 기본적으로 JSON 파싱 예제만 실행하도록 설정되어 있습니다. gRPC 예제를 실행하기 위해서는 아래와 같이 진입점을 변경해야 합니다:
|
||||
|
||||
1. [examples/main.go](file:///home/godopu16/PuKi/lab/canary_projects/grpccanary/examples/main.go) 파일을 엽니다.
|
||||
2. `main()` 함수 내부의 `jsonexample.JsonParsingExample()`을 주석 처리하거나 지우고, `grpcSample()`을 호출하도록 수정합니다.
|
||||
1. [examples/main.go](examples/main.go) 파일을 엽니다.
|
||||
2. `import` 블록에서 미사용 임포트 오류(`imported and not used`)를 방지하기 위해 `"grpccanary/examples/jsonexample"` 줄을 주석 처리(또는 삭제)하고, `main()` 함수에서 `grpcSample()`을 호출하도록 수정합니다.
|
||||
|
||||
**수정 후 코드 스니펫 예시:**
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
entity "grpccanary/examples/grpcentity"
|
||||
// "grpccanary/examples/jsonexample" // 미사용 임포트 주석 처리
|
||||
"time"
|
||||
)
|
||||
|
||||
var port = ":8080"
|
||||
|
||||
func main() {
|
||||
// jsonexample.JsonParsingExample() // 기존 JSON 예제 주석 처리
|
||||
grpcSample() // gRPC 예제 실행 호출로 변경
|
||||
@@ -108,13 +119,13 @@ gRPC를 구동하기 전에 아래 요구사항이 충족되었는지 확인하
|
||||
```
|
||||
3. 수정 내용을 저장합니다.
|
||||
|
||||
### 4. gRPC 예제 실행하기
|
||||
## 4. gRPC 예제 실행하기
|
||||
리포지토리 루트 디렉토리에서 다음 Go 실행 명령을 입력합니다:
|
||||
```bash
|
||||
go run ./examples
|
||||
```
|
||||
|
||||
### 5. 기대 출력 결과
|
||||
## 5. 기대 출력 결과
|
||||
명령어가 정상적으로 실행되면, `examples/main.go`에 정의된 `grpcSample()` 함수가 구동되어 백그라운드 고루틴으로 `:8080` 포트에서 gRPC 서버를 실행한 뒤, gRPC 클라이언트가 서버로 RPC 호출을 보냅니다. 터미널에는 아래와 유사한 출력 로그가 나타납니다:
|
||||
|
||||
```text
|
||||
@@ -131,14 +142,14 @@ Random Integer 2: 87
|
||||
2. 클라이언트가 `GetRandomPass` 메서드를 호출하여 무작위 비밀번호(`&c(D7f/G#s%d`)를 생성하여 받아옵니다.
|
||||
3. 클라이언트가 `GetRandom` 메서드를 두 차례 호출하여 각각 무작위 정수 값을 받아옵니다.
|
||||
|
||||
### 6. 트러블슈팅 가이드
|
||||
## 6. 트러블슈팅 가이드
|
||||
* **`listen tcp :8080: bind: address already in use`**:
|
||||
이미 다른 프로세스가 `8080` 포트를 점유하고 있는 상태입니다. 점유 중인 프로세스를 종료하거나, `examples/main.go` 및 `examples/grpcentity/server.go`에서 `port` 변수 값을 다른 값(예: `:9090`)으로 변경한 후 다시 실행하십시오.
|
||||
* **`module grpccanary: package ... is not in GOROOT`**:
|
||||
모듈 로드 에러가 발생한 경우, 리포지토리 루트 경로(`/home/godopu16/PuKi/lab/canary_projects/grpccanary`)에서 명령어를 올바르게 실행했는지 재확인하고, `go clean -modcache` 후 `go mod tidy`를 수행해 보십시오.
|
||||
모듈 로드 에러가 발생한 경우, 리포지토리 루트 경로(작업 디렉토리)에서 명령어를 올바르게 실행했는지 재확인하고, `go clean -modcache` 후 `go mod tidy`를 수행해 보십시오.
|
||||
|
||||
### 7. 다음 단계
|
||||
gRPC 동작 방식을 깊이 이해하고 통신 명세(IDL)를 확장해 보려면, [protoapi.proto](file:///home/godopu16/PuKi/lab/canary_projects/grpccanary/protoapi.proto)의 메시지 타입을 편집해 보거나 [grpcentity README](file:///home/godopu16/PuKi/lab/canary_projects/grpccanary/examples/grpcentity/README.md)로 이동해 다음 실습 단계를 탐색하십시오.
|
||||
## 7. 다음 단계
|
||||
gRPC 동작 방식을 깊이 이해하고 통신 명세(IDL)를 확장해 보려면, [protoapi.proto](protoapi.proto)의 메시지 타입을 편집해 보거나 [grpcentity README](examples/grpcentity/README.md)로 이동해 다음 실습 단계를 탐색하십시오.
|
||||
|
||||
|
||||
# 참고 자료
|
||||
|
||||
Reference in New Issue
Block a user