패스잇
시스템 설계 · 심화

URL 단축 서비스(tinyurl)를 설계해주세요.

힌트 · Base62 인코딩, 해시 충돌 처리, 읽기 중심 트래픽 캐싱, 만료 정책, 대용량 처리 전략을 설명해보세요.

해시 함수충돌 해결데이터베이스캐싱로드 밸런싱

모범답안

URL 단축 서비스 설계에 대해 말씀드리겠습니다.

먼저, 긴 URL을 받으면 해시 함수를 통해 짧은 고유 ID를 생성합니다. 이 ID는 Base62 인코딩을 사용하여 더 짧게 만들 수 있습니다. 해시 충돌이 발생하면, 충돌 해결 전략(예: 체이닝, 오픈 어드레싱)을 사용하여 새로운 ID를 생성하거나, 기존 ID에 추가 정보를 덧붙여 고유성을 확보합니다.

데이터베이스에는 짧은 ID와 원래 URL을 매핑하여 저장합니다. 읽기 중심 트래픽을 고려하여 캐싱 전략(예: Redis, Memcached)을 적용하여 데이터베이스 부하를 줄입니다.

만료 정책을 설정하여 오래된 URL은 자동으로 삭제되도록 관리하고, 대용량 처리를 위해 로드 밸런싱을 사용하여 트래픽을 분산합니다. 필요에 따라 데이터베이스 샤딩도 고려할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 시스템 설계 면접 질문

← 시스템 설계 면접 질문 전체 보기