AWSの固定IPでアクセスできるスケーラブルな静的サイト構成を考える
テレビアニメ版SAOにて、IPアドレス 52.68.96.58
が登場したと話題となりました。
このアドレスにブラウザでアクセスするとSAO関連のサイトが表示されます。(2020/09/20現在)
ただし、地上波の人気アニメで取り上げられる影響力は凄まじく、アクセス集中によりしばらくはページがまともに閲覧できない状態でした。
IPアドレスのままサイトを公開する機会はあまりないと思いますが、今回のようなパターンを如何に捌くかという課題は面白そうなので、少し構成を考えてみます。
SAOに登場した固定IPアドレス
52.68.96.58
は、いかにもAWSっぽいアドレスでピンと来た方も多いようです。
実際に http://52.68.96.58 へアクセスするとSAO関連のサイトが公開されており、事前に仕込まれた演出であることが分かります。
Chromeの開発者ツールで覗いてみるとこんな感じ。nginxとVarnishで動いているようです。
AWS構成2パターンを試す
今回は以下の2パターンを実際に試してみました。
構成 | メリット | デメリット |
---|---|---|
NLB + EIP | 構成がシンプル | バックエンドの管理が必要 |
Global Accelerator + ALB + S3 | マネージドサービスのみで実現 | 構成がやや複雑 |
中身はシンプルなHTMLと画像1枚を返すだけの単純な静的サイトです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Static Website</title>
</head>
<body>
<p>Welcome to my server!</p>
<img src="server.png" alt="server">
</body>
</html>
NLB + EIP
パッと思いつくのが、グローバルIPアドレスを固定できるNLBの活用です。
ターゲットグループにEC2やECSを複数繋げることで負荷分散できます。
Auto Scalingと組み合わせることでかなりの量までは捌けそうですが、EC2やECSのコストが比較的高くついてしまいます。さらに、サーバやコンテナ・ミドルウェアの管理も必要です。
今回のような(恐らく)静的サイトであれば、マネージドサービスで完結させたいですね。
Global Accelerator + ALB + S3
次に使えそうなのが、AWS Global Acceleratorです。
固定IPでアクセスできる上、バックエンドにALBを指定することができます。
ALBでは任意の固定レスポンスを返せるため、先ほどのHTMLを直接ALBに入れてしまえば完全マネージド化が実現します。入口のHTML以外はS3から配信してしまいましょう。
Global Acceleratorで割り当てられた固定IPでアクセスするとこんな感じ。
AWS Global Accelerator とは
AWSのグローバルネットワークを活用してパフォーマンスを改善できるサービスです。
固定IPアドレスが2つ割り当てられ、ALB・NLB・EIP・EC2をバックエンドとして指定できます。
https://aws.amazon.com/jp/global-accelerator/
IPエニーキャストによりユーザから近いAWSロケーションへトラフィックが吸収され、エンドポイントまではAWS内ネットワークを通るようになります。AWS内はインターネットより低遅延のため、エンドポイントへ直接アクセスするよりもパフォーマンスが向上するという仕組みです。
「グローバル分散かつ固定IPのNLB」と考えれば分かりやすいかと思います。ヘルスチェックや重み付けルーティングも出来るため、DR構成のフロントにも使えそうですね。
どのくらい早くなるか
AWS Global Accelerator Speed Comparison にアクセスすると、実際に各リージョンへの通信結果を比較できます。
私の環境(transix DS-Lite)では、4〜29%ほどの改善が見込めました。東京リージョンでも早くなっているのが興味深いです。
まとめ
固定IPでスケーラブルな静的サイトを公開するには、AWS Global AcceleratorとALBとS3を使うのが良さそう。(でも使う場面は特になさそう)
ディスカッション
コメント一覧
まだ、コメントがありません
フォローする
カテゴリー
最近の投稿
ブログについて