배송정책 화면에는 3,000원인데 마켓 연동 상세에서는 0원으로 나온다는 문의를 받았다. 같은 정책인데 두 화면의 값이 달랐다.
Table of contents
Open Table of contents
공존하던 정책들
먼저 그 업체의 정책을 전부 뽑으니 셋이었고 채널이 갈려 있었다. 하나는 구 채널이고 둘은 신 채널이었다.
이 시스템은 정책을 채널로 구분하는데 구 버전과 신 버전의 기본 채널이 다르다. 이 업체는 구 버전에서 이관됐으므로 구 채널 정책이 남아 있고 나중에 신 버전 화면에서 새 정책을 만든 것이었다.
상품이 가리키던 것
상품이 어느 정책을 가리키는지 조회하니 구 채널 정책이었다. 업체가 새 정책을 만들었지만 상품에 연결하지 않은 상태였다.
이것으로 두 화면의 차이가 설명됐다. 배송정책 화면은 업체가 만든 정책 목록을 보여 줄 뿐이고 마켓 연동 상세는 상품이 실제로 가리키는 정책을 읽는다. 연동 상세 쪽이 맞았고 목록 화면은 어느 것이 상품에 연결됐는지를 보여 주지 않는다.
구 정책이 3,500원인데 0원으로 나온 것도 설명이 됐다. 그 정책이 무료배송 유형이라 금액 필드에 값은 있어도 실제 부과가 0원이었다. 정책 데이터가 이상한 것이 아니라 잘못된 정책을 가리키고 있었다.
확인 순서
이 유형의 문의를 받으면 정책 데이터가 아니라 상품의 참조가 가리키는 정책의 채널부터 확인하기로 했다. 상품의 정책 식별자를 보고 그 정책의 채널을 보며 구 채널이면 이관 잔존으로 판정한다.
정책 데이터를 아무리 들여다봐도 답이 안 나오는데 문제가 참조에 있기 때문이다. 무엇을 볼지가 틀리면 조사 시간이 얼마든 늘어난다.
어긋난 범위
하위 마켓상품들도 함께 확인했더니 각 채널 정책에 올바르게 연결돼 있었다. 상위 하나만 어긋난 것이었다.
하위는 각 채널로 나갈 때 그 채널의 정책을 따로 잡는 흐름을 타는데 상위는 그 흐름 밖에 있었기 때문으로 보인다. 어디까지 어긋났는지를 확인하니 수정 범위가 상위 하나로 좁혀졌다.
신규 생성과 참조 갱신
고칠 때 방침이 있었다. 기존 정책을 수정하는 대신 신규로 만들고 연결하는 것이 이 프로젝트의 방침이고 기존 정책 변경은 그 정책을 쓰는 다른 상품에 영향을 주기 때문이다.
이번에는 이미 신규 정책이 있으므로 참조만 갱신하면 됐다. 이 건이 보여 주는 패턴은 이관이 데이터는 옮기는데 참조를 안 옮긴다는 것이다. 새 정책이 목록에 있으니 화면상으로는 문제가 안 보이고 참조를 따라가야 어긋난 것이 드러난다.
정리
- 같은 대상의 두 화면이 다른 값을 보이면 각각 무엇을 읽는지 본다
- 목록 화면과 참조를 따라가는 화면은 다른 것을 볼 수 있다
- 이관된 업체의 참조가 옛 정책을 가리키고 있을 수 있다
- 새 정책을 만들어도 연결하지 않으면 안 쓰인다
- 확인은 정책 데이터가 아니라 상품의 참조부터 한다
- 어디까지 어긋났는지 확인하면 수정 범위가 좁아진다
- 기존 정책 수정 대신 신규 생성과 참조 갱신이 안전하다
- 이관은 데이터는 옮겨도 참조를 안 옮길 수 있다