대규모 시스템 설계 면접에서는 단순히 정답을 말하는 것이 아니라 다양한 설계 옵션의 장단점을 비교하고 상황에 맞는 합리적인 선택을 내릴 수 있는 능력이 중요하다. 8장은 “트레이드오프(Trade-off)”의 개념과 이를 설계 과정에서 어떻게 활용해야 하는지를 다룬다.
웹 크롤러(Web Crawler)는 인터넷 상의 웹 페이지를 자동으로 탐색하고 필요한 데이터를 수집하는 프로그램이다. 주요 역할은 웹 페이지를 순회하며 HTML, 이미지, 링크 등 데이터를 다운로드하고 이를 저장하거나 검색 엔진 인덱싱에 활용하는 것이다.웹 크롤러 설계
URL 단축기는 긴 URL을 짧게 변환해주는 서비스다. 예를 들어, https://www.example.com/very/long/path?id=123456를 https://short.ly/abcd12처럼 바꿔준다. 단순해 보이지만, 실제 운영 환경에서
안정 해시(Consistent Hashing)는 분산 시스템에서 서버 노드 수가 변동되더라도 데이터의 재배치 비용을 최소화하는 해싱 기법이다. 전통적인 모듈로 기반 해싱(hash(key) % N) 방식은 서버 수(N)가 바뀌면 대부분의 키 매핑이 달라지는 문제가 발생한
키-값 저장소(Key-Value Store)는 키를 통해 값을 빠르게 찾는 단순한 구조를 갖는다. 하지만 대규모 분산 환경에서는 단순히 HashMap처럼 동작하지 않는다. 수십~수천 대 서버에서 안정적이고 빠른 응답을 제공하려면 파티셔닝, 복제, 일관성 모델, 장애 복
분산 시스템에서는 여러 서버가 동시에 데이터를 생성하기 때문에 전역적으로 충돌 없는 ID를 발급하는 것이 필수적이다. 단일 서버 환경에서는 DB의 AUTO_INCREMENT 컬럼이나 단순 카운터로도 충분하지만 분산 환경에서는 다음 문제가 발생한다.여러 서버가 동시에 같
대규모 서비스에서 사용자에게 알림(Notification)을 적시에 전달하는 것은 매우 중요한 기능이다. 알림은 이메일, SMS, Push 등 다양한 채널로 발송될 수 있으며 각 채널마다 속도·비용·신뢰성 특성이 다르다. 또한 사용자 수가 수백만, 수천만으로 확장되면
사용자가 팔로우하는 사람들의 게시물, 행동(좋아요, 리쉐어 등)을 최신성 + 개인화 기준으로 정렬해 무한 스크롤 피드로 제공한다. 대용량 트래픽에서도 낮은 지연과 높은 가용성을 유지해야 한다.게시물 작성/삭제(텍스트·이미지·동영상)팔로우/언팔로우내 뉴스피드 조회(무한
문제 정의 사용자들이 실시간으로 1:1 혹은 그룹 채팅을 할 수 있는 시스템을 설계한다. 메시지는 안정적으로 전달되고 지연은 최소화되며 동시에 수백만 사용자가 접속해도 확장성과 안정성을 유지해야 한다. 요구사항 정리 기능 사용자 로그인/로그아웃 친구 추가 / 대화방
검색어 자동완성은 사용자가 검색창에 몇 글자만 입력해도 관련된 검색어 후보를 제안하는 기능이다. Google, Naver, YouTube, Amazon 같은 서비스에서 이미 표준처럼 제공되고 있으며 빠른 응답 속도(수 ms 단위)와 높은 정확성이 핵심이다.예를 들어,
최근 LLM 기반 애플리케이션에서 단순 키워드 매칭만으로는 한계가 뚜렷했다. 예를 들어 "강아지"와 "애견"은 같은 의미지만 DB에서 문자열 검색만 하면 잡히지 않는다. 이 문제를 해결하기 위해 데이터를 숫자 벡터 공간으로 변환한 뒤 유사도 기반 검색을 할 수 있는 구