인프런 커뮤니티 질문&답변
제품상세 코드 느끼기
작성
·
21
1
안녕하세요 제미니님 유투브때부터 잘 보고 있습니다!
그 25분쯤에 controller에 여러 service들을 주입받아서 사용하시는 부분에 대한 질문이 있습니다.
1. 그럼 격벽으로 넘어도 되는 개념 사이에서는 a service에서 b finder or b appender 를 호출해도 괜찮은건지..?
2. 격벽으로 넘어서 안돼는 개념 사이에서는 강의에 나온것처럼 여러 service를 controller에서 받아서 response를 만들어야 하는건지.....?또 그렇게 되면 controller에서 여러 service를 알아야하니까 그건 또 문제가 없는지.. 궁금합니다!!
제미니님은 주로 어떻게 하시나요!?
감사합니다
답변 2
0
안녕하세요 질문 감사드립니다!
[질문1]
제가 개념도를 활용하는 전략에서는 말씀해주신 방식으로 호출해도 괜찮습니다!
격벽을 세워서 개념들의 참조를 통제하고 제어하기 위한 것이니까요!
[질문2]
이건 전략에 따라 다릅니다만 저는 보통 Controller (Presentation Layer)는 덜 중요하고, 개념을 나타내는 영역이 아니라고 생각합니다.
그러므로 Controller 에서 Service 를 조합하는 것도 한가지 방법 중 하나라고 생각합니다!
그래서 Controller 에서 Service 여러개를 조합하는 것 자체가 격벽을 넘는 행위라고 지칭하지 않습니다
결국 개념과 격벽을 그리는 이유는 비즈니스,구현 도구 영역을 적절히 지켜내고 계속 성장할 수 있도록 관심을 가지기 위한 수단이기 때문에 그쪽에 집중하는게 맞다고 생각합니다
그 외에는 별개로 Controller에서 Service 조합하는 로직은 이질적이실 수 있습니다 (사실 저도 실무에서 잘 안씁니다ㅎㅎ)
대신 그 상위에 대한 영역을 만들거나 컴포넌트를 만드는 선택을 할 수 있습니다 (Facade, WrapperService, Wrapper 등등) 그것 또한 고민거리니 한번 생각해보시면 좋을 것 같습니다!
관련해선 유사 질문이 있었어서 이 질문의 답변도 참고 부탁드립니다!
모쪼록 답이 되었길 바랍니다! 감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. wnsqud70님.
서비스 아키텍처를 설계할 때, 특히 컨트롤러에서 여러 서비스를 주입받아 사용해야 하는 상황이 자주 발생할 수 있습니다. 이와 관련된 질문을 해결하기 위해 아래 내용을 참고해 주세요.
1. 개념 간 격벽과 서비스 호출
격벽 넘기가 가능한 경우: 서로 다른 도메인 객체 간에 비즈니스적으로 연관된 경우, A 서비스에서 B 서비스(Finder나 Appender)를 호출하는 것이 가능합니다. 다만 이때도 도메인 간의 결합도를 최소화하기 위해 인터페이스를 통해 의존성을 설정하고, 각 서비스의 책임을 명확히 구분하는 것이 좋습니다.
레이어드 아키텍처에서 서비스 간 호출은 자연스러운 흐름일 수 있으며, 이는 비즈니스 로직이 여러 서비스에 걸쳐있을 때 특히 필요합니다.
2. 격벽을 넘지 않는 경우의 컨트롤러 역할
격벽을 넘지 않아야 할 경우: 격벽을 넘으면 안 되는 경우, 컨트롤러는 다수의 서비스를 주입받아 사용하며, 직접적으로 필요한 각 서비스를 조합하여 응답을 구성해야 합니다. 이때 여러 서비스를 주입받는 것이 문제가 되지는 않습니다. 다만, 이로 인해 컨트롤러의 코드가 복잡해질 수 있으므로 Facade 패턴을 활용하여 여러 서비스의 호출을 캡슐화하는 것도 좋은 방법입니다.
컨트롤러가 가지는 책임: 일반적으로 컨트롤러는 사용자의 요청을 받아 이를 적절한 서비스 로직으로 전달하는 역할을 합니다. 따라서 컨트롤러가 여러 서비스를 알아야 하는 것은 필연적일 수도 있지만, 중요한 것은 서비스 계층과의 분리를 명확히 줄 수 있도록 설계하는 것입니다.
이에 대한 추가 정보와 실제 사례 논의를 원하신다면, 다음 링크들을 참고하시면 도움이 되실 것입니다:
이 답변이 wnsqud70님의 질문에 대한 충분한 논의를 제공하기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




