Closed JasonYoo1995 closed 1 year ago
최근에 진행했던 프로젝트에서 DDD 적이지 못했던 부분을 공유드려 봅니다.
저희 팀에 DishTriggerFieldValue
와 DishActionFieldValue
라는 엔티티가 존재했었습니다.
이전까지는 위 두 엔티티가 거의 동일하게 취급되어 FieldValueDTO
라는 객체를 프로젝트 전체에서 가져다 쓰고 있었죠.
그런데 최근 프로젝트에서 RecipeTriggerFieldValue
와 RecipeActionFieldValue
가 새로 생기면서 문제가 발생했습니다.
총 4개의 FieldValue
들이 서로 다른 성격을 가지고 있어 각각의 로직을 분리해야 됐죠. 하지만 그러려면 FieldValueDTO
를 4 개로 쪼개야 했는데, 영향 범위가 프로젝트 전체가 되어 버리니.. FieldValueDTO
를 없앨 수 없는 상황이 발생했습니다.
결국 이를 해결하기 위해 불필요한 로직이 추가되고, 현재는 FieldValueDTO
를 없애는 작업을 백로그로 남겨둔 상태입니다.
처음엔 나름 쓸만한 도메인이었지만, 정책의 변화로 불필요한 도메인이 되어버린 케이스였습니다.
FieldValueDTO
를 사용하는 측에서 각자의 관심사에 맞게 DTO 를 변환해 사용했다면 영향 범위가 줄어들지 않았을까 라는 생각이 드네요.
질문
여러분 팀에서 진행 중인 프로젝트에서 사용하고 있는 DDD적인 요소에는 무엇이 있는지 공유해주시고 DDD적인 관점에서 바람직하지 않아 리팩토링이 필요한 지점이 있다면 함께 공유해서 개선 방향을 구상해봐도 좋을 것 같습니다.