카테고리 없음

[Node.js] 스터디 4주차. 프로젝트 아키텍처

키또카또 2026. 4. 1. 17:29

 

아키텍처 종류

  • MVC 구조

애플리케이션을 Model, View, Controller 로 나눠서 책임 분리

my-node-app/
├── node_modules/
├── src/
│   ├── models/           # 데이터베이스 모델
│   ├── views/            # 템플릿 (HTML, EJS 등)
│   ├── controllers/      # 로직 및 요청 처리
│   ├── routes/           # 라우터 정의
├── public/               # 정적 파일 (CSS, 이미지, JS)
├── .env                  # 환경 변수
├── .gitignore
├── package.json
└── server.js             # 서버 초기화
  • REST API

비즈니스 로직을 분리하고 각 기능에 대한 엔드포인트 관리에 용이함

my-node-app/
├── node_modules/
├── src/
│   ├── controllers/      # 각 API 엔드포인트의 로직 처리
│   ├── routes/           # REST API 라우트 정의
│   ├── models/           # 데이터베이스 모델 (ORM 사용 시)
│   ├── services/         # 비즈니스 로직
│   ├── middleware/       # 미들웨어 (인증, 로깅 등)
├── .env
├── .gitignore
├── package.json
└── server.js             # 서버 초기화 및 API 라우트 연결
  • 클린 아키텍처

비즈니스 로직과 데이터베이스, UI, 외부 인터페이스를 분리해 애플리케이션의 유연성을 극대화하는 구조

my-node-app/
├── src/
│   ├── entities/         # 비즈니스 엔티티 (핵심 모델)
│   ├── use-cases/        # 비즈니스 로직
│   ├── controllers/      # UI, API 요청 처리
│   ├── gateways/         # 외부 인터페이스 (DB, 외부 API)
│   └── frameworks/       # 프레임워크 (Express, Koa 등)
├── .env
├── .gitignore
├── package.json
└── server.js             # 서버 초기화
  • 서버리스

서버 없이 애플리케이션을 구축하는 구조. 각 기능은 독립된 서비스로 배포되고, 클라우드 제공 업체에서 실행됨

my-node-app/
├── src/
│   ├── handlers/         # 각 Lambda 함수 핸들러
│   ├── services/         # 비즈니스 로직
│   └── utils/            # 유틸리티 함수
├── .env                  # 환경 변수
├── serverless.yml        # Serverless Framework 설정
└── package.json

 

사용할 라이브러리

  • cors - 익스프레스에서 사용할 수 있는 미들웨어로, CORS 설정을 쉽게 관리할 수 있게 해 준다
  • dotenv - 환경변수를 .env 파일에 저장하고 process.env로 로드하는 의존성 모듈
  • http-status-codes - HTTP 상태 코드를 의미있는 상수로 제공한다.
  • mysql2 - nodejs 환경에서 mysql에 접근하기 쉽게 도와주는 라이브러리