Design a URL Shortener (Bitly) - System Design Interview
- 시스템 디자인 스쿨은 URL 단축기 설계에 대한 심층적인 무료 및 유료 자료를 제공하며, 초보자에게 적합한 문제이다. 📚
- URL 단축기의 핵심 기능은 긴 URL을 고유한 짧은 URL로 변환하고, 짧은 URL을 원래의 긴 URL로 빠르게 리디렉션하는 것이다. 🔗
- Bitly 데모는 짧은 URL 접속 시 301 리디렉션을 통해 원본 URL로 이동하는 과정을 보여주며, 이는 HTTP 리디렉션의 실제 작동 방식을 시사한다. ➡️
- 시스템 설계는 요구사항 수집(기능/비기능), API 설계, 고수준 설계, 그리고 스케일링 및 엣지 케이스를 다루는 심층 분석의 구조화된 접근 방식을 따른다. 🏗️
- 기능 요구사항에는 URL 단축 및 고유성 보장, 빠른 리디렉션, 그리고 선택적으로 링크 분석(접근 횟수 추적)이 포함된다. 🎯
- 비기능 요구사항은 낮은 리디렉션 지연 시간, 높은 가용성, 일일 1억 사용자 및 초당 1만 요청을 처리할 수 있는 확장성을 목표로 하며, 이는 데이터베이스 스케일링의 필요성을 강조한다. 📈
- API는
POST /api/urls/shorten으로 URL을 단축하고, GET /api/urls/{short_url}로 리디렉션을 처리하는 두 가지 주요 엔드포인트를 정의한다. 💻
- 리디렉션 시 301(영구 이동)은 브라우저 캐싱을 유발하여 분석 정확도를 저해할 수 있으므로, 정확한 분석을 위해 302(발견됨)와 같이 캐싱되지 않는 리디렉션 사용을 고려해야 한다. 🔄
- 데이터베이스 대신 로컬 해시맵을 사용한 간단한 프로토타입은 핵심 로직을 보여주지만, 실제 대규모 시스템의 비기능 요구사항을 충족하기에는 한계가 있다. 🧪
데브허브 | DEVHUB | Design a URL Shortener (Bitly) - System Design Interview