Nest.js 공식문서를 살펴보면 REST, GraphQL, WebSocket 등 다양한 기능을 제공하는걸 알 수 있다.
하지만 공식문서에는 없는 작지만 숨겨진 기능들이 존재한다.
이번 포스트에서는 이러한 기능 중 하나인 CLI Plugin에 대한 소개와 직접 플러그인을 만드는 방법을 소개한다.
"nest.js" 태그로 연결된 5개 게시물개의 게시물이 있습니다.
모든 태그 보기Nest.js는 어떻게 순환 참조 문제를 해결할까?
이전 포스트에서는 Nest.js의 injector 구현을 살펴보았다.
injector가 특정 인스턴스의 의존성 타입을 알아내는 방법에 대한 글이었는데, 이번에는 injector를 구현하면서 발생했던 이슈에 대해 살펴보려고 한다.
Nest.js의 injector는 어떻게 생성자에 지정한 의존성 대상을 알아낼까?
최근 Nest.js의 기본 기능을 직접 구현해보는 스터디를 진행하였다.
스터디 목표는 Nest.js의 @Controller
, @Injectable
, @Module
등의 데코레이터를 만들고, DI를 구현해 간단한 API 서버를 올리는 기능을 구현하는 것이었다.
또한 최대한 Nest.js의 코드를 참고하지 않고 직접 구현해보려고 노력했다.
이 과정에서 의존성 주입을 위한 Injector를 구현하기 위해 특정 클래스가 가지고 있는 의존성을 파악하는 방법을 찾아야했다.
또한 구현 과정에서 순환참조 문제를 해결해야했고, 이를 위해 Nest.js에서 제공하는 forwardRef
가 어떤 원리도 동작하는지 알아보았다.
이번 포스트에서는 그 중에서 Injector의 의존성 주입 대상을 찾는 방법을 소개한다.
Open Telemetry와 Effect-TS로 Nest.js 애플리케이션 모니터링하기
요즘에는 웹 어플리케이션의 모니터링을 위해 Datadog과 같은 도구를 사용한다. 최근에 작업중인 사이드 프로젝트도 모니터링을 위해 Datadog을 사용하려고 했다. 하지만 APM(Application Performance Monitoring)과 같은 기능은 유료로 제공되기에 무료 솔루션을 찾아보았다.
그 과정에서 Open Telemetry이라는 프로젝트를 알게 되었다. 오픈소스이며 내가 원하는 기능을 제공하고 있었고, 또한 이전 포스트에서 소개한 Effect-TS는 Open Telemetry에 대한 지원이 잘 되어있었다. 그래서 이를 활용해 Nest.js 환경에서 각 계층에 대한 span을 aop를 통해 자동으로 생성하고, 이를 jaeger로 수집하는 방법을 설명하고자 한다.
포스트에 소개한 내용은 다음 저장소에 적용되어 있다. https://github.com/bae-no/bae-no-server
Fly.io를 활용한 도커 컨테이너 배포
호스팅 서버로 이용중인 Heroku 가 11월 이후로 더 이상 무료플랜을 지원하지 않아 이전부터 눈여겨본 Fly.io
로 이전한 과정을 담고있다.