작성
·
47
0
안녕하세요 선생님 강의 잘들었습니다.! 강의 이후 복습 하며 사이드 프로젝트를 하며 성장 하고 있습니다.
프로젝트를 하던중 궁금증이 생겨서 블로그 글을 찾아 보았지만 관련된 글을 찾지 못하여 질문을 드립니다.
회원 관련된 API = UserController -> UserService의 흐름으로 사용 하였습니다.
하지만 User API가 너무 많아져 특정 API를 수정할 때 찾기 어려워졌습니다.
그레서 이걸 분리 할수 없을까에 대한 고민이 생겼고 행위에 따라 분리 했습니다.
[ Controller 분리 ]
검증 관련한 API를 VerficationController으로 모았습니다.
VerficationController에서 필요한 자원에 따라 UserService, EventService를 사용 하였습니다.
[ 질문 ]
1. Controller를 행위에 따라 부분적으로 분리 하여도 괜찮나요?
UserController / EventController / VerificationController
분리 했을때 통일성이 없다는 느낌이 들어서 고민 입니다.
Controller / Service 책임을 어떻게 설정 하시나요?
회원 관련된 요청이면 UserController 회원 로직이면 UserService를 사용 했습니다.
하지만 API가 너무 많아 분리를 할때 어떤 기준으로 분리를 해야 할지 모르겠습니다.
답변 2
1
안녕하세요, 조희제 님!
1. Controller를 행위에 따라 부분적으로 분리 하여도 괜찮나요?
UserController / EventController / VerificationController
이렇게 분리하는 것보다는, 도메인이 우선되도록 나누는 것이 좋을 것 같아요.
UserController 내에서 유저 관련 검증 API가 너무 많아지면 UserVerificationController 로 나누는 것을 고민해 보는 것이죠.
말씀주신대로 나누면, 반대로 다루는 서브도메인의 종류가 많아질수록 각 Controller는 비대해질 수밖에 없습니다.
2. Controller / Service 책임을 어떻게 설정 하시나요?
이것도 마찬가지입니다. 가장 먼저 도메인을 중심으로 나누고, 그 안에서 책임이 많아졌다고 느낄 때 세부 클래스로 나눠보세요. ex. UserCreateService
즉, 핵심은 항상 도메인입니다.
도움이 되셨기를 바랍니다.
감사합니다 🙂
0
안녕하세요, 인프런 AI 인턴입니다. 조희제님!
먼저 사이드 프로젝트를 통해 성장하고 계신다니 정말 축하드립니다. 프로젝트를 진행하며 생기는 질문은 좋은 학습의 기회가 됩니다. 이제 질문에 대해 답변드리겠습니다.
Controller를 행위에 따라 분리하는 것:
Controller / Service의 책임 설정:
Controller
는 요청을 받아 서비스 계층에 위임하며, 결과를 적절한 응답 형태로 변환하는 역할을 합니다. 반면 Service
계층은 비즈니스 로직과 데이터 처리를 담당합니다. 따라서 요청 처리는 Controller
, 비즈니스 로직은 Service
로 각자의 책임을 나누는 것이 중요합니다.아래와 같은 추가 사례를 참고해 보세요:
- https://www.inflearn.com/questions/944019 - 컨트롤러와 서비스 DTO 분리하기에 대한 좋은 설명이 있습니다.
위의 링크들은 더 많은 인사이트를 제공할 수 있으며, 각 상황에 따라 컨트롤러와 서비스를 어떻게 분리하고 관리할 수 있는지 참고하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그렇군요!
선생님 말씀대로 도메인 중심으로 수정하면 어떤역할인지 명확히 알듯 합니다!
오늘도 많이 배웠습니다 감사합니다!