강의

멘토링

커뮤니티

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

HH님의 프로필 이미지
HH

작성한 질문수

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

코드 느끼기

현재 아키텍처 구조에서의 트랜잭션 관련해서 질문이 있습니다.

해결된 질문

작성

·

94

1

안녕하세요 강의 잘 보고 있습니다!

 

현재 아키텍처는

Controller -> Service -> Resposiotry 구조로 흐름이 이어지고 Service는 각 개념에 대한(Product, Review 등..) 조회 쿼리를 묶는 Finder, 그외 CUD 기능을 묶는 Mananger 또는 Handler ? 로 이뤄져 있습니다.

이 구조는 예전에 토스 슬래시 "지속 성장 가능한 코드를 만들어가능 방법"에 대해 인상 깊게 봤는데 조회용, CUD용을 별도 컴포넌트로 관리하고 Service는 이를 핸들링 하는 파사드 패턴의 구조와 유사하게 생각했었습니다.

 

여기서 질문이 있는데요

Product와 Review는 격벽을 두는 서로 다는 개념이지만 Product라는 1급 개념이외의 하위 개념 (섹션, 카테고리)들은 상품을 추가할 때 하나의 트랜잭션으로 묶이는 대상이라고 생각이 들었습니다.

 

그럼 이 경우에는 리뷰는 상품과 서로 다른 개념이기 때문에 서로를 알지 못하지만, Product의 하위 급수 개념들은 ProductService 내에서 하나의 트랜잭션으로 묶는,

즉, xxxService는 동일한 개념에 속한 개념들을 하나의 트랜잭션으로 묶는 파사드의 일종이라고 생각하면 될까요?

 

만약 맞다면 개념과 격벽을 이해하기에 각 개념은 하나의 트랜잭션으로 묶여야하나?에 대한 고민도 개념을 구분하는 방법이 될 수 있겠구나!라는 생각이 들기도 하네요

 

항상 잘 보고 있습니다 감사합니다!

답변 2

1

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

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

우선 저는 xxxService를 굳이 파사드라고 명확히 지칭해서 보지는 않습니다, 비즈니스 로직을 수행하는 계층이라고 보는 편입니다.
구현 형태의 결과가 파사드 처럼 보일 수 있지만 xxxService 는 그 자체로 응집이 높은 수준을 유지하고 있기 때문에 저는 굳이 파사드라고 표현하지는 않는 것 같습니다.


상품 등록의 경우는 어드민의 영역이기 때문에 훨씬 자유도가 있다고 생각합니다

어드민 기능이다보니 운영 쪽의 니즈에 따라 상품 등록에 대한 단계가 존재할 수 있을 것 같습니다
그래서 트랜잭션이 하나로 묶이지 않을 것 같습니다!
그런 관점에서 트랜잭션의 단위로 개념과 격벽을 구분하는 것은 좋은 기준은 아닙니다! (코드를 통해 느낄 수 있는 단서 정도로 보는 것 같습니다)

예를들면 상품 기본 정보 등록(MD가 등록) -> 상세 정보 등록(다음날 마케터가 등록) -> 가격 등록(마지막 협의 후 설정) 이런 식으로 등록에 대한 단계가 나뉘어져있을 수 있을 것 같습니다


모쪼록 답이 되었길 바랍니다! 수강 화이팅입니다!

0

안녕하세요, 인프런 AI 인턴입니다.

HH님이 작성하신 질문은 서비스 아키텍처와 트랜잭션의 개념에 관한 흥미로운 논의점을 담고 있습니다. 응집도와 격벽을 통해 각 개념의 독립성을 유지하는 동시에 필요한 경우 상위 개념과 하위 개념이 하나의 트랜잭션으로 처리되는 구조를 고민하신 것 같습니다.

핵심 주제 요약

  • 격벽과 트랜잭션: Product와 Review 간에는 독립성을 유지하지만, Product와 그 하위 개념(섹션, 카테고리 등)은 하나의 트랜잭션 내에서 처리될 수 있습니다. 이를 통해 모든 관련 데이터가 일관성을 유지할 수 있습니다.

  • Service의 역할: Service는 특정 비즈니스 로직을 중앙에서 컨트롤하며, 관련 개념들을 하나의 트랜잭션으로 묶을 수 있습니다. 이를 통해 파사드 패턴의 형태를 띄게 되며, 각 개념의 독립성을 유지하면서도 필요한 연산을 하나의 트랜잭션으로 묶어 모든 작업이 성공적으로 완료되거나 모두 롤백되도록 보장합니다.

이점에 대해 좀 더 구체적인 설명과 다른 학습자의 토론을 참고하시기 위해, 다음의 유사한 질문과 답변 링크를 추천해 드립니다:

  1. \“응집도를 높이기 위해 Product 객체는 Review 객체를 의존 하지 않는다\” 에서 질문이 있습니다.

위 게시물에서는 응집도와 독립적인 트랜잭션 관리에 대한 실제 사례와 개념 설명이 포함되어 있어 이해를 돕는데 큰 도움이 될 것입니다.

  1. findSections 메서드 위치에 관련하여 질문 드립니다

다른 학습자들과의 논의에서 다양한 의견과 실무 적용에 대한 통찰을 얻을 수 있습니다.

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

HH님의 프로필 이미지
HH

작성한 질문수

질문하기