느린 검색을 남겨 둔 이유 — 속도와 빠짐없음 사이에서
대부분의 서비스는 느린 선택지를 없앱니다. 사용자는 기다리기 싫어하고, 이탈률은 바로 숫자로 나타나니까요. 그래서 "빠른 쪽 하나만" 남기는 게 보통입니다.
알뜰킹은 반대로 했습니다. 검색 강도를 기본 · 슈퍼서치 · 인세인 세 단계로 두고, 느린 쪽을 일부러 남겼습니다. 기능을 늘리려던 게 아닙니다. 동시에 가질 수 없는 두 가지가 있어서 그렇게 됐습니다.
왜 한 번에 다 뒤지지 않는가
가격 비교는 여러 쇼핑몰에 동시에 물어보는 일입니다. 문제는 쇼핑몰마다 응답 속도가 완전히 다르다는 점입니다. 어떤 곳은 0.3초에 답하고, 어떤 곳은 몇 초가 걸리고, 어떤 곳은 브라우저를 실제로 띄워 화면을 읽어야 값이 나옵니다.
전부를 매번 뒤지면 가장 느린 한 곳이 전체 속도를 결정합니다. 아홉 곳이 0.3초에 답해도 한 곳이 8초를 쓰면 사용자는 8초를 기다립니다. 반대로 빠른 곳만 쓰면 결과가 3초 안에 나오지만, 정작 그 물건이 가장 싼 곳이 빠져 있을 수 있습니다.
빠름과 빠짐없음은 같은 방향이 아닙니다. 하나를 고르면 다른 하나를 잃습니다.
그래서 선택을 넘겼다
우리가 대신 고르지 않기로 했습니다. 어느 쪽이 맞는지는 지금 무엇을 사는지에 달려 있기 때문입니다.
- 3,000원짜리 생활용품이라면 몇백 원 차이를 위해 10초를 쓸 이유가 없습니다 → 기본
- 30만 원짜리 가전이라면 1%만 달라도 3,000원입니다 → 인세인이 값을 합니다
각 쇼핑몰은 어느 강도에서부터 참여하는지가 정해져 있습니다. 강도를 올리면 참여하는 곳이 늘어나고, 늘어나는 만큼 느려집니다. 단순하지만 정직한 구조입니다.
이 판단을 서비스가 대신하면 편해 보이지만, 실은 사용자마다 다른 답을 하나로 뭉개는 일입니다. 5초를 기다릴 가치가 있는지는 지갑을 여는 사람이 압니다.
느리다는 걸 감추지 않는다
느린 선택지를 두는 순간 정직해야 할 것이 하나 생깁니다. 느리다고 말하는 것입니다.
강도를 올리면 더 오래 걸린다는 사실을 화면에서 숨기지 않습니다. "고급 검색" 같은 말로 포장해서 사용자가 영문 모르고 기다리게 만들면, 그건 선택권을 준 게 아니라 함정을 놓은 것입니다.
실패도 화면에 띄운다
여기서 한 걸음 더 갑니다. 검색 중 일부 쇼핑몰이 응답에 실패하면 결과 화면에 그대로 알립니다.
⚠️ 일부 소스 검색에 실패했어요 — 결과가 불완전할 수 있어요
이 배너를 띄우는 게 마음 편한 결정은 아니었습니다. 없으면 화면이 더 깔끔하고, 사용자는 아무 문제 없다고 느낄 겁니다. 열 곳 중 아홉 곳만 답했어도 최저가는 그럴듯하게 나오니까요.
그런데 그 그럴듯한 결과가 진짜 최저가가 아닐 수 있습니다. 빠진 한 곳이 가장 싼 곳이었다면, 사용자는 더 비싸게 사면서 "제일 싸게 샀다"고 믿게 됩니다. 그게 훨씬 나쁩니다.
그래서 어떤 쇼핑몰이 실패했는지, 몇 건을 가져왔는지, 응답에 얼마나 걸렸는지까지 보여 줍니다. 화면 구석의 작은 글씨가 아니라 결과 위에 적습니다. 불완전한 결과를 완전한 것처럼 보여 주지 않는 것 — 이게 최저가를 다루는 서비스가 지켜야 할 최소한이라고 생각합니다.
완벽한 하나보다 정직한 셋
정리하면 이렇습니다.
| 우리가 안 한 것 | 대신 한 것 |
|---|---|
| 빠른 검색 하나만 남기기 | 강도를 나누고 선택을 넘김 |
| 느림을 "고급"으로 포장 | 느리다고 그대로 말함 |
| 실패를 조용히 숨기기 | 실패한 소스를 화면에 표시 |
| 빠진 값을 추정으로 메우기 | 모르는 값은 비워 둠 |
기술적으로 더 멋진 답이 있을 수도 있습니다. 모든 쇼핑몰을 캐시해 두고 항상 0.3초에 답하는 것 — 언젠가 그렇게 되면 좋겠습니다. 하지만 그렇게 되기 전까지, 할 수 없는 것을 할 수 있는 척하지 않는 쪽을 택했습니다.
세 가지 강도를 어떻게 골라 쓰는지는 알뜰킹 100% 활용법에 정리해 두었고, 우리가 무엇을 믿고 이렇게 만드는지는 알뜰킹을 만드는 이유에 적어 두었습니다.