개발(58)
-
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 -
Nest.js 탐험기 4 - microservice (grpc) 를 사용해보자 - 튜토리얼편
개요 nest.js에서 제공하는 microservice module은 microservice들 간의 통신을 쉽게 구현하게 되어 있다. 기본적으로 http base를 통해서 web server를 구현하지만 여러가지 규격의 통신이 필요할 때가 있는데, nest.js에서는 이를 구현하기 편리하게 되어있다. grpc를 사용해서 통신하는 튜토리얼을 작성해보자. 설치 아래의 모듈을 추가해주도록 한다. # microservice를 구현하기 위해서 사용한다. yarn add @nestjs/microservices --save # grpc 용 yarn add @grpc/grpc-js @grpc/proto-loader --save예제 우선 nest.js guide 가이드에 나와 있는 예제를 찬찬히 따라해보자. 지금은 잘 ..
2021.12.28