カテゴリー
サイト構築

指先一つでGCEの転送量を減らしてコスト半減

GCEのデータ転送量が思いの外高くなるので対策して転送量を半減させました。

GCEはデータ転送量の課金がある

 Google Compute Engineですが、インターネットに配信するデータ量に応じて課金があります。

お名前.com VPSからGoogle Compute Engineにサーバー移行した その1 | A-tak-dot-com

たとえば通信料はだいたいGCEから外に出て行くのが1GBあたり$0.12とか

 1GBあたり$0.12とかですが、うちみたいに写真が多いサイトだとなかなか馬鹿にならない。2015年10月の実績では$13.78もいってます。勉強も兼ねているとは言え、個人で運営しているサイトだとなんとか費用は抑えたいところです。

GCE以外から画像データを配信しよう

 GCEからの配信にお金がかかるならば、GCE以外から画像は配信すればいいじゃない。パンがなければケーキを食べればいいじゃない。

 そこで思い出したのがPhoton。

 WordPressのJetspackというプラグインの中の機能として「Photon」というものがあります。これはCDN(Contens Delivery Network)という仕組みをWordPressに簡単に使えるようにしてくれるプラグイン。

 CDNとは何かというとコンテンツをエンドユーザーに近いサーバーから効率的に配信する仕組みです。

 ここでミソなのが、CDNのキャッシュサーバーが大本のGCPのサーバーからコンテンツを取得して各ユーザーに配信するので、GCPに立てたサーバーからデータが配信されるのはキャッシュサーバーがキャッシュする時のみ。一度キャッシュされれば、キャッシュが破棄されるまではデータが配信されないので、GCPのデータ転送量が削減されるというわけ。

 本来は一カ所のサーバーからコンテンツ配信すると負荷が集中して表示が遅くなったりするのを緩和するために使うのですが、今回は通信料の削減に役立てようという作戦です。Photonは無料で使えます。

どれぐらい画像の直接アクセスが減ったか?

 実績値を測ってみました。nginxのアクセスログをBigqueryに流し込んでいるので、Bigqueryで集計してみた。

 サブクエリ使って長いけど、こんなの流した。

SELECT
  log_date,
  access_count,
  jpeg_count,
  jpeg_count / access_count AS rate
FROM (
  SELECT
    DATE(TIMESTAMP(metadata.timestamp)) AS log_date,
    COUNT(textPayload) AS access_count
  FROM (TABLE_DATE_RANGE(log.nginx_a_tak_access02_,TIMESTAMP('2015-11-21'), TIMESTAMP('2015-12-01')))
  WHERE
    textPayload NOT LIKE '%GoogleHC%'
  GROUP BY
    log_date
  ORDER BY
    log_date) AS all
INNER JOIN (
  SELECT
    DATE(TIMESTAMP(metadata.timestamp)) AS jd,
    COUNT(textPayload) AS jpeg_count
  FROM (TABLE_DATE_RANGE(log.nginx_a_tak_access02_,TIMESTAMP('2015-11-21'), TIMESTAMP('2015-12-01')))
  WHERE
    textPayload NOT LIKE '%GoogleHC%'
    AND textPayload LIKE '%.jpg%'
  GROUP BY
    jd
  ORDER BY
    jd) AS jpeg
ON
  all.log_date=jpeg.jd

 日付毎に分割されたテーブルをTABLE_DATE_RANGEでまとめて、GoogleHC(ヘルスチェック)のログを除外してトータルのリクエスト数を測った。合わせて今度は.jpgのリクエストの数も並べて、トータルリクエスト数とjpgへのリクエスト数の比率も出した。

 23日からPhotonを有効にしている。

log_dateaccess_countjpeg_countrate
2015/11/2165,06828,57844%
2015/11/2264,51827,92943%
2015/11/2353,24314,99128%
2015/11/2444,92610,11423%
2015/11/2538,8888,90523%
2015/11/2636,2277,55321%
2015/11/2736,6497,68921%
2015/11/2840,7909,37323%
2015/11/2938,5548,15321%
2015/11/3040,1827,73819%
2015/12/130,5336,11320%

 Photonを有効にする前の22日まではjpgファイルへのリクエストが総リクエスト数の40%ぐらいだったのが、Photonを有効にした23日以降は28%まで下がっている。24日以降はキャッシュが十分に行われたのかおおむね20%程度にまでなっている。まさに半減

指先一つで半減

 PhotonをWordPressの管理画面で有効にするだけで転送量半減します。GCEやAWSを使ってWordPress運用されている方はお試しあれ。

[追記]
 一つ難点があるとすれば画像パクりの対処が意味がなくなる。

 Photonにより画像のリンク先がPhotonのサーバーに変わるので、自前のサーバーに直リンク対策しても意味がなくなる。まぁ、直リンクによる無駄なトラフィックは関係なくなるから、まぁよいか。

この記事を書いた人: A-tak

A-tak.com(えいたっく どっとこむ)の管理人。
Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。
A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。今年で18年目!

Twitter
Mastodon
Facebook

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください