AWSのコスト見積もりのポイント
※当記事は2023年8月に執筆した記事で、情報は当時のものになります。
はじめに
自分は2020年3月にAWS Certified Solutions Architect – Associateの認定資格を取得しました(2023年3月に再取得したので2026年3月まで有効)。
普段はバックエンド開発メインの仕事が多いのですが、今回ざっくりとしたAWSのコスト見積もりが必要となったのでそのときにどういうことを考えたかを書いてみます。
なお、今回行ったコスト見積もりは新規構築ではなく、既存システムの大きな構成変更に伴う変更前後のコスト見積もりです。その場合に気をつけたことも記載します。
コスト見積もりをする前に押さえておくこと
コスト見積もりをする前に押さえておくことがいくつかあります。
過度に精度を求めない
これはAWSに限らず見積もり全般に言えるのですが、「正確な見積もり」というものは存在しません。ユーザーストーリーマッピングという本に次のように書かれています。
秘訣がありそうにみえるのに、実際にはおそらくないことのひとつが「見積もりの正しさを見積もる」ことだ。ウェブに行って「賢いバカ」のような矛盾する言葉のリストを探してみよう。きっと正確な見積もり(accurate estimate)という言葉が含まれているはずだ。開発にどれくらいかかるかを正確に知ることができるなら、決して見積もりとは言わないはずではないだろうか。
正確な見積もりはできません。ではどのようにAWSのコスト見積もりをすればいいでしょうか。そのためには、見積もりの目的を考える必要があります。
コスト見積もりが必要な理由は「予算計画」のためです。そして計画段階で必要なのは「規模感」です。月10万かかるか、月100万かかるか「最大これくらいかかりそう」というのをそれなりの根拠で早く求めることが必要です。
一方で1000円未満の細かい見積もりに時間をかけるのは意味がありません。なぜなら見積もりには人件費がかかるからです。時給1200円の人が1時間見積もりをすると、それだけで1200円の損失です。AWSでは「使い始めてから料金を改善する」ことが基本です。見積もりよりもモニタリング、継続的な改善に時間を使いましょう。
お金がかかる場所を把握する
AWSは使っただけお金を払えばいいサービスですが、いろんな場所で少しずつお金がかかるようになっています。
コンピューティングサービス(Amazon EC2、Amazon ECS、AWS Lambdaなど)は主に「vCPU × メモリ × 稼働時間」の組み合わせでお金がかかるようになっています。
ストレージサービス(Amazon S3、Amazon EBS、Amazon ECRなど)は主にディスク容量にお金がかかりますが、ストレージのタイプや、性能(プロビジョンドIOPS)にお金がかかることもあります。
マネージドサービス(Amazon API Gatewayなど)は主に「使用回数」にお金がかかります。
ネットワーク(Amazon VPC、Amazon CloudFront)は主に「インターネットに出ていくトラフィック」にお金がかかります。AWSに入るトラフィックについては無料のものが多いですが、アベイラビリティゾーンやリージョンを跨がる場合やサービスによっても異なるため、きちんと調べた方がいいでしょう。
それ以外のものはあまり多くないので、個別に覚えるのがいいと思います。
- Amazon Route 53のホストゾーン: 月額固定
- Amazon Lightsail: コンピューティング、ストレージ、ネットワーク込みの料金
実際は、サービスによっては複数の料金体系の組み合わせを採用しているものもあります。例えばAmazon S3についてはストレージ容量だけでなく、オペレーション回数にも料金が発生します。この辺りはサービスの性質を理解すれば徐々に理解できるようになります。
コスト見積もりの方法
AWSが公式で提供しているAWS Pricing Calculatorを使うのが一番正確ですが、先に書いたようにAWSではいろんな場所でお金がかかるようになっているため、かなり面倒です。ざっくりとコスト見積もりをする場合は次の3つを押さえておくといいでしょう。
AWSが提供している構成例をベースにする
AWSでは目的別クラウド構成と料金試算例というサイトがあります。例えばAmazon ECS/AWS Fargateを使った標準的な構成例が提供されています。
これにコスト見積もりも載っているので、これを元に例えば「最初はElastiCacheいらないから削ろう」とか「CI/CDも使うからその料金を上乗せしよう」とかカスタマイズするといいでしょう。
ざっくりAWSを利用する
もう一つおすすめはざっくりAWSというサイトです。EC2の場合インスタンスの種類、台数、ストレージ、データ転送量を入れるだけでざっくり計算してくれます。
標準的なサービスだけ利用する
例えばストレージのS3はGlacierというアーカイブ向けのサービスがあり、保存料金は次のようになっています。
- S3: $0.025/GB
- S3 Glacier Instant Retrieval: $0.005/GB
- S3 Glacier Deep Archive: $0.002/GB
しかしPUTリクエストは逆に通常のS3の方が安くなっています。あとGlacierではデータ取り出しにお金がかかるのも要注意です。
- S3: $0.0047 / 1000回
- S3 Glacier Instant Retrieval: $0.02 / 1000回
- S3 Glacier Deep Archive: $0.065 / 1000回
どれが最適かを考え出したらキリがありません。なので標準的なサービスだけ利用します。それ以外のサービスは、標準的な構成例と大きく外れており、標準的なサービスのみ利用すると非常にコストが高い場合だけ選択肢に入れたほうがいいでしょう。
現行構成から変える場合
今回自分が行ったのは、現行構成から大きく変更した場合のコスト見積もりでした。現在の料金をもらってから進めたのですが、この場合重要なのは、新規見積もりと同じく過度に精度を求めないことです。
そのため、現在の料金をベースに、上位のリソースのみ再計算し、それ以外のリソースは全て「変更なし」という前提で進めました。リソースが数百ある大規模なシステムでしたが、それでも2時間でコスト見積もりが完了しました。
おわりに
このコスト見積もりをするにあたり、AWS Certified Solutions Architect – Associateの資格取得時に学んだことが役立ちました。AWSの全体像が分かるのでおすすめの資格です。