본문으로 건너뛰기
유환호 연락하기

홈 / 기록

지적 여섯 건을 하나씩 확인해 보니 진짜 결함은 하나였다

한눈에 답변

검색 색인과 관련해 지적받은 문제 여섯 가지를, 짐작이 아니라 실제 프로덕션 서버가 그 순간 내보내는 응답을 직접 받아서 하나씩 확인했다. 결과는 예상과 달랐다 — 다섯 건은 이미 설계한 대로 정확히 처리되고 있었고, 실제로 고쳐야 할 결함은 페이지 번호가 2 이상인 목록 페이지가 색인 허용 상태로 나가고 있던 것 하나뿐이었다.

무엇을 확인해야 했나

운영자가 사이트와 검색엔진의 실제 색인 상태를 직접 관찰하고 지적한 여섯 가지 항목이 있었다. 이 지적을 그대로 코드에 반영하기 전에, 먼저 각 항목이 실제로 지금 어떤 상태인지 프로덕션 서버에 직접 요청을 보내 확인하는 절차를 거쳤다.

확인해 보니 무엇이 나왔나

수집한 공고의 상세 페이지, 마감이 지난 공고, 검색 결과 페이지는 전부 이미 검색 제외 상태로 정확히 설정돼 있었다. 정렬 조건이 붙은 목록 주소도 검색은 허용돼 있었지만 대표 주소가 다른 곳(정렬 없는 기본 목록)으로 지정돼 있어 문제가 없는 상태였다. 실제로 문제가 있었던 것은 딱 하나 — 두 번째 페이지 이후의 목록 주소가 검색 허용 상태로, 그것도 대표 주소를 자기 자신으로 지정한 채, 제목과 설명 문구까지 첫 페이지와 글자 하나 다르지 않게 나가고 있었다.

왜 정렬 주소는 그대로 뒀나

정렬이나 필터가 붙은 주소는 검색 제외 처리를 하지 않았다. 이유는 그 주소들이 이미 다른 대표 주소를 가리키고 있었기 때문이다. 여기에 검색 제외까지 더하면 “이 주소는 색인하지 마라”는 신호와 “이 주소의 대표는 저기다”라는 신호가 동시에 나가게 되는데, 그러면 검색엔진이 둘 중 어느 신호를 따를지가 우리 손을 떠난 문제가 된다. 정렬·필터처럼 내용이 대표 주소와 사실상 같은 경우에는 대표 주소 지정만으로 수렴시키는 것이 맞는 방식이었다.

이 검증 방식에서 얻은 교훈

지적받은 내용을 그대로 다 고치려 들었다면, 이미 잘 설계돼 있던 다섯 곳을 건드려서 오히려 새로운 문제를 만들었을 수도 있다. 짐작이나 지적 목록만 보고 판단하지 않고, 실제로 서버가 지금 이 순간 내보내는 응답을 하나하나 직접 확인하는 과정을 거치고 나서야 진짜 결함이 어디인지 정확히 좁힐 수 있었다.