
3 layer Architecture
- 3 layer architecture는 스프링 뿐만 아니라 대부분의 개발에서 사용되는 디자인 패턴입니다.
- 이런 디자인은 어플리케이션을 3개의 층으로 분리시켜 모듈화, 유지보수성, 확장성을 높히는데 목적이 있습니다.
3 layer
presentation layer
- controller layer 혹은 web 레이어라고도 합니다.
- 클라이언트에서 request 요청이 들어오면 간단한 유효성 검사, 데이터 형식을 검사합니다.
service layer
- 클라이언트에서 요청한 요구사항을 실질적으로 처리하는 역할입니다.
- presentation layer에서 요청을 받은 데이터를 가공하거나, 실행하여 결과를 넘겨줍니다.
data access layer
- presistance layer 혹은 repository layer라고 합니다.
- 데이터베이스와 소통하여 데이터를 저장, 수정, 조회, 삭제하여 결과를 service layer로 넘겨줍니다.
그럼 3 layer architecture는 왜 사용하는 걸까?

사진출처는 제 깃허브 레포지토리중 하나 입니다하핫
자바스크립트로 만든 게시판 백엔드 로직중 댓글을 저장하는 부분입니다.
짧은 코드이기 때문에 오류가 발생해도 바로 원인을 찾을 수 있습니다.
하지만 이렇게 작성된 코드가 100줄이 넘는다면 개발자는 오류를 쉽게 찾을 수 있을까요?
대댓글 같은 새로운 기능이 추가된다면 어떻게 해야 될까요?
담당자가 퇴사한 후 새로 업무를 받은 기존/신입 직원이 코드가 어떻게 구성이 되었는지 바로 인식할 수 있을까요??
이렇게 작성된 코드는 다시 사용이 가능할까요?
테스트코드를 작성한다면, 어떻게 작성해야 할까요?
이러한 문제들을 해결하기 위해, 각 클래스간의 단일책임 원칙을 지키기 위해 spring에서는 서버 개발관점에서 3 layer architecture로 역할을 분리하였습니다.
Three-Layer Architecture Pattern | Spring Boot Application Three-Layer Architecture