본문 바로가기

프로젝트 기록/백엔드 심화 부트캠프

241119 프로젝트 TIL

오늘은 프로젝트 발표회를 진행했다. 발표를 맡으신 분이 발표 준비를 하시느라 많이 고생해 주셨다.

나는 내가 개발한 부분에 대한 예상 질문을 몇 개 준비해 보았다.

문제와 해결 부분에서 주문 방식 선택에 대한 고민을 적어두었다.

 

먼저 주문 방식 선택이 나에게 문제가 됐던 이유는 온라인 주문은 장바구니 추가 후 주문 생성, 결제를 하면 되는데

대면 주문의 경우 가게 사장님이 직접 고객이 원하는 메뉴를 담아야 했기 때문에 장바구니 없이 이를 어떻게 구현할지가 고민이었다.

그래서 대면 주문 방식도 온라인 주문처럼 장바구니 추가 -> 주문 -> 결제 로직을 똑같이 구현하되, 서비스를 분리했다.

 

여기서 동일한 로직인데 서비스를 분리한 가장 큰 이유는 온라인 주문의 경우 배달비와 쿠폰 사용 여부를 고려해야 했기 때문이다. 대면 주문은 배달비와 쿠폰 사용을 하지 않기 때문에 서로 다른 로직으로 구분해야겠다고 판단했다. 

 

- Customer와 Owner 서비스를 굳이 구분한 이유가 뭔가요?
=> Customer와 Owner 서비스를 구분한 가장 큰 이유는 배달 주문과 대면 주문의 요구사항이 서로 달랐기 때문입니다. 배달 주문에는 배달비와 쿠폰 적용 기능이 필요했지만, 대면 주문에서는 이러한 기능이 필요하지 않았습니다. 또한, 대면 주문은 Owner가 직접 주문을 받아야 한다는 요구사항이 있었기 때문에, 권한을 기준으로 Customer의 배달 주문 서비스와 Owner의 대면 주문 서비스를 분리하는 것이 코드 리팩토링 관점에서 더 명확하고 깔끔할 것이라 판단했습니다.

- 대면 주문에도 장바구니를 넣은 이유가 뭔가요?
=> 대면 주문도 메뉴 선택 후 주문으로 넘어갈 때 장바구니에 여러 메뉴를 담고 선택 후 주문으로 넘어가는 로직이 깔끔할 거라 생각했고 그래서 온라인 주문과 비슷한 로직으로 구현하되, 컨트롤러에 권한을 설정해 구분하였습니다.

- Owner도 다른 가게에 주문을 할 수 있나요?
=> 확실한 권한 분리를 위해 컨트롤러에 PreAuthorize 권한을 설정해놨기 때문에
 Owner 권한을 갖게 되면 Customer가 접근할 수 있는 배달 주문이 불가능합니다.

 

프로젝트가 잘 마무리 된 것 같아 다행이다.

'프로젝트 기록 > 백엔드 심화 부트캠프' 카테고리의 다른 글

241218 프로젝트 마무리 회고 TIL  (0) 2024.12.19
241210 프로젝트 TIL  (2) 2024.12.10
241118 프로젝트 TIL  (1) 2024.11.18
241115 프로젝트 TIL  (1) 2024.11.15
241114 프로젝트 TIL  (2) 2024.11.14