전체 글(60)
-
Node.js - 필요없는 code 정리하는 법
개요 기능적 확장을 계속하다 보면 프로젝트에 사용하지 않는 모듈 또는 code들이 생겨난다. 이러한 파일들은 지속적으로 쌓이게 되면서 나중에는 어떤 코드들이 현재 쌓여있는지 알 수가 없게 된다. 이를 혁신적으로 도와주는 친구가 있는데, madge라는 친구가 있다. 흔히 madge의 경우에는 circular dependency를 찾기 위해서 많이 사용하고 있는데, 쓸데없는 코드를 찾는데도 도움을 줄 수 있다. 예제 // package.json { "scripts": { "check:orphans-check": "npx madge --orphans --extensions ts ./src" } } 사용법은 간단하다. 위와 같이 scripts에 등록해서 주기적으로 체크를 해주면 된다. 주의점은 실제로 사용하지 ..
2022.03.02 -
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