gRPC(7)
-
Nest.js 탐험기 7 - microservice (grpc) 를 사용해보자 - 인터셉터
개요 공통된 로직을 처리해야 할 경우 interceptor를 활용할 수 있다. nest.js grpc의 경우에도 interceptor를 활용할 수 있게 제공이 되는데, 이를 활용해 보도록 하자. 예제 1. Interceptor 생성 아래와 같이 interceptor에 대한 code를 작성해준다. @Injectable() export class GrpcLoggingInterceptor implements NestInterceptor { private readonly logger = new Logger(GrpcLoggingInterceptor.name); intercept(context: ExecutionContext, next: CallHandler): Observable { this.logger.log(..
2022.03.06 -
Nest.js 탐험기 7 - microservice (grpc) 를 사용해보자 - 에러처리
개요 nest.js에서의 grpc의 에러 처리에 대해서 간략하게 알아보도록 하자. grpc status code http status code와 같이 grpc도 상태코드가 존재한다. 자세한 내용은 error code항목을 참조하면 좋다. RpcException nest.js에서는 RpcException을 통해서 쉽게 에러를 보내줄 수 있다. // internal server error throw new RpcException({ code: 13, message: 'malgogi internal server error' }) 결론 http의 status code와 유사하기 때문에 크게 기술할 내용은 없을 것 같다. 문서를 보고 적절한 코드와 메세지로 처리해주면 될 것 같다.
2022.02.27 -
Nest.js 탐험기 6 - microservice (grpc) 를 사용해보자 - Metadata 설정
개요 이전 챕터까지는 통신방식의 구현까지 다루었다. 이제부터는 부가 기능에 대해서 하나씩 다루어 보려고 한다. 우선 이번에는 Metadata를 다루어 보자. Metadata HTTP Header와 같이 GRPC에서는 metadata를 설정할 수 있다. (metadata) 실제적으로 Headers frame을 통해서 통신한다. 예제 예제 1. 서버에서 클라이언트 헤더 값을 받을 때 // HeroesController에 아래와 같이 값을 가져올 수 있다. @GrpcMethod('HeroesService', 'FindOne') findOne(data: HeroById, metadata?: Metadata, call?: ServerUnaryCall): Hero { // console..
2022.02.13 -
Nest.js 탐험기 5 - microservice (grpc) 를 사용해보자 - 통신방식 구현
개요 GRPC의 통신방식은 크게 4가지 방식이 존재한다. (unary, server streaming, client streaming, bidirectional-streaming) 이를 nest.js에서 구현해보도록 하자. 기본적으로 GRPC에 관한 내용은 GRPC 정의 및 통신 방식, 기본 구현은 GRPC 기본 구현을 살펴보고 오면 좋다. 통신방식 1. unary 해당 부분은 GRPC 기본 구현에 구현이 되어 있으므로 해당 내용을 참조하도록 하자. 2. server streaming 해당 방식은 단일 client 요청에 여러 server response를 보낼 때 사용한다. 이전에 구현했던 hero.proto 파일에 추가해보자. cf) repeated는 단일 message안에서 여러개의 item을 보내..
2022.01.23 -
GRPC란? - 고급 기능들
개요 이전의 포스트에서 GRPC에 대해 무엇인지 알아보았다. 이번 시간에는 고급 기능들에 대해서 정리해보려고 한다. Metadata 에러 처리 Interceptor 데드라인 TLS 해당 포스트는 개념에 대해서만 다루고 있고, 구현은 따로 글을 적어보려고 한다. 1. Metadata GPRC에서는 metadata 정보를 셋팅해서 데이터를 실어보낼 수 있다. 이는 HTTP/2의 headers frame을 통해서 주고 받을 수 있다. 아래는 custom하게 metadata를 설정해서 보내는 예제이다. cf) 사진에서 보면 어떤 header들은 :scheme http와 같이 설정된 것을 볼수 있는데, 이는 http/2의 header compression spec (HPACK) 중 lookup table 에 관한..
2022.01.02 -
GRPC란? - 정의 및 통신 방식
GRPC란? RPC: 원격으로 method call을 할 수 있게 만들어진 방식 GRPC의 경우 이를 protocol buffer 및 HTTP2 방식으로 편리하게 구현할 수 있게 하였다. 특징 낮은 데이터 payload: rest API의 경우 HTTP의 텍스트 기반으로 전송된다. 하지만 GRPC는 binary 기반으로 전송하기 때문에 효율성이 좋다. IDL을 통한 강한 타입 체킹: protocol bufferIDL을 통해 rest API에 비해서 강한 타입 체킹이 가능하다. HTTP/2 지원: GRPC는 HTTP/2의 stream을 활용하기 때문에 HTTP/2를 통한 rest API에도 호환이 가능하다. 다양한 통신 방식을 지원: server stream 또는 client stream 또는 양방향 st..
2021.12.31