Today I Learend
날짜
2024년 3월 14일 목요일
내용
의사소통 오류
이번 스프린트에서 내가 데이터베이스 구조를 설계했다. List Desiger에서 위젯은 다수의 상품을 들고 있게 되고 각 상품은 가공된 데이터(최근 구매자, 재고 등)를 갖고 있어야 한다. 기존에 상품과 관련된 데이터 형식을 변경하는 건 당연히 말도 안되는 소리니 위젯에서 사용할 상품의 데이터 형식을 ListDesigerProduct
로 만들었다. 내가 이 테이블을 만든 목적은 위젯에서 표시될 데이터를 담아두기 위해서고, 기존에 상품이 가지고 있는 데이터(이름, 가격, sohpify내에서의 고유 ID 등)은 관계를 통해 JOIN으로 해결할 수 있을거라고 생각했다.
이 생각이 공유된 적 없었기 때문에 문제가 발생했다. 위젯을 편집하는 과정에서 새로운 상품을 추가하는 과정에서 생긴 문제였다.
Product
와ListDesigerProduct
는 연관된 데이터다. 전자는 상품의 원본 데이터들이고 후자는 위젯에서 사용될 가공된 데이터를 담아둔다.- 위젯에 사용되도록 선택된 상품만
ListDesignerProduct
객체가 생성된다. 다시 말해, 모든Product
가ListDesignerProduct
를 가지는 것은 아니다. - 기존에 위젯에 있는 상품들의 목록을 보여줄 때, 모두
ListDesigerProduct
, 연관된Product
데이터 총 2개를 가진채로 보여주고 있다. - 이유는, 위젯을 설정하는 스토어 주인의 입장에서 봐야될 상품 데이터는 상품의 이름, 전체 평점, 리뷰 작성 수 등 말 그대로 “상품의 정보”이다. 이 데이터는
ListDesignerProduct
에 없고 연관된Product
를 참고해야 하기 떄문이다. - 새로 위젯에 포함할 상품을 가져와서 화면에 보여주면, 백엔드 상에서
ListDesignProduct
가 없이Product
만 가지게 된다. 이와 연관된ListDesigerProduct
를 프론트가 만들어야 한다. - 이 과정에서 여러 문제가 발생하고 있었다.
사실 이 문제에 대해 모르고 있었다. 뭔가 안 풀리는 문제가 있어서 고생한다곤 생각했는데.. 문제점을 듣고, 위젯 편집 과정에선 Product로만 관리하면 문제가 없을텐데 왜 ListDesigerProduct
객체로 주고 받는지 몰랐다. 조금만 더 생각해보니, 내가 설계한 모델을 사용하는 입장에선 왜 이 위젯에서 사용할 상품 데이터인데 필요한 걸 안넣은건지 답답했을 것 같다. 애초에 내가 그렇게 설계한 이유와 사용처에 대해 확실히 공유를 했었어야 했는데.. 이번 스프린트 전에 열심히 개발자 회의를 했지만 아직 부족한게 많다고 느낀다.
회고
대화가 필요해.