Skip to content
isdnetworks
Go back

재초기화 뒤 전수 통과 확인

색인 자료가 깨져서 사백 건 남짓을 고치고 그 건들이 정상인 것만 확인한 뒤 끝냈다. 며칠 뒤 또 깨진 것이 나왔는데 처음에 고친 목록과는 전혀 다른 건들이었다.

Table of contents

Open Table of contents

고친 것만 본 확인의 한계

처음부터 다시 만들고 전부 검사하니 이상한 것이 사백 건 넘게 나왔고 처음 고친 목록과 겹치는 것은 두 건뿐이었다. 같은 원인으로 깨진 것이 처음부터 훨씬 더 있었다는 뜻이다.

고친 것만 확인하면 안 고친 것을 볼 방법이 없다. 확인 범위가 수정 범위와 같으면 그 확인은 수정이 반영됐다는 사실만 알려 준다.

검사를 먼저 만들었어야 했다

고치기 전에 전수 검사를 먼저 만들었어야 했는데 이번에는 순서가 반대였다. 검사가 있으면 고친 뒤에 돌려 0이 되는지 보면 되고 없으면 눈으로 몇 건 보고 끝낸다.

검사 항목은 이름 누락과 가격 형식 오류와 분류 누락 세 가지로 잡았다. 항목을 명시해 두면 검사 결과를 이유별로 나눠 셀 수 있게 된다.

이유별 집계가 가리킨 한 곳

이유별로 세어 보니 가격 형식 문제가 압도적이었고 나머지 둘은 소수에 그쳤다. 원본에서 문자열로 온 값이 형변환 없이 그대로 색인에 들어가고 있었다.

한 곳에서 형변환을 넣으니 그 유형의 이상이 통째로 사라졌다. 전체 건수만 보면 사백 건이 흩어진 문제처럼 보이지만 이유별로 세면 한 곳이 대부분을 만든 것이 드러난다.

정기 검사와 유입 차단

다시 만들고 검사해 이상이 0이 된 뒤에 그 검사를 매일 새벽에 돌려 0이 아니면 알리게 했다. 며칠 뒤 새로 등록된 상품에서 같은 유형이 몇 건 잡혔다.

그래서 색인에 넣기 전에 같은 검증을 돌리고 통과하지 못하면 기록만 남기고 넣지 않게 했다. 들어오는 자리를 막고 나서는 같은 이상이 새로 생기지 않았다.

다시 만드는 것과 바꾸는 것의 분리

전부 다시 만드는 동안 검색이 안 되는 문제가 있었는데 옛 색인을 먼저 지우고 새로 넣고 있었기 때문이다. 새 색인을 따로 만들고 완성된 뒤에 별칭만 바꾸도록 고쳤다.

만드는 동안은 옛 색인이 서비스하고 교체는 순간에 끝나며 실패하면 새 색인만 버리면 된다. 다만 이 방식이 성립하는 것은 원본이 남아 있어 다시 만들 수 있는 자료이기 때문이라 로그나 결제 기록처럼 재생성이 불가능한 것은 같은 전략을 쓸 수 없다.

정리


Share this post on:

Previous Post
소스로 역추적한 주석의 뜻
Next Post
경유와 참조라는 두 질문