Spring 입문주차/2주차

1. 3 Layer Architecture

note994 2024. 8. 16. 12:05

메모장 프로젝트의 문제점

현재 우리가 작성한 메모장 프로젝트는 Controller 클래스 하나로 모든 API를 처리하고 있다.

현재는 API 수가 적고 기능이 단순하여 코드가 복잡해 보이지 않을 수 있지만 앞으로 기능이 추가되고 복잡해진다면 문제가 발생할 수 있다.

 

한 개의 클래스에 너무 많은 양의 코드가 존재하기 때문에 코드를 이해하기 어렵다.

현업에서는 코드의 추가 혹은 변경 요청이 계속 생길 수 있다.

문제가 발생했는데 해당 Controller 클래스를 구현한 개발자가 퇴사한다면?

 


3 Layer Architecture

이러한 문제점들을 해결하기 위해 서버 개발자들은 서버에서의 처리과정이 대부분 비슷하다는 걸 깨닫고, 처리 과정을 크게 Controller, Service, Repository 3개로 분리했다.

각 역할별로 하는 일을 정리해 보겠다.


1. Controller

클라이언트의 요청을 받는다.

요청에 대한 로직 처리는 Service에게 전담한다.

Request 데이터가 있다면 Service에 같이 전달한다.

Service에서 처리 완료된 결과를 클라이언트에게 응답한다.


2. Service

사용자의 요구사항을 처리 ('비즈니스 로직')하는 실세중에 실세이다.

따라서 현업에서는 서비스 코드가 계속 비대해지고 있다.

DB 저장 및 조회가 필요할 때는 Repository에게 요청한다.


3. Repository

DB 관리 (연결, 해제, 자원 관리)를 한다.

DB CRUD 작업을 처리한다.


전체적으로 보면 이렇게 연결된다.