話題の記事

DevelopersIOブログ基盤を北米に移設して, AWSコストを33%削減してみた

re:Invent2022に向けたブログ環境の強化と、昨今の円安対策としてのコスト最適化のため、当ブログ基盤を移設、更新してみました。
2022.11.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSチームのすずきです。

ラスベガスで次週(2022/11/28)から開催される re:Invent2022、 当ブログ(DevelopersIO) でも1日100件ペースでの記事公開により、平時の数倍のシステム負荷が見込まれています。

  • DevelopersIO 日別投稿実績(100本以上)
投稿数 日時
154 2019/12/4
124 2022/7/7
122 2021/7/7
111 2019/12/5
104 2018/11/27
104 2018/11/28
101 2019/12/3

今回、現地でのブログ執筆環境の改善をコストパフォーマンスよく実現するため、 ブログ基盤で利用する AWSのリージョンを 東京(ap-northeast-1)から オレゴン(us-west-2) へ 移転する機会がありましたので、紹介させていただきます。

構成図

改善効果

東京リージョンからオレゴンへの移設により、AWS利用費は月額750ドル、約33%の削減を見込んでいます。

東京、オレゴンコスト比較一覧

サービス Type 消費量(月間) 東京単価($) オレゴン単価($) 東京月額($) オレゴン月額($) 削減率
RDS Aurora Capacity Unit hour (Aurora MySQL Serverless v2) 9000 0.200 0.120 1800 1080 40%
Aurora:StorageIOUsage 500 0.240 0.200 120 100 17%
EC2 SpotUsage:c6g.large 2000 0.0349 0.0338 69.8 - -
SpotUsage:c7g.large 1700 - 0.0355 - 60.35 14%
DataTransfer-Out-Bytes 600 0.1083 0.085 64.98 51 22%
General Purpose (gp3) provisioned storage 150 0.096 0.08 14.4 12 17%
ELB Application LoadBalancer-hour 2400 0.0243 0.0225 58.32 54 7%
DataTransfer-Out-Bytes 800 0.1083 0.085 86.64 68 22%
S3 TimedStorage-ByteHrs 2000 0.025 0.023 40 36.8 8%
Global Accelerator Fixed fee for every hour or partial hour 720 - 0.025 - 18 -
DT-Premium-from-North-America-regions-out-to-Asia-Pacific-Internet-clients 600 - 0.035 - 21 -
合計 2289.04 1531.325 33%

サービス毎

RDS

短時間、スパイク的な DB負荷 に追従できる Aurora Serverless v2 を継続利用しています。

  • ACU (Aurora Capacity Unit) は平時 13前後 (メモリ 6.5GB 相当)、最大性能は 60 ACU (メモリ30GB)相当の利用を予定しています。

EC2

c7g インスタンス

オレゴンリージョンの移転後、 2022年5月、北米などのリージョンで一般利用可能となっていた Graviton3 搭載の c7g.largeを採用しました。

c7g 性能

c7g.largeと、東京リージョンで 従来から利用していたインスタンスをオレゴンの本番環境で混在稼働させ、実際のワークロードでCPU使用率を比較しました。

  • c7gのCPU使用率は、前世代の c6g と比較し、15%程度低い値でした。

Global Accelerator

日本国内、欧州などの拠点からの執筆体験を損なう事を回避するため、Global Acceleratorを採用、 オレゴンリージョンまでのネットワーク性能を確保しました。

「curl」コマンドを利用して、オレゴンのALBと Global Accelerator経由のブログサイトのパフォーマンスを測定。Global Acceleratorの有効性を確認する事ができました。

東京→オレゴン通信のパフォーマンス

  • 測定対象: ブログのトップページ(https://dev.classmethod.jp/)
  • NTT東日本のフレッツ網を利用する端末から「curl」コマンドを利用し、ALBと Global Acceleratorの経由の性能を測定
変数 解説 ALB Global Accelerator
size_download ダウンロードしたデータの総量(bytes) 166063 166063
speed_download ダウンロードしたデータ量の1秒あたりの平均(bytes/sec) 162094 281890
time_namelookup DNSの名前解決が完了した時間(sec) 0.006724 0.00423
time_connect TCPなどのコネクションの確立が完了した時間(sec) 0.143912 0.011603
time_appconnect TLSなどの接続、ハンドシェイクが完了した時間(sec) (7.19.0で追加) 0.438888 0.332071
time_pretransfer データの転送が開始した時間(sec) 0.43908 0.332304
time_starttransfer サーバーからレスポンスの最初のデータを受信した時間(sec)  0.752564 0.479812
time_total 全体の処理にかかった時間(sec) 1.024482 0.589105
$ host dev.classmethod.jp
dev.classmethod.jp has address 13.248.175.13
dev.classmethod.jp has address 76.223.57.58

$ IP='13.248.175.13'
$ curl ${IP} -k -o /dev/null -s -w @- << EOF
size_download: %{size_download}\n
speed_download: %{speed_download}\n
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
time_total: %{time_total}\n
EOF

まとめ

AWS費用に占めるDBコストの割合が高い当ブログ(DevelopersIO)サイトでは、 Aurora Serveless のACU単価が 東京より40%廉価な 北米(オレゴン)リージョンへの移転により、 長期リザーブドインスタンスに匹敵するコスト削減が実現できました。

EC2インスタンスや、各種ストレージサービス、ネットワーク通信費用なども、 北米リージョン は 東京リージョンと比較し、10~20%程度廉価な価格設定であったり、 C7gなどコストパフォーマンスに優れたインスタンスを利用できる場合もあります。

国外リージョンの利用に制約がないインターネット向けのサービスを提供するワークロードで、 AWS利用コストを最適化する手段の一つとして北米リージョンを。 また、高いネットワーク性能を必要とする場合には、CloudFront、Global Accelerator を併せてご評価下さい。