refactor: Archive_Orphans 정리 및 Frontend/Backend/Architecture 분류 재배치 [2026-05-08]
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
---
|
||||
category: Backend
|
||||
tags: [auto-wikified, technical-documentation, backend]
|
||||
title: NestJS Microservices Module
|
||||
description: "NestJS는 마이크로서비스 구축을 위한 내장 지원(built-in support) 기능을 제공하며, TCP, Redis, NATS, RabbitMQ, Kafka, gRPC 등 다양한 전송 계층(transport layer)을 지원하는 프레임워크입니다 [1, 2]."
|
||||
last_updated: 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*
|
||||
Reference in New Issue
Block a user