skyangs / Cafe-On

비대면 카페 주문 서비스, Cafe-On
0 stars 0 forks source link

Develop #5

Closed skyangs closed 4 months ago

skyangs commented 4 months ago

request DTO는 웹-컨트롤러 사이 데이터만 전달하고, service와의 의존성을 줄이기 위해서 controller -> service 에서 넘어갈 때 파라미터는 DTO 변수를 각각을 전달하였습니다. DTO class에서 valid 검사를 한 후 개별 파라미터로 service에 넘어가게 되는데 service에서 파라미터들에 대한 유효성 검사가 또 필요한가요?

현재는 이미 검증된 값이니 service에서 검사하지 않아도 된다고 생각하였고, 그러다보니 serviceTest에서 CRUD에 대한 테스트, 그 외 값이 없을 때의 예외 정도로만 테스트가 나오는 것 같아요 회원 서비스의 기능이 작아서 예외 테스트의 갯수가 적은건지, 파라미터에 대한 예외 테스트도 필요한건지 의문이 듭니다!

ryan-nomad commented 4 months ago

웹 계층의 DTO는 웹 요청에 대한 제약사항들을 검증하고, 추가로 도메인 로직과 동일한 검증도 할 수 있어요. 예를 들어, @NotNull, @Pattern, @Min 등 도메인 객체에서 뱉어질 exception을 미리 검증함으로써 시간/자원 절약의 효과도 있겠지요. 웹 요청 DTO에서 유효성 검증을 수행하지만, 해당하는 도메인 룰에 대해서는 도메인 객체에서 유효성 검증 로직은 들어가 있어야해요. 지금은 웹 요청만 있는 웹서비스를 중점으로 개발중이지만, 실제 서비스 환경에서는 웹 요청만이 아닌 타팀에 API를 제공해야할 수 도 있고, 다른 채널들을 통해서 비지니스룰이 수행될수 있기 때문이죠. 이 맥락대로라면 도메인 객체에 책임이 없는 유효성 검증은 service 계층에서 구현되어야 할 수 도 있겠죠?

즉, "웹->서비스->도메인 의 흐름만 존재하지 않는다"라는 큰 맥락으로 접근해보시면 좋을 것 같아요.