こんちには!
AWS の支払いで「想定外の過剰コストになってしまった」という相談が近頃は増えてきました。
「サーバーレスだから、使った分だけ支払えばいいんでしょ?」とついつい油断していると、とんでもない請求額が来ることがあります。
今日は、既存でアプリケーションを持っていてかつ、サーバーレス導入していない企業様からの相談が多い「コスト削減したい」について、わたしたちのよくある事例を交え思考方法をご紹介したいと思います。
わたしたちは下記のようにコスト削減を実現します。
高いと感じた時に、まず真っ先にやることは下記です。
請求額で異常に大きいサービスはあるか、認識していないサービスの請求はあるか。まずは請求額をダッシュボードで俯瞰しましょう。
請求額をサービス単位で見れるなんて素敵ですね。
次はソフトウェア側の実装ミスを見ます。CloudWatch のログを見てみましょう。
正直・・・、このログたちを一行ずつクリックするのは骨が折れます。特に何かしらのプロビジョニングツール(例えば Serverless Framework)で構築している場合は、見なくても良いログもあって結構辛いです。
そういうケースでの Cloud Watch の利用テクニックとして、わたしたちは CloudWatch が Expetion を取得したら、 Slack などへエラー通知するようにしています。(飛びまくっていればまずログを見て対処方法を練る)
どこでコストがかかっているのか、どこを削りたいのか、1つ1つ紐解いていくことが重要です。
特に多いのは、「CloudFront でキャッシュのキャッシュを十分に使えていない」です。
例えば、SNS サイトでユーザー画像を取得する処理を考えています。
もしユーザー画像がない場合、CloudFront へ2度リクエストしないといけませんね。加えて、余分なネットワーク通信量がかかりますし、レスポンスを待機するのでUXが良くないです。
たとえばこれに、LambdaEdge を使ったらどうなるでしょう?
フロントエンドの実装もスッキリし、微小ですがコストカットになります。
まず、AWS には下記の3つの購入プランが存在します。用途に合わせて使い分けたいところです。例えば、事業計画上で通年通してコスト意識する必要がある場合は、事前に金額をコミットするリザーブインスタンスを推奨です。(スタートアップでは正直そこまで厳格にコスト計画出しているケースが稀なので、中規模以上の開発向けかもですね)
サーバーレス構成は従量課金のため、使った分だけ料金が発生する仕組みが大半です。(Savings Plans だと1 年または 3 年の期間に特定の量の処理能力 (USD /時間で測定) を使用する契約を結びます)
例えば、LambdaとAppSyncの料金表を紹介します。
スペックに応じて料金が変動するのが重要なポイントです。
特に Lambda は、どんな処理を担当させるのかできちんと設計しないと大きなレイテンシーで UX 不良を起こし、顧客が離れるなどのビジネス損失を発生させます。
コストカットも重要ですが、ビジネスに適したアーキテクチャーを選択できることが重要というのを忘れてはいけません。
まず、根本的にコスト削減は本当にいま必要でしょうか。
コスト削減を行うのもまたコストです、特にスタートアップは資金繰りの関係や、顧客がついていない関係上、一刻も早く独自性・競合優位性を作らなければいけません。
スピード感を優先するなら、多少のコストを許容するのも1つです。
わたしたちが運営するエンジニアの次世代ソーシャルメディアSHIMBAは、リリース初期の月間コストは5,000円程度でした。
すぐにできそうなコスト削減であればもちろんやったほうがお得ですが、時間のかかるコスト削減は逆に痛手になるので注意しましょう。
サーバーレス開発については、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎