GameWith Developer Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

意外と見落としがちだった、クラウドコストの小さな積み重ね

こんにちは。サービス開発部の神崎です。
この記事はGameWith アドベントカレンダー2024 12日目の記事です。

サービスが軌道に乗り始め、月々のクラウドの請求書を見直してみると、意外とコストが増えています。 安定稼働のフェーズに入ったいま、最適だと思っていたコストも実はもうすこし削減できる!なんてことも結構あると思います。 本記事では、意外と忘れがちな部分でちゃんと見ると無駄なコストが節約できるポイントについてご紹介します。

aws

ALB

AWSのロードバランサーは起動しているだけで月々一定のコストが発生します。

https://aws.amazon.com/jp/elasticloadbalancing/pricing/

USD 0.0243/Application Load Balancer/時

これが意外とチリツモです。 弊社だとマイクロサービス化が進んでおり、サービスごとにロードバランサーが存在する状況でした。 1ロードバランサーにつき$20/月ですが、固定で一定の料金がかかるため数が増えれば料金がかかります。

実はロードバランサーは1つで複数のサービスも運用可能です。 https://docs.aws.amazon.com//elasticloadbalancing/latest/application/load-balancer-limits.html

サブドメインも活用できる場合は1ロードバランサーあたり100個までドメインをつけることができます。 GameWithの場合は開発環境の数が多いので有効活用できています。

また運用面に関してもやりにくい部分はありませんでした。

  • アクセスログはドメインが含まれているのでサービスごとの分割も可能
  • 各種トラフィックはターゲットグループごとに確認可能
  • WAFはCloudfrontを利用すれば個別にルールを適用することが可能

本番環境でも同様の設定は可能ですが以下のポイントを考慮する必要があります。

  • 一部のサービスでトラフィックがスパイクすると、紐づいている全サービスに影響がでる

client VPN

client VPN は実は立てているだけで結構なコストが掛かります。

https://aws.amazon.com/jp/vpn/pricing/#AWS_Client_VPN_pricing

AWS Client VPN エンドポイントアソシエーション USD 0.15/時間

これが結構高いです。 GameWithでは東京リージョンで利用しているのですが、1つのVPNで$100/月のコストが発生します。 ターゲットネットワークの関連付けを外せば料金発生しないので、不要なときは外しておくのがおすすめです。

注意事項としてターゲットネットワークの関連付けを外すとルートテーブルの設定も消えます。 削除前に必要な設定はメモしておくと良いと思います。

S3

S3のコストはトラフィックによって変動するので意外と軽視しがちな部分です。

S3のコンテンツの配信についてはCDN(awsだとCloudfront)を利用されていると思います。 ただし、ec2やlambdaなどコンピューティングリソースからの取得についてはS3への直接アクセスがオススメです。

https://aws.amazon.com/jp/s3/pricing/

Amazon S3 バケットから S3 バケットと同じ AWS リージョン内の任意の AWS のサービスに転送されたデータ (同じ AWS リージョン内の別のアカウントに転送されたデータを含む)。

料金メリットもありますが、こちらはおそらくコストよりも処理スピードの恩恵のほうが大きい可能性があります。 GameWithのケースですと、一部処理でバックエンドサーバーの処理が詰まる現象が発生しており、この画像取得処理が原因でした。 CDN経由での取得からS3からの直接取得に変更した結果上記問題が解決しました。

GCP

Bigquery

GameWithではデータの分析基盤としてBigqueryを利用しています。 ストレージの料金は日に日に増加していきますので可能な限りコスト削減をしたいです。

昨年の話になりますが、GCPから新しいストレージの課金モデルが登場しています。 https://cloud.google.com/bigquery/docs/information-schema-table-storage?hl=ja

保存しているデータの構造などでどのくらいコストが削減できるか変わりますが、簡単にシミュレート可能です。 詳しい手順などは公式ドキュメントに詳しく記載がありますのでこちらを参考にしていただければと思います。 https://cloud.google.com/blog/ja/products/data-analytics/new-bigquery-billing-model-helps-reduce-physical-storage-costs

弊社の場合GAのイベントデータ量が一番多いのですが、課金モデルの切り替えをするだけで7割ほどのコストカットができました。

おわりに

今回は比較的簡単にできる対応をいくつか紹介させていただきました。 同じような課題を抱えている方々の参考になれば幸いです。

こんなGameWithではエンジニアを絶賛募集中です! サーバーエンジニアやフロントエンジニアの方、AIに興味がある方や、Unityでの開発に興味がある方もお気軽にカジュアル面談をお申し込みください!

github.com