📘 Node.js 실무 백엔드 개발
📖 5장. 서비스 계층 설계 (Service Layer)
5.1 서비스 계층의 필요성
초기 프로젝트에서는 비즈니스 로직이 Controller에 직접 작성되는 경우가 많다.
하지만 프로젝트가 커질수록 다음과 같은 문제가 발생한다:
- Controller가 비대해짐
- 코드 재사용 어려움
- 테스트 어려움
- 로직 분리가 되지 않음
이 문제를 해결하기 위해 서비스 계층(Service Layer)을 도입한다.
5.2 서비스 계층의 역할
서비스 계층은 애플리케이션의 핵심 로직을 담당한다.
주요 역할:
- 비즈니스 규칙 처리
- 데이터 가공
- 여러 데이터 소스 조합
- 트랜잭션 관리
5.3 계층 구조에서의 위치
서비스 계층은 다음 위치에 존재한다:
Controller → Service → Model → Database
Controller는 요청을 전달하고, Service는 실제 로직을 수행한다.
5.4 Controller와 Service의 책임 분리
Controller
- 요청 데이터 수신
- 입력 검증
- 응답 반환
Service
- 비즈니스 로직 처리
- 데이터 처리 흐름 제어
5.5 서비스 계층 설계 원칙
1) 단일 책임 원칙
하나의 서비스는 하나의 책임만 가진다.
2) 재사용성
여러 Controller에서 사용할 수 있어야 한다.
3) 독립성
특정 프레임워크에 의존하지 않도록 설계한다.
5.6 사용자 서비스 설계
사용자 관련 로직은 다음과 같이 구성된다:
UserService
- registerUser
- loginUser
- getUser
각 기능은 명확한 역할을 가진다.
5.7 인증 로직의 위치
로그인과 인증 처리 로직은 Service 계층에 위치해야 한다.
이유:
- 보안 로직 집중 관리
- 재사용 가능
- 테스트 용이
5.8 데이터 처리 흐름
사용자 로그인 흐름:
Controller
↓
Service (비밀번호 검증, 토큰 생성)
↓
Model (DB 조회)
5.9 예외 처리 전략
Service 계층에서는 오류 발생 시 직접 응답을 반환하지 않는다.
대신 에러를 상위 계층으로 전달한다.
Service → throw Error → Controller → Error Handler
5.10 서비스 계층의 장점
- 코드 구조 명확화
- 유지보수 용이
- 테스트 가능
- 로직 재사용 가능
5.11 서비스 분리 기준
서비스는 기능 단위로 분리한다:
AuthService
PostService
UserService
각 서비스는 독립적으로 관리된다.
5.12 정리
이 장에서는 서비스 계층의 역할과 설계 방법을 학습하였다.
핵심 내용:
- Controller와 로직 분리
- Service 중심 구조 설계
- 비즈니스 로직 집중 관리
다음 장에서는 데이터베이스 접근을 담당하는 Repository 계층을 설계한다.
📘 Node.js 실무 백엔드 개발
'Software > JavaScript' 카테고리의 다른 글
| Node.js 실무 백엔드 개발 #4 (0) | 2026.07.05 |
|---|---|
| Node.js 실무 백엔드 개발 #3 (0) | 2026.06.28 |
| Node.js 실무 백엔드 개발 #2 (0) | 2026.06.21 |
| Node.js 실무 백엔드 개발 #1 (0) | 2026.06.14 |
| javascript 시작하기 - 비트박스 리듬 (0) | 2026.05.14 |
