短.be

URL 短縮サービスをセルフホスティングする方法 — 自前運用のメリットと構築手順

この記事は約 4 分で読めます

技術解説

URL 短縮サービスのセルフホスティングとは、Bitly や TinyURL などの外部サービスに依存せず、自社のインフラ上で短縮 URL サービスを構築・運用することです。データの完全な管理権限、カスタマイズの自由度、外部サービス依存リスクの排除など、ビジネス要件によってはセルフホスティングが最適な選択肢となります。

セルフホスティングの最大のメリットは、データの完全な管理権限を持てる点です。クリックデータ、リダイレクト先 URL 、ユーザーの IP アドレスなど、すべてのデータが自社のインフラ内に保存されるため、GDPR や個人情報保護法への対応が容易になります。外部サービスにデータを預ける必要がないため、データ漏洩リスクも低減できます。金融機関や医療機関など、データの取り扱いに厳格な規制がある業界では、セルフホスティングが事実上の必須要件となるケースもあります。

第二のメリットは、カスタマイズの自由度です。リダイレクトのロジック、アクセス解析の粒度、認証方式、 API の仕様など、あらゆる要素を自社の要件に合わせて設計できます。たとえば、社内システムとの SSO (シングルサインオン) 連携、独自のアクセス制御ルール、カスタムダッシュボードの構築など、外部サービスでは実現困難な機能を自由に実装できます。

第三のメリットは、外部サービス依存リスクの排除です。外部の短縮 URL サービスが停止、値上げ、仕様変更した場合でも、自社サービスには影響がありません。2009 年に tr.im が一時サービス停止を発表した事例や、Google URL Shortener (goo.gl) が 2019 年にサービスを終了した事例は、外部依存リスクの現実性を示しています。

オープンソースの URL 短縮ツールとして代表的なものを 3 つ紹介します。YOURLS (Your Own URL Shortener) は PHP + MySQL で動作する軽量なツールで、プラグインによる拡張が可能です。Shlink は PHP 製のモダンな短縮 URL サービスで、REST API 、 QR コード生成、詳細なアクセス解析機能を標準搭載しています。Kutt はオープンソースの短縮 URL サービスで、カスタムドメイン対応、 API 、統計ダッシュボードを備えています。

サーバーレス構成での実装は、コスト効率と運用負荷の両面で優れた選択肢です。AWS の場合、 API Gateway + Lambda + DynamoDB の構成で、リクエストが発生した時だけ課金されるため、トラフィックが少ない段階ではほぼ無料で運用できます。DynamoDB のオンデマンドキャパシティモードを使用すれば、トラフィックの増減に自動的にスケールし、キャパシティプランニングが不要です。CloudFront を前段に配置すれば、世界中のエッジロケーションからリダイレクトレスポンスを返せるため、レイテンシを最小限に抑えられます。

サーバーレス構成の概要を説明します。ユーザーが短縮 URL にアクセスすると、CloudFront がリクエストを受け取り、 API Gateway 経由で Lambda 関数を呼び出します。Lambda 関数は DynamoDB からショートコードに対応する元の URL を取得し、 HTTP 302 リダイレクトレスポンスを返します。同時に、クリックデータ (タイムスタンプ、IP アドレス、User-Agent) を DynamoDB の別テーブルに記録します。 URL の短縮 (新規登録) も同様に API Gateway + Lambda + DynamoDB で処理します。

セルフホスティングのデメリットも理解しておきましょう。第一に、構築と運用のコストです。初期構築には数日〜数週間の開発工数が必要で、運用開始後もセキュリティパッチの適用、バックアップ、監視、障害対応などの運用タスクが発生します。第二に、可用性の確保です。外部サービスは SLA に基づいて高い可用性を保証していますが、自社運用では可用性の設計と維持が自己責任となります。第三に、機能の充実度です。Bitly や Rebrandly などの商用サービスは、高度なアクセス解析、チーム管理、 API の充実度など、長年の開発で蓄積された機能を提供しています。セルフホスティングでこれらの機能をすべて再現するには、相当な開発工数が必要です。

セルフホスティングが適しているケースは、データの管理権限が必須の業界 (金融、医療、官公庁)、大量のリンクを処理するためコスト削減が重要なケース、独自の機能要件がある場合です。一方、少量のリンク管理で十分な場合や、運用リソースが限られている場合は、外部サービスの利用が合理的です。

関連書籍: サーバーレスアーキテクチャや AWS の構築について体系的に学びたい方には、Amazon で関連書籍を探す がおすすめです。

関連記事

さっそく URL を短縮してみましょう

URL を短縮する