유저별로 장바구니 기록 데이터를 계속 가지고 있고 싶어서 처음에는 유저가 장바구니 추가 및 수량 수정을 할 때마다 서버에 요청을 보내야 하나? 하는 생각이 들었다. 근데 생각해보니 그렇게 하면 몇 만명의 유저가 동시에 POST요청을 보낼텐데.. 서버 과부하 걸리진 않을까..? 했는데..역시나! 그런 방법은 서버에 무리가 가는 방법이었다.
그래도 장바구니 기록을 어떻게든 업데이트 해야 되는데.. 그냥 프론트에서 상태로 관리해버리는 방법(새로 고침하면 날아감~~ 절대 안 됨), 로컬 스토리지에 넣는 방법, 토큰에 넣는 방법? 등 여러 의견이 나왔는데 그렇게 저장 하게되면 유저 단위가 아니라 브라우저 단위로 데이터를 저장하게 되니까 그것도 우리의 의도와 맞지 않는 방법이었다.
근데 생각해보면 내가 '쿠키'에 대해 학습할 땐 쿠키로 특정 사이트에서 장바구니에 넣은 품목을 쿠키에 저장한다. 라고 이해하고 있었는데, 그것도 역시 브라우저 단위로 저장되는 건가?? 쿠키에 저장해놓고 서버에 보낼 수 없는건가? 쿠키와 세션을 좀 더 공부해봐야겠다..흠
백엔드 분들이랑 아이디어 실현 가능성을 가지고 이야기를 나누다 도대체 다른 커머스 사이트들은 어떻게 장바구니 정보를 저장하는가?!?! 라는 의문이 들어서, 그럼 그냥 쿠팡 웹에서 장바구니 추가 버튼을 눌렀을 때 network탭에서 어떤 요청이 가는지를 살펴보자고 제안했다.
확인해보니 실제 쿠팡에서도 장바구니 추가 버튼을 눌렀을 때 마다 상품 id와 price, count 정보가 객체 형태로 주고 받아지는 걸 확인할 수 있었다. 다행히도 roach가 Redis에 장바구니와 관련된 cache를 쌓고, 유저가 특정 행위를 했을 때 (e.g. 장바구니 사이드 바 on, 장바구니로 이동 버튼 클릭) cache 된 데이터를 가져다 진짜 DB에 넣는 POST요청을 방법으로 가능할 것 같다는 의견을 주셔서 그 방법으로 진행해볼 것 같다.
정말 당연하다고 생각하는 기능도 개발자의 깊은 고뇌 끝에 나오는 것이라는 것을 깨달았다..다들 멋져~