• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

주문목록에 회원정보 추가

23.01.12 09:08 작성 조회수 136

0

안녕하세요 강사님. 유익한 강의 정말 잘듣고있는 초급 개발자입니다.

강의를 들으면서 긍금증이 생겨서 질문드립니다

orderservice에서 user정보 사용에 대한 다른 비슷한 질문들을 봤습니다.

서비스간 테이블을 각각 만들어서 동기화를 하거나 orderservice에서 userservice api를 사용하는 방법이 있다는 답변 보았습니다.

이경우는 주문 한건에 대한 내용인것 같습니다. 그렇다면 여러사용자가 주문한 주문목록에 사용자정보를 들고오려면(게시판-회원과 동일) 어떻게 설계가 되어야하나요?

orderservice에서 주문목록을 조회하고 그 리스트를 돌면서 userservice api에서 유저정보를 조회하면 N+1문제와 같은 상황 발생할 것 같은데 무조건 테이블을 각각 생성해야하나요?

일반적으로 어떻게 처리하는지 궁금합니다!

 

두서없는 질문 정말 죄송합니다..

 

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다.

말씀하신 내용처럼 order-service와 user-service가 분리되어 설계된 경우에, 개별 사용자에 대한 주문 내역을 가져오는 부분에서는 큰 이슈가 없지만, 전체 사용자에 대한 주문내역을 가져오는 부분을 order-service에서 처리할 때는 매 주분 정보마다 사용자 정보를 user-service에서 가져와야 할 수도 있습니다. 다만, 이러한 비지니스 로직이 말씀하신 주문목록이라는 페이지에서 사용자의 정보를 함께가져와야 하는 부분인지, 아니면, 주문의 상세 내역과 같은 별도의 기능에서 가져와야 하는지에 따라서, 각 서비스가 처리해줘야 하는 로직을 결정해야 할 것 같습니다. 강의에서는 order, user 서비스에 맞는 개별적인 DB를 사용했지만, MSA를 설계할 때 테이블을 무조건 분리한다기 보다는, 도메인에 따른 업무 로직에 따라, 서비스에 대한 DB를 분리하거나 통합하거나, 동기화 하거나 하는 부분을 설계할 필요가 있습니다. Kafka와 같은 메시지 브로커에 대한 매커니즘을 MSA에 도입해 보는 한 예로써, 테이블을 분리한 목적도 있기 때문에, MSA의 서비스를 분리하실 때, 주문과 사용자 서비스가 포함되는 형태가 되는 경우도 많습니다. 먼저, 각 서비스에서 필요로 하는 api를 설계해 보고, 서비스간의 유사성과 중복성, 종속성, 응집도 등을 고려해서 분리하는 방법을 고려해 보시면 어떨까 합니다.

추가 질문 사항 및 의견은 언제든지 남겨주세요.

감사합니다.