서버와 클라이언트는 같은 proto, package, url을 본다

NestJS gRPC 구현은 서버 microservice 설정과 클라이언트 proxy 설정이 같은 계약 파일을 가리키는지부터 확인합니다.

Users service

gRPC 서버

transport: Transport.GRPC package: "users" url: "localhost:50051"

handler는 @GrpcMethod로 proto method에 매핑됩니다.

Orders service

gRPC 클라이언트

ClientsModule.register name: "USERS_SERVICE" transport: Transport.GRPC

ClientGrpc에서 UserService proxy를 꺼내 호출합니다.

공유 계약

protoPath와 package

proto/users.proto package users

경로, package 이름, service 이름이 어긋나면 연결은 되어도 메서드를 찾지 못합니다.

호출 처리

Observable 응답

lastValueFrom( userService.GetUserById({ id }) )

Nest gRPC 클라이언트 호출은 Observable을 반환하므로 응답 처리 기준을 정합니다.

핵심: gRPC 오류의 상당수는 네트워크보다 protoPath, package, service/method 이름 불일치에서 시작합니다.