Files
2nd/10_Wiki/Topics/Domain_Programming/Backend/NestJS_Microservices_Module.md
T
Antigravity Agent c24165b8bc refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조
에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게
[공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류.
문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인).

- Topic_Programming → Domain_Programming (내부 구조 보존)
- Topic_Graphic → Domain_Design
- Topic_Business → Domain_Product
- Topic_General → Domain_General
- _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning),
  Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing)
- 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서)
- 빈 폴더 정리 (memory/procedures)
- 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 11:05:56 +09:00

3.8 KiB

category, tags, title, description, last_updated
category tags title description last_updated
Backend
auto-wikified
technical-documentation
backend
NestJS Microservices Module NestJS는 마이크로서비스 구축을 위한 내장 지원(built-in support) 기능을 제공하며, TCP, Redis, NATS, RabbitMQ, Kafka, gRPC 등 다양한 전송 계층(transport layer)을 지원하는 프레임워크입니다 [1, 2]. 2026-05-04

NestJS Microservices Module

📌 Brief Summary

NestJS는 마이크로서비스 구축을 위한 내장 지원(built-in support) 기능을 제공하며, TCP, Redis, NATS, RabbitMQ, Kafka, gRPC 등 다양한 전송 계층(transport layer)을 지원하는 프레임워크입니다 [1, 2]. 이 모듈은 요청-응답(request-response) 및 이벤트 기반(event-based) 메시지 패턴을 제공하고, 단일 앱에서 HTTP와 마이크로서비스 통신을 동시에 처리하는 하이브리드 애플리케이션 작성을 가능하게 합니다 [2]. 일관된 API를 통해 메시지 브로커를 손쉽게 전환할 수 있어 자바스크립트/타입스크립트 스택 기반의 마이크로서비스 아키텍처 구현에 매우 적합합니다 [3, 4].

📖 Core Content

  • 다양한 전송 계층(Transport Layer) 지원: NestJS의 마이크로서비스 모듈은 Redis, NATS, Kafka, RabbitMQ, gRPC, TCP 등을 기본적으로 지원합니다 [1-3]. 이들은 전송 메커니즘 전반에 걸쳐 일관된 API를 제공하므로, 필요에 따라 메시지 브로커를 전환하는 작업을 매우 직관적으로 만들어 줍니다 [3].
  • 통신 패턴 및 하이브리드 애플리케이션: 이 프레임워크는 마이크로서비스 간의 요청-응답(request-response) 패턴과 이벤트 기반(event-based) 메시지 패턴을 모두 지원합니다 [2]. 또한, 일반적인 HTTP 요청 처리와 마이크로서비스 전송 계층을 동시에 제공하는 하이브리드 애플리케이션(hybrid applications)을 쉽게 구축할 수 있습니다 [2].
  • 도메인 경계와 모듈 시스템 매핑: NestJS의 모듈 시스템은 기존의 모놀리식(Monolith) 시스템을 마이크로서비스로 분해할 때, 마이크로서비스의 도메인 경계에 자연스럽게 매핑되도록 설계되어 있어 확장성 있는 아키텍처를 돕습니다 [2].
  • 모노레포(Monorepo) 기반 구성: 마이크로서비스 구현 시 nest new --monorepo를 사용하거나 Turborepo/Nx 워크스페이스를 통해 모노레포 환경을 구축할 수 있습니다 [5]. 이때 DTO와 같은 공유 코드는 libs/ 패키지에 위치시켜 모든 개별 서비스에서 임포트하여 사용하는 방식을 취합니다 [5].

⚖️ Trade-offs & Caveats

  • 공유 라이브러리 동기화 및 배포의 복잡성: 마이크로서비스 환경에서 모노레포를 통해 DTO 등 공유 라이브러리를 사용할 경우, 여러 서비스 간의 버전을 관리하고 동기화하며 배포하는 과정이 급격히 까다로워지고 고통스러워질 수 있습니다 [6].
  • 분산 모놀리스(Distributed Monolith)의 위험성: 여러 마이크로서비스 간에 엔티티(Entity)를 직접 임포트하여 공유하는 것은 심각한 안티 패턴입니다 [6]. 예를 들어 서비스 A가 서비스 B의 엔티티를 직접 임포트하게 되면, 이는 진정한 마이크로서비스가 아니라 시스템이 강하게 결합된 '분산된 모놀리스' 구조를 초래하게 됩니다 [6].
  • 오버헤드 및 프레임워크 배선(Wiring) 비용: 소규모 팀(2~5명)이거나 복잡도가 낮은 시스템에서는 NestJS가 요구하는 구조적 셋업(모듈, 프로바이더, DTO, 인터셉터 등) 자체가 비용으로 작용할 수 있습니다 [7]. 비즈니스 로직(기능) 구현보다 프레임워크의 배선 작업에 더 많은 시간을 할애하게 될 위험이 있습니다 [7].

Last updated: 2026-05-03