애플리케이션을 3개의 독립적인 계층으로 나누어 개발하는 방식
이렇게 계층을 나누면 유지보수성이 좋아지고, 코드의 재사용성이 높아진다.
1️⃣ Presentation Layer (UI 계층)
- HTTP 요청을 처리하고 데이터를 화면(View)으로 전달
- 데이터를 가공하는 로직은 서비스 계층에 위임
- 사용자와 데이터를 주고받는 역할만 수행
2️⃣ Business Layer (서비스 계층)
- 비즈니스 로직 처리 (예: 결제, 회원가입, 데이터 검증 등)
- UI 계층과 데이터 계층을 연결하는 중간 역할
- 데이터베이스와 직접 소통하지 않고, Repository 계층을 호출
3️⃣ Data Access Layer (데이터 계층)
- 데이터베이스에서 데이터를 읽고 쓰는 역할
- SQL을 직접 작성하지 않고, JPA 같은 ORM을 사용하면 자동으로 SQL 실행
- 다른 계층에서 DB에 직접 접근하지 않도록 함
🔹 3계층 아키텍처의 장점
✅ 코드 분리 (Separation of Concerns)
👉 역할이 분리되어 유지보수가 편리함
✅ 재사용성 (Reusability)
👉 UI를 바꿔도 비즈니스 로직을 그대로 사용 가능
✅ 유지보수성 (Maintainability)
👉 한 부분만 수정해도 전체 시스템에 영향을 주지 않음
🔹 3계층 아키텍처 흐름
1️⃣ 사용자가 /users/{id} 요청을 보냄
2️⃣ UserController(UI 계층)에서 요청을 UserService로 전달
3️⃣ UserService(서비스 계층)에서 UserRepository를 호출하여 데이터 조회
4️⃣ UserRepository(데이터 계층)에서 DB에서 데이터를 가져옴
5️⃣ 서비스 계층에서 데이터를 가공 후 Controller로 반환 → 최종적으로 클라이언트에게 응답 전달
📌 정리
'Spring' 카테고리의 다른 글
JWT + Filter + ArgumentResolver 동작 흐름 (0) | 2025.02.11 |
---|---|
HTTP의 Stateless와 JWT를 통한 인증 방식 (2) | 2024.09.10 |
컨트롤러 만들어서 URL 매핑 (0) | 2024.08.30 |
ORM이란? (0) | 2024.08.28 |
@Controller (0) | 2024.08.27 |