케이스 기반 문제해결 실습 첫번째, 주문 API 시스템 아키텍처 설계 및 성능 개선 실습에 대해 기술한 문서입니다. 해당 실습에 대해 아래 ISSUE를 첨부합니다.
https://github.com/sipe-team/3-1_spurt/issues/22
해당 기능의 구체화를 위해 **배민상회의 플로우 (배송지등록→주문→주문내역조회 → 주문취소)**에 맞게 API 명세서를 우선적으로 작성하였습니다. 또한, ERD는 단일 데이터베이스로 가정하고 설계하였습니다.
해당 API들 중에서도, 주문 상세 정보를 조회 API를 중점으로 설명하였습니다.
우선적으로 RDBMS(Mysql) 데이터베이스를 구축하고, 다음과 같이 ERD를 작성하였습니다.
PRODUCTS와 ORDERS의 다대다 관계 분리하기 위에 중간에 매핑테이블인 ORDER_PRODUCTS를 추가하였습니다. 최소한의 연관관계를 위해 ORDERS에서, delivery(배송), payments(결제), refunds(환불)과 관련된 정보는 연관관계를 매핑하지 않고, ID참조로 설정하였습니다.
실무에서는 연관관계를 최소한으로 한다라는 말을 듣고, 무분별한 연관관계의 단점에 대해 공부하였습니다.