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

donkey님의 프로필 이미지

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

facade 패턴 질문

24.08.24 13:54 작성

·

36

·

수정됨

0

현재 진행중인 프로젝트에 Aop 구현은 힘들어서 facade를 통해 Redisson lock을 적용해보려고 합니다.

facade 패턴을 처음 접해서 그런지 프로젝트에 어떻게 적용해야 할지 고민입니다.

service 로직을 건들지 않고, facade 패턴을 사용해서 역할분리 한 거에 대해서는 이해했습니다만,

mvc 패턴에서, controller가 결국 동시성 제어가 적용된 서비스를 이용하려면 service(createReservation)가 아니라 facade(createReservation)를 사용해야 하는데,

controller가 service로도 동시성 제어가 적용되지 않은(사용해서는 안될) 메서드(createReservation)에 접근이 가능하다는 점에서 문제가 될수도 있다고 생각했습니다.

(비슷한 상황으로 컨트롤러가 reposiotry를 가끔 참조하기도 하는데, 이때의 경우는 service에 굳이 해당 로직을 만들지 않을때인데, 지금 같은 경우는 비슷한 로직이 service에도 있고, facade 에도 있는 경우라.. )

 

협업에서 어떤 개발자의 실수로 service 계층의 createReservation(사용해서는 안될)가져다 쓸 수 있다는 것이 신경쓸 문제가 아닌지, 아니면 컨트롤러가 그 서비스의 메서드에 접근을 못하게 한다던지, 실제로 어떻게 적용하시는지 궁금합니다.

 

 

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

2024. 08. 29. 23:04

donkey 님 안녕하세요.
일단 AOP 의 구현이 힘든 이유를 잘 모르겠습니다.
Spring 의 Aop 를 활용하신다면 구현이 가능할것이라고 생각됩니다.
facade 를 활용할 것이고, 그곳에서 service 를 이용하고 service 를 외부에서 이용 못하게 하고싶다면 접근제어자를 활용하여 같은 패키지 안에서만 사용가능하도록 하면 되지 않을까 생각합니다.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 24. 13:56

안녕하세요, 인프런 AI 인턴입니다. donkey님의 질문과 관련하여, facade 패턴 적용으로 인해 발생하는 동시성 제어 및 설계상의 고민에 대해 도움이 될만한 기존 답변을 찾았습니다. 아래 내용들은 질문자님이 직면한 문제에 대한 이해를 깊게 하고, facade 패턴 적용 시 고려해야 할 점들을 안내합니다.

  1. Facade를 controller 에서의 사용:

    • 이 질문은 controller에서 Facade 패턴을 사용하면 동시성 문제가 해결되는지에 대해 질문합니다. 답변에서는 위치에 관계없이, 적절히 사용할 경우 동시성 문제 해결이 가능함을 언급합니다. 이는 donkey님의 상황에도 적용할 수 있어서, Facade를 통한 동시성 제어가 controller에서도 유효하다는 점을 이해하는 데 도움이 됩니다.
  2. facade 패턴 적용 및 service 에서 락 재흭득 처리 후 문제 질문:

    • 이 글에서는 facade 패턴 적용의 목적과, service 계층과의 구분에 대해 질문합니다. 답변은 Facade가 필요한 경우에만 사용되며, 주로 중복되는 로직을 분리하는 데 유용함을 설명합니다. donkey님의 경우, service 계층에 있는 로직과 facade를 통해 분리된 로직 사이의 접근 제어 및 구분에 대한 이해를 돕습니다.
  3. redisson lock을 AOP로 변경하는 경우 실무 사용 방법 문의드립니다!:

    • 이 상황에서는 Facade와 AOP를 사용한 동시성 제어 접근 방식에 대해 논의하며, Facade 클래스 삭제와 service 클래스에 어노테이션을 붙이는 방식으로의 변경을 언급합니다. donkey님의 작업에서 Facade 패턴을 도입할 때 이 설계 변화를 이해하는 데 필요할 수 있습니다.

이러한 질문들은 donkey님의 경우와 직접적으로 동일하지 않을 수 있지만, Facade 패턴을 통한 동시성 제어MVC 패턴 내에서의 역할 구분, 그리고 설계상 고려사항에 대한 통찰을 제공합니다. 특히, controller가 잘못된 service 계층의 메서드를 사용하지 않도록 하는 설계 방법에 대해 더 넓은 관점을 제공할 수 있습니다.

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

donkey님의 프로필 이미지

작성한 질문수

질문하기