【ITニュース解説】A Deep Dive into CDNs, DNS, and Your Server Setup
2025年09月06日に「Dev.to」が公開したITニュース「A Deep Dive into CDNs, DNS, and Your Server Setup」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
CDNは、Webコンテンツをユーザーに近いサーバーに配置し、表示速度を向上させる。GitLabのようなアプリケーションでは、画像やCSSなどの静的ファイルをCDNにキャッシュすることで、サーバー負荷を軽減し、ユーザー体験を向上。AWS CloudFrontを使い、DNS設定でCloudFrontのドメイン名を指定することでCDNを利用可能。負荷分散は必須ではないが、サーバーが増えた場合は有効。
ITニュース解説
GitLabのようなセルフホストアプリケーションのパフォーマンス改善に、CDN(コンテンツデリバリーネットワーク)が役立つ。ユーザーベースが拡大したり、グローバルに分散したりすると、ページの読み込み速度が遅くなるなどの問題が生じる。この記事では、CDNの仕組み、設定方法、ロードバランサーの役割について解説する。
CDNは、世界中に分散したミニライブラリのようなもの。ユーザーがGitLabインスタンスからファイルにアクセスする際、毎回サーバーまでアクセスする必要はなく、最寄りのCDNサーバーからコンテンツを取得できる。これにより、アクセス速度が向上する。ユーザーがロンドンからgit.dev.toにアクセスする場合を考える。DNS(ドメインネームシステム)がCDNを指すように設定されていれば、リクエストはロンドンの最寄りのCDNサーバーに送られる。サーバーにファイルがあれば、ユーザーに直接配信され、高速なアクセスが実現する。もしファイルがなければ、CDNサーバーはオリジンサーバー(OVH上のGitLabインスタンス)からファイルを取得し、ユーザーに配信すると同時に、キャッシュとして保存する。
AWS CloudFrontをCDNとして使用する設定例を見ていく。Namecheapでドメインdev.toを管理し、Google Cloud DNSでサブドメインgit.dev.toを管理、OVHサーバー上のGitLabインスタンスをオリジンサーバーとする。
まず、AWS CloudFrontコンソールでCloudFrontディストリビューションを作成する。このとき、オリジンサーバーを指定する必要がある。オリジンサーバーのドメイン名またはIPアドレス(例:git.dev.to)を「Origin Domain」フィールドに入力する。次に、キャッシュの動作を設定する。静的ファイル(画像、CSS、JS)は長期間キャッシュし、動的コンテンツはオリジンに直接アクセスするか、短時間だけキャッシュする。URLパスに基づいてルールを設定できる(例:/assets/*)。
CloudFrontディストリビューションがデプロイされると、AWSからCloudFrontドメイン名(例:d12345.cloudfront.net)が提供される。このドメイン名を使用し、DNSレコードを更新する。Google Cloud DNSコンソールで、git.dev.toのDNSレコードを作成する。CNAME(Canonical Name)レコードを使用し、名前をgit、タイプをCNAME、データをCloudFrontドメイン名に設定する。TTL(Time To Live)は適切な値(例:300秒)に設定する。DNSの変更が反映されると、ユーザーがgit.dev.toにアクセスする際、リクエストはCloudFrontを経由し、キャッシュされたコンテンツはCDNから、キャッシュされていないコンテンツはオリジンサーバーから提供される。
ロードバランサーは必須ではない。ロードバランサーは、複数のバックエンドサーバーにトラフィックを分散させ、サーバーの負荷を軽減する目的で使用される。現在の構成では、GitLabインスタンスは単一のOVHサーバーで実行されているため、ロードバランサーは不要。ただし、GitLabインスタンスが大規模になり、単一サーバーでは負荷を処理しきれない場合、複数のGitLabサーバーを構築し、ロードバランサーを導入することを検討する。
CDNの導入により、パフォーマンスの向上、オリジンサーバーの負荷軽減、信頼性の向上、セキュリティの強化、コスト削減などのメリットが得られる。CDN、DNS、ロードバランサーの役割を理解し、適切に設定することで、ユーザーに快適なGitLab環境を提供できる。