
Controller - Service Layer - Data Access Layer (Repository Layer)
Controller - Model - View

비즈니스 로직은 지켜야 할 도메인 규칙을 코드로 옮긴 부분이다.
규칙이란, 사용자가 무언가를 요청했을 때 허용할지 말지, 어떻게 처리할지를 정하는 조건과 계산이다.
ex)
SOA 아키텍처에서 비즈니스 로직은 대부분 Service계층에서 작성된다
DTO(Data Transfer Object)는 계층 간 또는 외부로 데이터를 전달할 때, 필요한 정보만 안전하게 담는 전용 객체이다.
DTO를 사용하는 이유
필요한 데이터만 보내기 위해(DB 모델은 너무 많은 정보가 있기 때문에 다 보낼 필요가 없음)
보안(민감한 정보 숨기기)
계층 간 역할 분리 (도메인 모델vs전송 모델)
API 응답 형식 통일
ex) 유저 정보 응답
User 모델 (전체 정보)
// models/User.js
const User = {
id: 1,
name: "홍길동",
password: "secret123",
email: "gildong@example.com",
role: "admin",
createdAt: "...",
updatedAt: "..."
};
프론트에 필요한 정보만 주기 위해 DTO 객체를 사용한 예시
// dtos/UserDTO.js
class UserDTO {
constructor(user) {
this.id = user.id;
this.name = user.name;
this.email = user.email;
}
}
module.exports = UserDTO;