[Spring] 패키지 구조

yrok·2023년 10월 24일
0

📌 개요

이번에 백엔드 포지션으로 프로젝트를 진행하게 됐다. 프로젝트 시작 전에 패키지 구조를 어떤식으로 구성하면 좋을지 알아보고자 본 글을 작성.

💡 계층형 구조

스프링 웹 계층

  • Web Layer : 사용자의 요청과 용청에 대한 응답 반환의 전반적인 처리가 일어나는 영역
  • Service Layer : 실질적인 애플리케이션 비즈니스 로직이 일어나는 영역
  • Repository Layer : DB에 접근 및 통신하는 영역

계층형 구조는 말 그대로 계층별로 패키지를 구성하는 방식이다. Controller, Service, Repository 등과 같이 계층을 대표하는 디렉터리가 존재하고, 그 안에 클래스가 존재한다.

계층형 구조는 전체적인 구조를 빠르게 파악할 수 있지만, 각 패키지에 너무 많은 클래스들이 존재한다는 단점이 있다.

💡 도메인형 구조

스프링 웹 계층이 아닌 도메인 별로 패키지를 분리한 구조이다.

도메인형 구조는 관련된 코드들이 응집해있고 각 도메인이 서로 의존하는 코드가 적도록 설계하기 적합하여 코드의 재활용성이 향상된다는 장점이 있다. 하지만, 프로젝트에 대한 이해도가 낮을 경우 전체적인 구조를 파악하기 어렵다는 단점이 있다.

🤔 결론

규모가 작은 단순한 프로젝트에서는 계층형, 도메인형이 상관없지만 규모가 커질수록 도메인 구조로 설계하는 것이 좋을 것 같다. 하나의 서비스 패키지에 서비스 클래스가 모두 들어있다고 생각하면...

패키지 구조에 정답은 없다. 자신이 관리하기 쉽고, 능률을 향상시킬 수 있는 구조를 찾아서 사용하자.
다양한 기술 블로그에서 계층형, 도메인형 외에도 모듈형 등 다양한 패키지 구조를 찾아볼 수 있다.
더 효율적일 것 같다고 생각하는 패키지 구조를 적용해보자.

profile
공부 일기장

0개의 댓글