1단계. 문제 이해 및 설계 범위 확정
예제 시스템의 기본적 기능
- URL 단축 : 주어진 긴 URL을 훨씬 짧게 줄인다.
- URL 리디렉션 : 축약된 URL로 HTTP 요청이 오면 원래 URL로 안내
- 높은 가용성과 규모 확장성, 그리고 장애 감내가 요구됨
계략적 추정
- 쓰기 연산 : 매일 1억 개의 단축 URL 생성
- 초당 쓰기 연산 : 1억/24/3600 = 1160
- 읽기 연산 : 읽기 연산과 쓰기 연산 비율은 10:1이라고 하자. 1160 *10 = 11600
- URL 단축 서비스를 10년간 운영한다고 가정하면 1억36510 = 3650억개의 레코드를 보관해야 한다.
- 따라서 10년 동안 필요한 저장 용량은 3650억 * 100바이트 = 36.5TB 이다
2단계. 계략적 설계안 제시 및 동의 구하기
API 엔드포인트
URI 단축기는 기본적으로 두 개의 엔드포인트를 필요로 한다.
- URL 단축용 엔드포인트
- 새 단축 URL을 생성하고자 하는 클라이언트는 이 엔드포인트에 단축할 url을 인자로 실어서 post 요청을 보내야 한다. 이 엔드포인트는 다음과 같은 형태를 띤다.
- POST /api/v1/data/shorten
- 인자: {longUrl: longURLstring}
- 반환: 단축 URL
- URL 리디렉션용 엔드포인트
- 단축 URL에 대해서 HTTP 요청이 오면 원래 URL로 보내주기 위한 용도의 엔드포인트
- GET /api/v1/shortUrl
- 반환: HTTP 리디렉션 목적지가 될 원래 URL
URL 리디렉션

단축 url를 입력하면 301, 302 두가지 응답값이 나온다.
301 Permanently Moved