할인정보와 가격은 실시간적이다. 가격도 할인은 진입시점이 아니라 주문이 생겨나는 시점 기준으로 적용된다.
보통 모놀리티 아키텍쳐 환경에서는 주문서는 그냥 고객에게 view만 보여주고 실시간 정보는 주문 생성 시점에 재계산해서 맞춰본다. 그래서 주문서 진입 시점과 할인, 가격, 재고 정보가 일치하지 않으면 주문 실패로 간주하고 주문완료 페이지 대신 주문 실패 페이지로 보낸다.
마이크로시스템 아키텍쳐 환경에서는 언뜻 진입 시점 데이터대로 주문이 이뤄지는 것처럼 보인다. 하지만 프론트 주문 DB가 생성되고 ETL이나 API로 실제 주문이 생성 시키는 시스템쪽으로 이동하면 정합성에서 걸린다. 이런 경우 마이페이지에 주문 실패로 나오게 된다.
실패 내역은 이런 식인데 이 사이트가 MSA때문인지는 모르겠다
이렇게 하는 이유는 여기가 쇼핑몰이기 때문이다. 돈과 재고 할인이 실시간성을 필요로 하기 때문이다. 그렇지 않다면 사람들은 무조건 낮은 가격대일 때 임시저장을 해놓지 않을까?
고려요소2. 엄청난 양의 쓰레기 데이터, 감당할 수 있겠어??
주문서의 이용실태를 보면 이용체류시간이 다른 페이지에 비해 압도적으로 짧다. 주문서에 진입하기까지 많이 고민해서 그러냐면 그것도 아니다.
주문서에서 주문완료로 넘어가는 구매전환율은 쇼핑몰보다 다르지만 1~3%내외다. 자사 앱에서는 조금 더 높지만 2자리수는 불가능하다.
실제 결제 가격을 보기위해 서성거리는 고객들이 굉장히 많다는 것이다.
여기서 임시저장을 한다는 것은 무슨 의미인가?
서성대는 모든 사람을 데이터화 시켜서 저장한다는 것이다. 척봐도 97%의 쓰레기데이터가 생겨난다. 주문하려고해도 실시간 정보가 안맞아서 실패로 떨어질 확률이 높은 쓰레기 데이터 말이다! 클라우드 환경에서 이런 조치는 누릴 수 없는 반쪽짜리 편의를 위한 거대한 비용일 뿐이다.
잘 나가는 대형 쇼핑몰의 주문서가 동시에 처리하는 숫자는 천문학이라는게 문제지만!
그래서? 주문서는 어떻게 해야 편해지나?
이 글은 '해봤는데 안되더라'하는 식의 글은 아니다.
이런 문제가 있어서 쉽게 그 생각을 실행할 수 없었다는 현업인의 하소연이라고 할까나.
대안1. 디폴드 정보 세팅
주문서를 개선한 적이 있다. 이 때 고민도 비슷했다.
결국 나는 디폴트에 주력해야했다.
거의 수정하지 않는 정보는 기억해두었다가 자동으로 세팅해준다. 그렇게 만든 건 '간단주문서'였다.