DB와 검색 엔진에 동시 쓰기하는 방식을 적용한 경험
팀 프로젝트에서 검색 기능을 구현하면서 DB에는 업데이트되었는데 검색 결과에는 이전 데이터가 나오는 문제가 발생했습니다. 사용자가 수정한 내용이 검색에 바로 반영되지 않았던 것입니다.
원인은 DB 업데이트와 인덱스 업데이트가 별도로 처리되면서 순서가 맞지 않은 것이었습니다. DB 저장과 인덱스 업데이트를 같은 트랜잭션 내에서 처리하도록 변경하고, 실패할 경우 롤백하는 방식으로 수정했습니다. 처음에는 인덱스 업데이트 실패가 DB 롤백으로 이어지는 것이 과한 것 같았지만, 불일치 상태가 남는 것보다는 나은 판단이었습니다.
그 경험에서 검색 인덱스 정합성은 '언제나 완벽하게 맞춰야 하는 것'이 아니라 '언제, 어느 정도까지 맞춰야 하는지'를 결정하는 문제라는 것을 배웠습니다. 실시간 반영이 중요한지 최종적으로 맞춰지는 것이 중요한지에 따라 전략이 달라진다는 것도 깨달았습니다.
그 경험이 데이터 정합성을 바라보는 시각을 넓혀주었습니다.