패키지 구조에 대해서 배웠다기 보다 Spring MVC 패턴으로 웹 개발하게 되면 Model, View, Controller 이 세 가지로 나누는 것으로 배웠고, 이 방식이 자연스러운 방식이라고 생각했다. 그런데 github에서 다른 사람들의 코드를 확인하면 내가 배운 내용과 동일한 구조를 가지거나 다른 구조를 가지는 경우가 있었다. 그래서 이참에 한 번 패키지 구조에 대해서 알아보고 정리하고자 작성한다.
1. 계층형 패키지 구조
controller
⎿ TaskController
⎿ MemberController
service
⎿ TaskService
⎿ MemberService
dao
⎿ TaskDAO
⎿ MemberDAO
dto
⎿ TaskDTO
⎿ MemberDTO
위에 패키지 구조가 수업에서 다뤘던 방식으로 계층 패키지 구조가 된다. 구조를 보면 애플리케이션에서 사용하는 계층별로 패키지를 구성하는 것을 볼 수 있다.
공부한 내용을 정리하면 장단점은 다음과 같다.
1-1. 장﹒단점
장점
- 전체적인 프로젝트 구조를 쉽게 파악할 수 있다.
- API나 비즈니스 로직을 확인하고 싶다면 그에 해당되는 패키지를 찾아서 확인할 수 있다.
- 계층별 응집도가 높다
- 계층별 수정이 일어날 때, 하나의 패키지만 보면 된다.
단점
- 도메인별 응집도가 낮다.
- 도메인의 흐름을 파악하기 힘들다.
- DTO의 흐름을 파악할 때, 전체적인 패키지를 확인해야 하는 불편함이 있다.
- 도메인과 관련된 스펙 & 기능이 변경되면, 변경 범위가 넓다.
- Task에 대한 변경점이 발생했을 때, 여러 패키지에서 변경이 일어난다.
- 도메인의 흐름을 파악하기 힘들다.
- 사용자의 행위(유스케이스) 표현이 어렵다.
- 규모가 커지면 하나의 패키지 안에 여러 클래스들이 모여서 구분이 어렵고 관리가 힘들어진다.
2. 도메인형 구조
2-1. 장﹒단점
장점
- 도메인별 응집도가 높다.
- 특정 도메인의 흐름을 파악하고 싶다면 특정 도메인이 속한 패키지만 확인화면 된다.
- 도메인과 관련된 기능 부분에 변경사항이 발생해도 변경 범위가 좁다.
단점
- 애플리케이션의 전체 흐름을 파악하기 어렵다.
- 개발자 관점에 따라 클래스의 위치 선정이 어렵다.
- 협업하면서 개발할 때는 의사소통이 원활하지 않을 경우 개발에 많은 불편을 초래할 수 있다.
reference
https://ksh-coding.tistory.com/96
[아키텍쳐] 패키지 구조 : 계층형 VS 도메인형 어떤 것을 선택할까?
🎯 0. 들어가기 전 MVC 패턴 & 자바 기반의 콘솔 애플리케이션에서는 관성적으로 model(domain) & controller & view 패키지를 만들고 시작하는 경우가 대부분이었다. 웹 애플리케이션을 구현하면서, 설계
ksh-coding.tistory.com
'Programming > Java' 카테고리의 다른 글
[JPA] 패러다임 불일치 - 우린 달라 달라 (0) | 2024.02.19 |
---|---|
[JPA] JPA 시작 - SQL 잘 작성하는 개발자 (0) | 2024.02.17 |
[JAVA] LocalDateTime 년월일 값만 출력 (0) | 2023.11.11 |
[Servlet / JSP] JSP 출력 버퍼 (0) | 2023.08.22 |
[Servlet / JSP] 서블릿 (0) | 2023.08.17 |