smRt-Egg / book-ddd-start

📔 도메인 주도 개발 시작하기 스터디 저장소
5 stars 0 forks source link

6, 7장. 응용 서비스와 표현 영역 + 도메인 서비스 #6

Closed tidavid1 closed 9 months ago

tidavid1 commented 9 months ago

6, 7장. 응용 서비스와 표현 영역 + 도메인 서비스를 읽고 코멘트를 남겨주세요

JIN-076 commented 9 months ago

Q. 서비스를 구현할 때 하나의 클래스에서 구현하는 방식과, 구분되는 기능별로 나눠서 구현하는 방식 중 어느 방식을 선호하는지? 만약 구분되는 기능별로 나눈다면 나누는 기준은 어떤 것이 되는것이 좋을지? (p.203)


지인 그동안 구현할 때는 애그리거트에 대한 하나의 서비스 클래스를 습관적으로 구현해왔는데, 구분되는 기능별로 나누는 아이디어에 대해서도 좋은 것 같다는 생각이 든다. 그렇지만 구분되는 기능별로 나눈다면 기능별로 구분되고, 중복되는 코드를 분리하기 위한 별도의 클래스가 생기기 때문에 너무 많은 클래스가 생기는 것은 좋지 않은 방식이라고 생각한다. 이 사이에 좋은 트레이드 오프를 위한 기준을 잡아가면 좋을 것 같다!

주환 무조건 기능 단위로 나눈다기 보다는 의존 관계가 커지는 문제를 해결하는 관점으로 본다면, 의존이 커지는 경우마다 분리를 고민을 해보는 것이 좋은것 같아요

용상 외부 서비스를 이용하거나 공통적으로 많이 사용하는 서비스에 대해서는 나누는것이 맞다는 생각이지만, 모든 기능에 대해서 서비스로 빼야할지는 ... 그 기능 단위를 어떻게 나눠야할지 더 코드를 만들며 고민을 해봐야할 것 같습니다.

승수 서비스 하나가 다른 외부 로직이나 연관되는 애그리거트가 많다면 분리해보는 것도 바람직하나, 그런 것이 아니라면 기존의 단일로 처리하는 것을 우선 기준으로 잡아갈 것 같다.

경민 기능별로 서비스를 나눔에 있어서의 이점은 코드의 문서화를 바라봤을때 개발자가 코드에 대해서 이해하기 쉽고 응집도가 높아질 수 있다는 점을 볼 수 있을거 같은데 무조건적인 분류에 대해 뒷받침하는 의견으로서는 성능 관련 부분도 생각해 봐야 하는 아직 좀 부족한 부분이 있다고 생각합니다.

수진 항상 애그리거트 단위로 서비스를 만들었었는데, 기능별로 서비스를 나누는 새로운 방식을 한 번 써보고 싶습니다. 세세하게 기능적으로 나누기보다는 큰 단위로 나눠서 서비스를 만들면 클래스가 자잘하게 나뉘지 않을 것 같습니다. 하나로 처리할 수 있을 만큼 내용이 적으면 하나로 처리하고, 하나의 클래스에 내용이 너무 많아질 경우 나누는 것을 고려해보면 좋을 것 같습니다.

happyjamy commented 9 months ago

Q. Validator 인터페이스를 구현해서 만들면 각각 dto or 메서드 당 하나씩 구현체를 만들어야 할텐데 어떤 경우가 Validator 를 구현하는 경우일까. 표현 영역 Validate 어노테이션 , Validator 를 구현, 도메인 내부 검증 세 부분으로 나눠서 어떤 경우에 해당할지 생각해 보자.


승수 표현 영역 Validate 어노테이션 : 적극적으로 사용 Validator 인터페이스 구현 : 안사용해봤음.. 도메인 내부 검증 : 어노테이션으로 구현할 수 없는 비즈니스 로직에 한해서 도메인 생성자로 검증

수진 표현 영역 validate 어노테이션 : 보통의 값 검증 Validator 인터페이스 구현: 안해봤음 도메인 내부 검증 : 직접적으로 도메인과 관련된 값 검증만 도메인 안에서 검증

용상 표현영역 validate 어노테이션 : 1차적으로 많은 부분 검증 Validator 인터페이스 구현: 사용안해봤으며 복잡도가 올라갈 것 같음 도메인 내부 검증 : 1차적으로 표현영역에서 검증하기 어려운 로직 등을 검증

경민 표현 영역 Validate 어노테이션 : 아직 사용은 안해봤는데 공부해본 내용 기반으로 보면 표현 영역에서의 검증에서 활용하기 좋을 것 같습니다. Validator 인터페이스 구현 : 처음봐요…. 도메인 내부 검증 : 도메인 비즈니스 로직을 메서드로 구현하기!

YongNyeo commented 9 months ago

표현 영역과 응용영역을 어떻게 사용해야할지 재고해 볼 수 있었다. 그리고 도메인 영역에서 사용될, 외부와도 연결될 수 있는 도메인 관련 로직을 도메인 서비스로 빼서 관리할 수 있는 접근 방법에 대해서 새롭게 알수 있었다.

tidavid1 commented 9 months ago

DDD에서 표현 영역과 응용 영역을 어떤식으로 구현할 것인지를 생각해 볼 수 있었던 장이었다. 도메인 서비스 네이밍을 ~Service로 마무리 하는 것이 적합할까? 에 대한 고민을 좀 갖게 되었다.

voidmelody commented 9 months ago

값 검증을 표현 영역과 응용 서비스 이렇게 두 부분에서 어떻게 처리해야할지에 대해 의견을 나눠볼 수 있었다.

suzzingV commented 9 months ago

값 검증을 어느 부분에서 해야할지 고민이 있었는데, 책도 참고하고 팀원들과 얘기를 나눠보며 감을 잡을 수 있었다.