작성
·
173
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
질문자님께서 말씀하신 부분은 개발 시 아키텍처 설계와 관련된 중요한 부분을 다루고 있습니다. 서비스 레이어가 컨트롤러 레이어에 정의된 포트에 의존하는 것은 일반적으로 바람직하지 않습니다. 이러한 상황은 레이어 간의 역할과 책임이 명확히 구분되지 않음을 의미할 수 있습니다.
Port를 외부로 분리하는 것은 레이어 간의 의존성을 줄이고 시스템의 결합도를 낮추어, 유연하고 확장 가능한 설계를 가능하게 합니다. 이러한 접근 방식은 헥사고날 아키텍처(Hexagonal Architecture) 또는 포트 & 어댑터(Ports & Adapters) 아키텍처 패턴에서 자주 볼 수 있으며, 애플리케이션의 핵심 로직을 외부 컴포넌트로부터 분리하여 테스트와 유지보수를 용이하게 합니다.
님의 제안대로 Port 인터페이스를 컨트롤러 바깥으로 이동시키고, 이를 통해 서비스가 컨트롤러가 아닌 인터페이스에만 의존하도록 설계를 변경하는 것이 좀 더 깔끔한 구조를 만드는 방법일 수 있습니다. 이렇게 하면 추후 다른 컨트롤러나 어댑터에서도 동일한 서비스를 재사용할 수 있는 유연성을 확보할 수 있습니다.
이와 관련하여 Spring에서는 의존성 주입, @Service 어노테이션과 같은 기능을 통해 이러한 설계 패턴을 잘 지원합니다. 따라서, 개발하시는 도중에 이러한 구조적인 설계 변경을 고려해보시는 것도 좋을 것 같습니다.