한빛미디어 서평단 활동을 위해서 책을 협찬 받아 작성된 서평입니다. 안녕하세요 dev_writer입니다. 이번에는 한빛미디어 서평단 활동으로 받은 에 대해 리뷰해 보겠습니다.책을 신청한 이유개발자로 취업한 이후 ChatGPT, Claude (특히 Claude Code), Cursor 등 다양한 AI 에이전트들의 등장과, Base44 / Lovable 같은 AI 에디터들이 빠르게 확산됨에 따라 앞으로 개발자로서 어떤 경쟁력을 갖추어야 할 지 고민을 하고 있었습니다. 또, 실무에서도 점차 AI 의존도가 높아지면서 제 스스로의 성장이 충분히 이루어지지 못한다는 불안을 느껴 해당 책을 읽어보기로 했습니다.목차책은 6개의 장과 특별 부록으로 구성되어 있습니다.아키텍트가 하는 일소프트웨어 설계아키텍처 설계아키텍처..
플랫폼 독립성Nest는 플랫폼에 독립적인 프레임워크입니다. 이는 다양한 종류의 애플리케이션에서 재사용 가능한 로직을 개발할 수 있음을 의미합니다. 예를 들어, 대부분의 컴포넌트는 서로 다른 HTTP 서버 프레임워크 (예: Express, Fastify)는 물론, 다양한 형태의 애플리케이션 (예: HTTP 서버, 서로 다른 전송 계층을 사용하는 마이크로서비스, 웹소켓)에서도 변경 없이 재사용할 수 있습니다.한 번 만들고 어디서든 사용하세요문서의 Overview 섹션에서는 주로 HTTP 서버 프레임워크 (예: REST API 제공 앱, MVC 스타일의 서버사이드 렌더링 앱)를 사용하는 코딩 기법을 보여주지만, 이러한 모든 구성 요소는 마이크로서비스나 웹소켓처럼 다른 전송 계층 위에서도 사용할 수 있습니다. ..
Lifecycle eventsNest 애플리케이션과 모든 애플리케이션 구성 요소는 Nest가 관리하는 생명 주기를 가집니다. Nest는 주요 생명 주기 이벤트에 대한 가시성과, 해당 시점에 모듈, 프로바이더 또는 컨트롤러에서 등록된 코드를 실행할 수 있는 생명 주기 후크 (lifecycle hook)를 제공합니다.생명 주기 순서다음 다이어그램은 애플리케이션이 부트스트랩된 시점부터 Node 프로세스가 종료될 때까지 주요 생명 주기 이벤트 순서를 보여줍니다. 전체 생명 주기는 다음과 같이 세 단계로 나눌 수 있습니다: 초기화 (initializing), 실행 (running), 종료 (terminating). 이 생명 주기를 활용하면 모듈과 서비스의 적절한 초기화, 활성 연결 관리, 종료 신호 수신 시 애플..
모듈 지연 로딩기본적으로 모듈은 즉시 로드 (eagerly loaded) 되며, 이는 애플리케이션이 시작되면 모든 모듈이 즉시 로드된다는 의미입니다. 대부분의 애플리케이션에는 이 방식으로 충분하지만, 서버리스 환경에서 실행되는 앱이나 워커에서는 시작 지연 시간 ("콜드 스타트")이 중요하므로 병목이 될 수 있습니다. 지연 로딩을 사용하면 특정 서버리스 함수 호출에 필요한 모듈만 로드함으로써 부트스트랩 시간을 줄일 수 있습니다. 또한, 서버리스 함수가 "웜 (warm)" 상태가 되었을 때 다른 모듈을 비동기로 로드함으로써 이후 호출의 부트스트랩 시간을 더욱 단축할 수 있습니다 (지연된 모듈 등록).힌트Angular 프레임워크에 익숙하다면 "lazy-loading modules (지연 로딩 모듈)"이라는 용..
순환 의존성순환 의존성은 두 클래스가 서로를 필요로 할 때 발생합니다. 예를 들어, 클래스 A가 클래스 B를 필요로 하고, 클래스 B도 클래스 A를 필요로 하는 경우입니다. Nest에서는 모듈 간 또는 프로바이더 간에 이러한 순환 의존성이 발생할 수 있습니다. 순환 의존성은 가능하면 피하는 것이 좋지만, 항상 그렇게 할 수는 없습니다. 이러한 경우를 위해 Nest는 두 가지 방법으로 프로바이더 간의 순환 의존성을 해결할 수 있도록 지원합니다. 이 장에서는 forwardRef를 사용하는 방법과, DI 컨테이너에서 ModuleRef 클래스를 통해 프로바이더 인스턴스를 가져오는 방법을 설명합니다. 또한, 모듈 간의 순환 의존성을 해결하는 방법도 설명합니다.경고순환 의존성은 index.ts와 같은 배럴 파일 (..
동적 모듈 (Dynamic modules)모듈 장에서는 Nest 모듈의 기본 개념과 동적 모듈에 대한 간단한 소개를 다룹니다. 이 장에서는 동적 모듈의 주제를 확장하여 설명합니다. 이 장을 마치면 동적 모듈이 무엇이며, 이를 어떻게 그리고 언제 사용해야 하는지를 잘 이해할 수 있게 됩니다.소개문서의 Overview 섹션에 있는 대부분의 애플리케이션 코드 예제는 일반적인, 즉 정적 모듈을 사용합니다. 모듈은 전체 애플리케이션의 모듈화 된 일부로써 함께 동작하는 프로바이더나 컨트롤러 같은 컴포넌트 그룹을 정의합니다. 모듈은 이러한 컴포넌트에 대한 실행 컨텍스트 (또는 스코프)를 제공합니다. 예를 들어, 모듈 안에 정의된 프로바이더는 해당 모듈의 다른 구성원에게는 export 없이도 접근할 수 있습니다. 반면..