데브허브 | DEVHUB | [BE] Nest.js - 4강: 백엔드 프레임워크 Nest.js의 기본구조 (feat. Controller, Service, Module)[BE] Nest.js - 4강: 백엔드 프레임워크 Nest.js의 기본구조 (feat. Controller, Service, Module)
- Nest.js는 TypeScript 기반의 Node.js 백엔드 프레임워크로, 모듈 단위 아키텍처와 의존성 주입(DI)을 통해 안정적이고 확장 가능한 서버 개발을 지원합니다. 🚀
- Express와 달리 정해진 폴더 구조와 체계적인 개발 방식으로 대규모 프로젝트 및 협업 환경에 특히 적합하며, 코드 분석 및 유지보수가 용이합니다. 🏗️
- Nest.js의 핵심 구성 요소는 클라이언트 요청을 처리하는 컨트롤러, 비즈니스 로직을 수행하는 서비스, 그리고 이 둘을 기능 단위로 묶어 관리하는 모듈입니다. 🧩
- 클라이언트 요청은 컨트롤러가 받아 서비스로 전달하고, 서비스는 데이터베이스 통신 및 로직 처리 후 결과를 컨트롤러에 반환하여 클라이언트에 응답합니다. 🔄
- 모듈은 관련된 기능을 묶어두는 폴더로, 사용자, 상품, 주문 등 기능별로 분리하여 코드 찾기, 유지보수, 기능 확장 및 협업 효율성을 극대화합니다. 📦
- 서비스는 Nest.js에서 '프로바이더'로 등록되어 컨트롤러나 다른 서비스에 의존성 주입 방식으로 재사용될 수 있으며, 이는 코드 재활용성을 높이는 핵심 메커니즘입니다. 💉
- 컨트롤러는 HTTP 요청과 응답을 담당하는 '입구' 역할로, 누가 무엇을 요청했는지 받아 서비스에 일을 시키고 결과를 반환하는 중간 관리자입니다. 🚪
- 서비스는 데이터 처리, 계산, 조건 판단, 외부 API 호출 등 실제 애플리케이션의 모든 핵심 비즈니스 로직을 처리하는 '실제 일꾼' 역할을 합니다. 🛠️
- 의존성 주입은 특정 서비스의 기능을 다른 컴포넌트에서 직접 생성하지 않고 주입받아 사용하는 방식으로, 코드의 결합도를 낮추고 유연성을 높입니다. ✨