
0. 들어가기 전Web에서는 API에 대한 Request와 Response에 대해서 브라우저의 네트워크 탭을 열어 정보를 확인할 수 있다. 따라서 request에 대한 값과 response에 대한 값은 암호화 처리를 통해 외부에 데이터가 노출되지 않게 해야한다. nestjs에서는 해당 작업을 하기 위해 라이브러리를 개발 후 npm에 배포 하였다. 해당 글은 사용 방법을 정리한다. nest-encrypt-cycleA NestJS interceptor that encrypts/decrypts request and response bodies. Latest version: 1.1.1, last published: a day ago. Start using nest-encrypt-cycle in your pro..

들어가기 전회사에서 운영 중인 웹 서비스는 사용자에게 알림을 제공하는 기능이 있었다. 기존에는 HTTP GET 요청을 사용해 데이터를 가져오는 방식을 사용하였으나, 실시간으로 반영해달라는 사업부에 요청이 있었고, 이를 위해 Socket을 사용하는 건 오버스펙이라고 판단하였고, 운영 자원이 많지 않아 Polling으로 5초 단위로 API를 호출하는 방식으로 처리하였다. 시간이 지나고 서비스 사용자가 많아짐에 따라 Polling 방식은 너무 사용자의 수에 따라 과도하게 API를 요청하는 문제가 있었기에 이를 개선하기 위해 SSE를 도입하였다. SSESSE는 Server Side Event의 약자로, HTTP 통신을 이용하여 서버에서 클라이언트에게 이벤트를 발송하는 기법이다. 이는 양방향 통신이 아닌 단방향..
해당 글은 NestJS + TypeORM 기준으로 작성되었습니다. node-optionalA utility class for handling optional values. Latest version: 1.0.2, last published: 24 days ago. Start using node-optional in your project by running `npm i node-optional`. There are no other projects in the npm registry using node-optional.www.npmjs.com node-optionalnode-optional 패키지는 node에서도 Java의 Optional과 유사하게 처리를 할 수 있는 방법이다. 나는 NestJS, T..

참고자료 : https://docs.nestjs.com/faq/request-lifecycle 00. 들어가기 전이번 포스트는 NestJS에서 Request를 받아서 Response 할 때까지 어떻게 흘러가는 지인, NestJS Request Lifecycle에 대해 정리한 글이다. 해당 부분에 대해서는 공식 문서만 참고하였다. 01. NestJS Lifecycle아래의 이미지는 NestJS의 생명 주기를 도식화한 것이다. HTTP Request가 들어오면 Middleware, Guard, Interceptor, Pipes, Controller, Interceptor 순으로 거쳐서 Response가 된다. 여기에서 특이한 건 Filter 부분인데, 타 프레임워크와 다르게 NestJS에서의 Filter는 ..

참고글 : https://javascript.plainenglish.io/how-to-write-simple-router-decorators-for-expressjs-with-typescript-3b8340b4d453 How to Create Express Router Decorators with TypeScriptMake Express server routers cleaner with TypeScript decoratorsjavascript.plainenglish.io 00. 들어가기 전다른 글에서도 이야기한 적이 있지만 필자는 NodeJS -> Spring Boot -> NestJS 순서로 백엔드를 학습하여 현재는 Controller - Service - Repository - Domain 레이어 계..

00. 들어가기 전필자는 백엔드 개발을 Node(Express)로 시작하였지만, 동아리 활동으로 인해 Spring Boot를 그 후에 접하고 Node에서 Spring Boot처럼 구현할 수 있는 NestJS에 매력을 느껴 지속적으로 사용 중이다. 사실 NestJS를 가장 좋아하지만 Spring boot로 개발해야하는 경우도 어쩔 수 없이 있기에 둘 다 사용하는 편이라 그런 지 NestJS를 사용할 땐 Spring boot의 특정 기능이 부럽고, Spring boot를 사용할 땐 NestJS의 특정 기능이 부러워질 때가 많은 데, 그 중 NestJS를 사용 중에 가장 Spring Boot에서 부러웠던 건 @Transactional 데코레이더였다. 너무나 쉽게 트랜잭션을 관리하게 해주는 기능이라고 생각했는..

NestJS에서는 Spring boot의 Events의 기능과 마찬가지로 이벤트를 발행하고 구독하는 기능을 @nestjs/event-emiiter를 이용하여 기본적으로 제공한다. 해당 기능을 이용하면 여러가지 기능을 로직에서 분리하여 개발할 수 있다는 장점이 있다. 오늘은 Nestjs에서 이벤트를 발행하고 구독하는 기능을 정리하고자한다! 00. 들어가기 전(프로젝트 셋팅) 해당 포스팅을 위해 새로운 프로젝트를 생성한다. 아래의 명령어를 이용하면 패키지 관리자로 npm, yarn, pnpm을 선택하라고 나올텐데 필자는 pnpm을 사용한다. npx nest new [project name] Project가 생성되면 아래와 같이 나오면 성공이다. 01. Event-Emiiter 설정 먼저 @nestjs/eve..

0. 들어가기 전에 NodeJS + Express를 이용하여 백엔드를 구축하면 일반적으로는 Func을 기반으로 라우터와 컨트롤러로 구성하는 계층 구조를 많이 볼 수 있다. 하지만 Express에서도 Spring boot나 NestJS와 같이 controller를 구성하여 controller-service-repository 계층 구조로 구성하고 싶은 개발자가 많을 거다. Class를 기반으로 Express를 Controller, Service, Repository로 계층을 구성하게 되면 비교적 Spring boot나 NestJS 개발자들도 쉽게 접근할 수도 있다는 장점이 있다. 이번에는 routing-controllers와 typedi를 이용하여 Express로 해당 계층을 구현할 예정이다. (1) Ro..

NestJS V10에서는 SWC를 사용하여 컴파일을 공식 지원합니다. 그 이외에도 다양한 변화가 있지만 그 변화는 아래의 글에 정리했으니 참고 해주세요. Nestjs V10의 변화점 올해 NestJS에서 V10을 발표했다. 나는 좀 뒤늦게 알게 되었지만 처음 공부할 때가 V8에서 V9 막 넘어갈 때였는 데, 확실하게 업데이트가 빠른 프레임워크인 것 같다. NestJS V10에서 발표한 가장 큰 내 pinomaker.com 오늘은 NestJS를 V10으로 마이그레이션 한 후에 SWC를 적용하는 과정까지를 포스팅 합니다. 1. NestJS Project 생성하기. 먼저 Nest Cli를 이용하여 NestJS 프로젝트를 생성합니다. npx nest new [project name] Package Manager..

올해 NestJS에서 V10을 발표했다. 나는 좀 뒤늦게 알게 되었지만 처음 공부할 때가 V8에서 V9 막 넘어갈 때였는 데, 확실하게 업데이트가 빠른 프레임워크인 것 같다. NestJS V10에서 발표한 가장 큰 내용은 SWC, Redis 와드카드 구독 CacheModule 분리, node 12 이하에서 지원 중지 등이 있다. 오늘은 간단하게 NestJS V10에 대한 특징을 간단하게 정리하고자한다. 1. SWC SWC, Speedy Web Compiler는 컴파일과 번들링 모두에 사용할 수 있는 확장 가능한 Rust 기반의 플랫폼이다. 기존의 Babel의 대체재라고 생각하면 이해하기 편하다. Nest Cli와 SWC를 같이 사용하게 되면 개발 프로세스 속도를 간단하게 대폭 상승 시킬 수 있다. SWC..