아키텍처 종류
- 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에 접근하기 쉽게 도와주는 라이브러리