directory 구성 - 계층형 / 도메인형

박영준·2023년 7월 26일
0

계층형

1. 정의

  • 서비스 계층에 따라 패키지를 설계하는 방식

  • controller 끼리, dto 끼리 묶는 방식

2. 장단점

장점

  • 서비스에 대한 이해가 없더라도 전체적인 구조를 파악하기 쉽다.

  • 중복된 코드가 발생할 가능성이 적다.

단점

  • 특정 기능을 수정하려고 하면, 모든 계층에 그와 관련된 코드가 있어서 수정하기 어렵다.

  • Github이나 여러 툴들을 사용해 협업시 개발자들 사이에서 merge conflict가 날수도 있다.

도메인형, 도메인 주도 설계 (DDD)

1. 정의

  • article, like 처럼 각 도메인 별로 나누고,
    각각의 도메인 아래에 controller, service, repository 등 layer 별로 패키지를 다시 나눈다.

  • global 또는 commons 에는 서비스 전체적으로 사용되는 코드로 구성한다.

2. 장단점

장점

  • 파일이 많을 경우, 유용할 수 있다.

  • 원하는 클래스를 찾기 쉽다.

  • 코드의 응집도가 높아진다.

단점

  • 개발자의 설계 취향에 따라, 구조가 많이 달라지기도 한다.

  • 다른 패키지에 있는 Class 들을 서로 참조하여 순환참조가 발생할 수 있다.


참고: [Spring] directory 구성 (계층형/도메인형)
참고: [Spring] 패키지 구조(계층형, 도메인형)

profile
개발자로 거듭나기!

0개의 댓글