短縮 URL のアーキテクチャとは、URL 短縮サービスの内部設計と技術的な仕組みの全体像です。システム設計の面接問題としても頻出するテーマで、スケーラブルな Web サービスの設計原則を学ぶ好例です。
基本的なアーキテクチャは 3 つのコンポーネントで構成されます。第一に URL 短縮エンジン (長い URL を受け取り、ユニークなショートコードを生成してデータベースに保存)、第二にリダイレクトエンジン (短縮 URL へのアクセスを受け、データベースからリダイレクト先を取得して 301/302 レスポンスを返す)、第三にアナリティクスエンジン (クリックデータを収集・集計して統計情報を提供) です。
ショートコードの生成方式は主に 3 つあります。カウンターベース (連番 ID を Base62 に変換)、ハッシュベース (URL の MD5/SHA256 ハッシュの先頭 N 文字を使用)、ランダム生成 (ランダムな文字列を生成して衝突チェック) です。カウンターベースが最もシンプルで衝突がなく、大規模サービスで広く採用されています。
スケーラビリティの鍵はキャッシュ戦略です。短縮 URL のリダイレクト処理は読み取りが圧倒的に多い (書き込みの 100 倍以上) ため、Redis や Memcached によるキャッシュが効果的です。人気のある短縮 URL をキャッシュに保持することで、データベースへのクエリを大幅に削減し、リダイレクトの応答時間を 1 ミリ秒以下に抑えられます。
データベース設計では、キーバリューストア (DynamoDB、Redis) が短縮 URL のルックアップに適しています。ショートコードをキー、元の URL と付随情報を値として保存するシンプルな構造です。月間数十億リクエストを処理する大規模サービスでは、データベースのシャーディング (ショートコードの先頭文字でパーティション分割) も必要になります。関連書籍は Amazon でも探せます。