Categories
Tags
8
16
32
![커버: [NESTJS] NestJS에서 Vitest로 테스트 환경 설정 문제 커버 이미지](/assets/images/post/covers/dalle-til-cover-edit.png)
NestJS에서 기본으로 제공하는 jest 유닛/E2E 테스트를 Vitest로 변경하면서 겪은 문제를 해결과정과 함께 정리합니다. 문제 상황 nest/cli를 이용해 기본 프로젝트를 생성 후 테스트 환경을 설정했습니다. 이 과정에서 controller.spec을 테스트하는 중 service가 주입되지 않아 undefined가 되어 테스트가 동작하지 않는 현상이 발생했습니다.
2025년 02월 25일![커버: [NESTJS] 많은 데이터를 스트리밍으로 처리해보자 커버 이미지](/assets/images/post/covers/TIL-nest2.png)
최근 프로젝트에서 데이터를 처리하는 과정에서 고민이 생겨 기록하고자 한다. 프론트에서 많은 데이터를 요청하고 처리하는데 사용자가 체감할 수 있을 정도로 느려지는 경험을 했다. 데이터는 로그 데이터로, 한 달을 기준으로 10,000건의 데이터가 쌓이는 것으로 가정하면 1년에 12만 건의 데이터가 쌓이는 셈이다. 1년을 서비스한 이후를 기준삼아 테스트하기 위해 Mock 데이터를 생성하고자 서비스 흐름을 토대로 Mock데이터를 생성한다. 유저 데이터 5천 개, 각 유저의 랜덤한 pk를 사용한 로그 데이터 10만 개를 생성한다. 이때 로그 데이터 10만 개를 가져오는데 너무 많은 딜레이가 생기고, 900ms까지 뛰는 것을 발견하게 됐다. 컴퓨터 사양이 나름 괜찮은 편인데도 불구하고 이 정도면, 노트북에서 어느정도 일지 테스트해보니 1초는 가뿐히 넘게 되었다. 어떻게 하면 한 번의 요청으로 데이터를 빠르게 가져올 수 있는지에 대한 고민을 정리하고 적용한 경험을 기록한다.
2024년 07월 30일![커버: [NESTJS] EJS, method override 라이브러리 사용과 문제 커버 이미지](/assets/images/post/covers/TIL-nest2.png)
method override 적용하기 NestJS를 사용하면서 서버사이드 렌더링도 이해할 겸, 사용법도 숙지할 겸 테스트하고 있었습니다. EJS를 사용하면서 수정하거나 삭제 작업을 수행하고자 했습니다. 하지만 form의 method는 GET과 POST만을 지원하기 때문에 PUT이나 DELETE와 같은 다른 method를 사용하려면 별도의 작업이 필요했습니다. 이미 검증된 라이브러리로 "method-override"를 설치하고 적용했습니다. NestExpressApplication으로 create해주고 app.use에 methodOverride를 적용했지만 동작하지 않는 문제가 발생해서 지금 포스팅으로 남깁니다.
2024년 04월 05일![커버: [NESTJS] Swagger와 Decorator, Pipe, Guard 알아보기 커버 이미지](/assets/images/post/covers/TIL-nest2.png)
문서화와 미들웨어 문서화는 프로젝트를 구성하면서 절대 빠질 수 없는 요소 중 하나라고 생각합니다. 오늘은 성격이 다른 두 가지 주제를 다루려고 합니다. 문서화에 사용되는 `Swagger(이하 스웨거)`를 설정하는 과정과 미들웨어의 성격을 가진 `Pipe(이하 파이프)`와 `Guard(이하 가드)`는 어떻게 사용하고 어디에 적용할 수 있는지 알아봅니다. Swagger 설정 스웨거는 `OpenAPI`는 오픈소스 같은 공개된 API의 개념이 아닙니다. `OpenAPI Specification(OpenAPI 사양)`은 다른 사람에게 API를 정의하기 위한 표준화된 수단을 제공하는 HTTP API용 사양 언어입니다. 줄여서 `OAS`라고 합니다.
2023년 10월 25일![커버: [NESTJS] Nest.js 프로젝트 초기 설정하기 커버 이미지](/assets/images/post/covers/TIL-nest2.png)
Nest.js 프로젝트 다루기 Nest.js(이하 네스트)는 Spring boot(이하 스프링)와 아주 유사한 구조를 가지고 있다. 스프링의 어노테이션과 대응하는 데코레이터와 `IoC(제어의 역전)`와 `DI(의존성 주입)` 개념이 사용된다. 설치와 실행 네스트를 사용하면서 `fastify`나 `express`와 달리 좋았던 부분은 각 개발 단위의 폼(form)을 생성해주는 `CLI`의 기능을 꼽을 수 있다. 프로젝트를 구성하는데 필요한 모든 기능을 `CLI`가 떠먹여준다고 해도 과언이 아니다. 스프링으로 굳이 비교해보자면 `initializr`가 초기 프로젝트 세팅만 해주는 반면, 네스트는 초기 세팅은 물론 확장되는 앱과 서브앱, 모듈 등을 자동으로 디렉토리 생성 및 파일 내용을 작성하고 임포트해준다. 얼마나 효율적인가? 😮
2023년 10월 24일