8. URL 단축기
1. 문제 이해 및 설계 범위 확정
어떻게 동작해야하는가?
트래픽 규모, 매일 몇개의 URL을 만들어내야하는가?
매일 1억개
URL길이는 어느정도?
가능한 짦게
URL 문자에 제한?
숫자, 영문자만
URL 을 제거하거나 업데이트 가능?
불가
개략적인 추정
쓰기 연산 -> 매일 1억개
초당 쓰기 연간 1억 / 24 / 3600 = 1160개
읽기 연산: 읽기 : 쓰기 = 10 : 1
10년간 운영한다고 하면 1억 * 365 * 10 = 3650억개의 레코드를 보관해야함
축약전 URL 평균 길이 100byte
그러면 3650 * 100 바이트 = 36.5TB
2. 개략적 설계얀 제시 및 동의 구하기
API 엔드포인트
생성
POST /api/v1/data/shorten
조회
GET /api/v1/shortUrl
단축 URL을 받은 서버는
301 응답과 할 께, Location에 헤더를 넣어 반환
301
Permanently Moved : 영구적 이전. 브라우저는 이 응답을 캐시함. 추후 같은 단축 URL에 대해 요청을 보낼 필요가 있을 때, 브라우저는 캐시된 원래 URL로 요청을 보내게 됨.
302
Found :일시적 이전. 캐시하지 않음
3. 상세 설계
해시 함수
0-9, a-z, A-Z -> 10 + 26 + 26 = 62개
3650억개의 URL을만들 수 있어야함
hashValue의 길이를 정하기 위해서는
62 ^ n >= 3650억.. n 의 최소값
n = 7
base62 ![[Pasted image 20250907142550.png]]
해시 후 충돌 해소
해시 후에 충돌 발생하면 해소 하는 방법 ![[Pasted image 20250907143058.png]]
base-62 변환 단점 개선
AUTO_INCREMENT에서 하이브리드 생성
ID = 1234 (AUTO_INCREMENT)
변형된_ID = (1234 * 1103 + 7919) % 1000000
-> Base62(변형된_ID)
각 서버마다 다른 시작점과 증가폭을 주는 방법? (서버1: 1,4,7... 서버2: 2,5,8... 서버3: 3,6,9...)
서버수 변경 등에 대응하기가 어려워짐
특정 서버에 트래픽이 몰리는 경우
중앙 집중식 ID 생성 서버를 두는 방법?
SPOF(Single Point of Failure)
보안상 문제 해결
암호화 함수등
URL 단축기 상세 설계
![[Pasted image 20250907143410.png]]
중요 이슈
분산 환경에서 유일성이 보장되는 ID 생성기 가 필요함.
[[7. 분산 시스템을 위한 유일 ID 생성기]] 참고
URL 리디렉션 상세 설계
![[Pasted image 20250907143538.png]]
참고
https://claude.ai/share/114f0cd5-491d-46c8-9549-979f7f6c0d6a
https://jinseong-dev.tistory.com/21
Last updated
Was this helpful?