시스템 디자인 아틀라스 콘텐츠·검색 / 사례 연구 전체 로드맵
CASE · INTERMEDIATE읽기 22분검토일 2026-08-23

검색 자동완성
시스템 설계

자동완성은 검색창의 장식이 아닙니다. 한 글자 입력마다 빠르게 후보를 찾고, 인기의 신호를 안전하게 다루며, 삭제·정책 변경을 추천보다 먼저 반영해야 하는 짧고 민감한 읽기 경로입니다.

개념 이해인덱스·캐시정책·안전면접 답변진도 저장
30초 핵심 요약

정규화된 후보를 Trie/FST와 작은 top-k로 미리 만들고, 요청은 prefix cache → locale index → 정책 필터 → 제한된 재정렬 순서로 처리합니다. 빠른 cache는 삭제·금지·비공개 후보를 보여도 된다는 권한이 아니므로 invalidation과 최종 정책 확인을 함께 설계합니다.

Fast pathprefix cache + FST/Trie
Rankingtop-k + freshness
Safetypolicy before response
01 · REQUIREMENTS

빠른 제안보다 노출 경계를 먼저 정한다

# 요구사항

추천 후보는 전체 검색 결과가 아닙니다. 어떤 locale의 query·엔터티를 보여 줄지, 개인화가 가능한지, 삭제와 safe-search를 어떤 시간 안에 반영할지를 계약으로 분리합니다.

R1접두사 후보

정규화된 입력과 locale에 맞는 query·엔터티를 제한된 `k`개로 반환합니다.

R2예측 가능한 지연

키 입력마다 full scan을 하지 않고 cache와 작은 index lookup에 예산을 둡니다.

R3정책 우선

삭제·비공개·tenant·safe-search 필터가 인기도보다 먼저 후보를 제거합니다.

R4안전한 빈 결과

의존성이 불명확할 때 무관한 인기어 대신 빈 배열 또는 명시된 fallback을 반환합니다.

02 · HIGH-LEVEL DESIGN

후보 생산과 키 입력의 읽기 경로를 분리한다

# 아키텍처

검색·선택 신호와 카탈로그·운영 정책은 builder가 검증한 후보로 모읍니다. 클라이언트 요청은 cache와 FST/Trie를 거쳐 작은 후보를 얻고, 정책을 적용한 뒤에만 재정렬합니다.

자동완성의 snapshot·delta와 read path SVG DIAGRAM · normalize → lookup → filter → rank
검색 자동완성 아키텍처검색과 선택 이벤트, 카탈로그 정책이 후보 builder를 통해 prefix index로 들어가며, 사용자 입력은 edge cache와 FST 또는 Trie index를 거쳐 정책 필터와 top-k 재정렬 후 추천 결과를 받는 구조다.쓰기 · 후보 검증과 versioned snapshot읽기 · 키 입력마다 작은 lookup검색·선택 이벤트abuse signal · windowCandidate Buildernormalize · dedupe · weightPrefix SnapshotFST / Trie · top-kEdge Prefix Cachehot prefix · invalidateSuggestion APIlocale · budgetPolicysuppressTop-kfreshness인덱스와 cache는 파생 데이터다. 삭제·금지·권한은 응답 직전에 최종 판단한다.
설계 경계: top-k의 인기도는 최종 안전 판단이 아닙니다. snapshot은 빠른 후보 집합을 제공하고, 정책 필터와 cache invalidation은 허용되지 않은 후보가 다시 보이는 시간을 줄이는 별도 책임입니다.
03 · BUILD / READ FLOW

정규화·빌드와 lookup·필터를 각각 복구 가능하게 둔다

# 흐름
1신호 수집

검색·선택·카탈로그 변경을 모으고 bot·비정상 요청을 후보 점수와 분리합니다.

2정규화·중복 제거

locale과 버전을 명시해 표면형·canonical text·후보 상태를 만듭니다.

3FST/Trie snapshot

검증된 후보와 제한된 top-k로 versioned artifact를 빌드·canary 배포합니다.

4cache → lookup

hot prefix cache를 먼저 보고 miss이면 locale shard에서 후보를 가져옵니다.

5정책·재정렬

삭제·safe-search·tenant 필터 후 신선도·품질을 적용하고 이벤트를 비동기로 남깁니다.

04 · TRADEOFFS

lookup 속도와 build·인덱스·정책 비용을 함께 비교한다

# 트레이드오프

FST, Trie, n-gram 색인, 매 요청 검색은 모두 후보를 찾는 방법입니다. 한 방식의 장점은 데이터 모델·언어 분석·신선도·memory budget에 따라 제약이 됩니다.

선택장점제약적용 판단
Trie terminal top-kprefix lookup이 단순하고 빠름prefix별 후보 복제가 메모리를 키움명확한 prefix UX, 제한된 후보 사전
FST suggester압축·빠른 lookup 가능build, weight bucket, artifact 운영 필요큰 준정적 사전, snapshot 배포 역량
search_as_you_typeprefix·infix와 검색 stack을 함께 사용subfield·index size·query 비용 증가다단어 문장, 기존 검색 인덱스 재사용
원문 매 요청 검색변경 데이터 반영이 단순keystroke마다 CPU·tail latency 발생작은 카탈로그, 초기 제품
global top-kcache 효율·설명이 쉬움지역·맥락 relevance가 제한privacy 우선 기본 결과
개인화 re-rank문맥 적합성을 높일 여지feature·동의·필터·실험 복잡도명시된 동의와 안전 경계가 있을 때
05 · FAILURE MODES

빠른 입력 경로의 실패를 안전한 fallback으로 제한한다

# 장애 6가지
snapshot build 실패

새 후보가 배포되지 않거나 artifact 손상으로 shard가 시작하지 못합니다.

대응 · checksum·canary를 확인하고 이전 검증 version을 유지합니다. version skew가 정의된 범위인지 검증합니다.
hot prefix stampede

짧은 인기 입력이 cache miss와 동시 origin lookup을 증폭합니다.

대응 · single-flight, stale serve, cache replica, prefix별 제한. origin fan-in과 p99 회복을 확인합니다.
×정책 무효화 지연

삭제·금지·비공개 후보가 stale cache나 index에 남을 수 있습니다.

대응 · tombstone push, purge 재시도, fail-closed 범위. revoke-to-hide 시간과 표본 제거를 검증합니다.
!집계 오염·봇 조작

반복 요청이나 부정 click이 인기 점수와 후보 품질을 왜곡합니다.

대응 · source quarantine, abuse filter, aggregate rollback. baseline 대비 rank와 품질 지표를 확인합니다.
FST 메모리 압박

큰 artifact나 warm-up 때문에 OOM·tail latency·locale 실패가 발생합니다.

대응 · shard 분할, top-k 축소, 이전 artifact, overload fallback. RSS·headroom·p99를 확인합니다.
re-ranker timeout

카탈로그·개인화 의존성이 늦어져 후보가 비거나 전체 요청이 지연됩니다.

대응 · timeout budget, circuit breaker, global top-k fallback. fallback ratio와 정책 오류를 확인합니다.
06 · OPERATIONS

개인정보, 관측, 비용은 인덱스 밖에서도 관리한다

# 운영
보안·개인정보

raw query와 계정·IP를 동일한 장기 로그에 묶지 않고, 개인화는 동의·권한·별도 저장 경계를 전제로 합니다. response에는 내부 weight와 feature를 보내지 않습니다.

raw query ≠ default trace
관측 가능성

tier별 p99, prefix cache hit, index version skew, policy filter, revoke-to-hide, zero-result-after-filter, abuse reject를 분리해 봅니다.

suggest_latency_ms{tier}
비용 모델

FST/Trie RAM, snapshot build·배포, cache replica, event 집계, 정책 의존성, 개인정보 접근 통제가 비용을 만듭니다. 긴 TTL은 origin 비용과 철회 지연을 맞바꿉니다.

RAM + cache + build + egress
면접 모드 · 추가 질문06:00
“매일 수억 건의 키 입력을 받는 검색 자동완성을 설계해 보세요. Trie/FST와 cache를 어떻게 배포하고, 인기 점수·신선도·봇 조작·삭제와 개인정보를 어떤 순서로 다루겠습니까?”
후보 정본과 파생 indexlocale FST/Triehot prefix cachepolicy filter 우선versioned rollback
SOURCES

공식·1차 출처

NEXT CASE STUDY메시지 큐 시스템 설계
EDITORIAL NOTES

작성·검토·참고 자료

콘텐츠 원칙
이 문서는 독립적으로 재작성한 한국어 학습 자료입니다. 사실과 학습용 설계 가정을 구분합니다.
최종 검토
예상 학습 시간
22분

참고 자료

사실 오류·출처 정정은 문의·정정 페이지로 알려 주세요.