강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

우으어으님의 프로필 이미지
우으어으

작성한 질문수

제미니의 개발실무 - 커머스 백엔드 기본편

코드 느끼기

Service 간 의존하는 경우

해결된 질문

작성

·

46

·

수정됨

1

안녕하세요! 너무 구현적인 질문을 드리는 걸 수도 있지만, 개념을 나누고 이를 결과적으로 코드로 구현해보려는 입장에서 어느정도 규칙이나 일관성을 두고 구현하면 더 좋겠다는 생각에 질문드립니다!

현재 구현상으로
1. 하나의 개념을 한 서비스로 만들고, 서비스간의 의존은 피하는 형태로 구현하신 게 맞을까요?

2. 만약 그렇다면, 예를 들어 ReviewService에서 현재는 pointHandler를 호출하고 있는데, 이 핸들러의 로직이 더욱 응집되어 PointService의 메서드 자체를 호출하는 것이 하나의 동작으로써 자연스럽다면, 이런 경우는 PointService를 ReivewService에서 의존해서 메서드를 호출하기보단, ReviewHandler 및 추가로직이 응집된 PointService 서비스 하위레이어(?)를 두어서 이를 의존하게 하는 형태로 구현하시는 건지 알고 싶습니다..!

답변 2

1

제미니님의 프로필 이미지
제미니
지식공유자

안녕하세요 질문 감사드립니다!

  1. 기본적으로 맞습니다! 다만 하나의 개념이라고해서 무조건 하나의 Service 여야한다는 것은 아닙니다, 대신 서비스간 의존은 피하는 형태가 맞습니다!

  2. 이건 실제 구현와 비즈니스를 코드를 충분히 느끼고 선택해야합니다만 전략은 대략 두가지로 접근합니다!
    +@ 경우에 따라 Point 로직이 커졌을 수도 있고 Review 로직이 커졌을 수 있기 때문에 단순한 답 보다는 케이스 별 검토가 필요합니다!

    1. 전략1. 적어주신 것 처럼 ReviewHandler or Point** 도구를 만들어서 접근하도록 처리

    2. 전략2. PointService 메서드 자체를 호출하는게 정말 타당하다면 ReviewService, PointService 를 갖는 상위 컴포넌트를 생성
      ex) HeavyReviewService

우선은 대략 위의 전략 2가지 형태로 접근 가능합니다만 요구 상황이나 코드 상황에 따라 전략을 달라질 수 있을 것 같습니다!

모쪼록 답이 되었길 바랍니다! 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 우으어으님.

서비스 간 의존성과 관련된 질문에 답변드리겠습니다. 서비스 설계에서 가장 중요한 원칙 중 하나는 모듈화와 책임 분리입니다. 이를 통해 유지보수성과 확장성을 높이는 것이 목표입니다.

1. 하나의 개념을 한 서비스로 만들고, 서비스 간의 의존 피하기

기본적으로 각각의 서비스는 자신의 책임만을 갖고, 다른 서비스에 대한 직접적인 의존성을 최소화하는 것이 좋습니다. 이는 서비스 간의 결합도를 낮추고, 각 서비스의 독립성을 높여줍니다. 독립적인 서비스는 테스트가 쉽고, 수정이 필요한 경우에도 영향을 최소화할 수 있습니다.

2. 서비스 간 호출 구조

서비스 간에 필요 이상으로 서로의 메서드를 호출하는 것은 피하는 것이 좋습니다. 그러나 때로는 여러 서비스가 협력하여 하나의 비즈니스 로직을 처리해야 할 수 있습니다. 이 경우, 서비스 간에 직접적인 의존성을 줄이기 위해 다음과 같은 방법을 고려할 수 있습니다:

  • Facades or Handlers: 여러 서비스의 기능을 조합하여 외부에 단일 인터페이스를 제공하는 ‘Facade’ 패턴이나 특정 로직을 처리하는 ‘Handler’를 사용할 수 있습니다. 이를 통해 서비스는 다른 서비스의 구체적인 구현에 대해 알 필요 없이 호출을 완전히 추상화할 수 있습니다.

  • 하위 레이어 또는 보조 서비스 사용: PointService가 복잡해져서 그 안에 여러 로직을 갖는 경우, 이를 보조적인 서비스나 하위 컴포넌트로 분리하여 관리할 수 있습니다. 그럼으로써 ReviewServicePointService가 아닌 보조 로직 컴포넌트를 의존할 수 있게 됩니다.

관련하여 참고할 수 있는 게시물로는 모듈 설계 및 역할 분리에 대한 기존 답변이 있습니다. 이 링크를 통해 서비스 간의 의존성을 최소화하면서도 협업할 수 있는 전략을 배울 수 있습니다.

제가 제공한 답변이 도움이 되었기를 바라며, 추가적인 궁금한 점이 있으시면 언제든지 질문해 주세요. 곧 지식공유자께서도 상세하게 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

우으어으님의 프로필 이미지
우으어으

작성한 질문수

질문하기