문제 이해와 설계 범위 확정
개략적 추정
- 쓰기 연산 : 매일 1억개의 단축 URL 생성
- 읽기 연산 : 쓰기 연산의 10배로 추정. 따라서 읽기 연산은 매일 1000만회 발생한다.
초당 읽기/쓰기 연산 횟수
- 쓰기 연산 : 1억 / 24 / 3600 = 1160회
- 읽기 연산 : 1160 * 10 = 11600회
연간 필요 메모리 계산
- 매일 1160개의 URL을 생성하므로 1억 * 365 = 365억개의 레코드를 계산해야 함
- 개당 100바이트라고 한다면, 365억 * 100바이트 = 3.65TB 필요
개략적 설계안
URL 단축키 API 엔드포인트
- REST 스타일로 설계할 때 단축용, 리디렉션용 엔드포인트가 필요하다.
URL 단축용 엔드포인트
- 단축할 URL을 인자로 POST 요청을 보내야한다.
POST /{url_단축용 엔트포인트}
인자 : 단축할 URL
반환 : 단축된 URL
URL 리디렉션용 엔드포인트
- 단축 URL에 대한 HTTP 요청이 오면 원래 URL로 리디렉션 해줘야 한다.
GET /{단축 URL}
반환 : 단축되기 전 원래 URL