クラウドを活用してサービスが成長すれば、クラウドインフラのコストも増え続けることになる。2024年2月に開催された「第1回 AWSコスト削減 天下一武道会」では、AWSコスト削減をテーマに、エンジニアらが登壇。AWSのコスト削減にどう取り組んでいるのか、コスト削減プロジェクトの進め方を解説した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
オンプレミス環境に比べ、柔軟で迅速に導入でき、かつコスト面でも有利――こうした理由から、この数年、クラウドファースト、クラウドシフトが広がっている。
だが、順調にサービスが成長し、支える基盤が拡大するにつれ、「あれ、思ったよりもずいぶんコストがかさんでない?」と疑問を抱く場面もあるのではないだろうか。
2024年2月に開催されたAmazon Web Services(AWS)のコスト削減をテーマとするイベント「第1回 AWSコスト削減 天下一武道会」には、3000人を超える申し込みがあった。同イベントを企画した西谷圭介(@Keisuke69)氏は「クラウドのコスト削減は最近とてもホットなテーマですし、終わりのないテーマでもあると思います」と述べ、登壇者らのアプローチを参考にして、コスト削減のヒントを手にしてほしいと呼び掛けた。
イベントのトップバッターには、成果報酬型で、AWSを中心としたクラウドコスト削減の代行サービスを展開しているDELTAの丹 哲郎(@jugglertansan)氏が登壇した。
DELTAは170社を超える企業を対象に、クラウドコスト削減のサービスを提供してきた。対象業種は幅広く、メディアやマーケティング、ECなど特定の業種に偏ることなく対応している。成果報酬制を採用していることもあり、「できることは何でもやる」という方針の下で支援に取り組んでおり、おおむね3割のコストを削減、最大で93%の削減率を実現し、1年間で削減したコストはのべ1億5666万6633円に上るそうだ。
その丹氏によると、コスト削減は「お祭り」であり「総力戦」だという。一般に、特にものづくりの現場などでのコスト削減は、“眉間にシワを寄せ、鉛筆をなめなめしながら取り組むもの”というイメージが強い。だが「コスト削減はお祭りムードで、総力戦で楽しんでやってもらえばいい」という。
その上で丹氏は、具体的なアプローチを紹介した。
実は、AWSのコスト削減には王道がある。AWSが公開している「Well-Architected Tool」の6つの柱の一つである「コスト最適化」に示されたベストプラクティスを実践する方法だ。
「AWS Cost Explorer」や「Amazon CloudWatch」で「使用」のメトリクスを参照し、料金モデルを分析することに始まり「コミットメント割引分析を受ける」「ワークロードの伸縮性を分析する」「コストに基づいてリージョンを選択する」といった方法が挙げられている。
より具体的には、ワークロードの性質を踏まえ、Reserved Instance(RI)の利用を検討したり、夜間、休日に縮退させたり、学習用のコンテナなら海外のリージョンに置くようにするといった具合だ。
丹氏らも、AWSコスト削減のプロとして、これらのベストプラクティスは当然実践している。ポイントは、「分析した結果、ボトルネックが見えたとして、そこを誰が解決するのかというところです」という。
一般に、AWSの縮退設定やリージョンごとの設置作業は、「インフラエンジニア」の仕事だと思われている。ボトルネックが発生しているならばRIを購入して終わり、で済ませられがちだ。しかし丹氏は、FinOpsのベストプラクティスに「全員がコストに関して責任を負いましょう」と書かれていることも踏まえ、「もっと全員でできることがあるんじゃないかと思っています」と提言した。
全員で取り組むべき理由はもちろんある。ビジネス的な利点だ。
「月額コストが早く、安くなればなるだけ、利益は増えていきます。仮に原価率が30%だったとして、月に100万円コストを削減できれば、年間で3600万円の売り上げを創出したのとイコールであり、会社の経営にも大きく寄与します」(丹氏)
根本的にコストを安くできれば、サービスの拡張に伴って増えていくはずのクラウドコスト増加率の傾きを緩やかにできる。「実際には時間積分がコスト削減効果になります」とし、より早いタイミングで、また根本的に安くしていくことが大切だとした。
そして、全員が参加して王道以外の「ケモノ道」を見つけ、単なる最適化ではなく「削減する」という意思で取り組むことを推奨した。その際には、CTO(最高技術責任者)やVPoE(技術系マネジメント責任者)といった高いレイヤーの技術責任者が「コスト削減は自分のタスクだ」と認識し、旗振り役になることが重要だという。
そして、コスト削減につながる“ケモノ道”を見つける方法として挙げたのが、DELTA社内や、顧客案件でも実践している「モブコスト分析」だ。集団で議論しながら進めていくモブプログラミングと同様に、請求書やレポート画面を眺めながら全員で、どこが安くできそうかをワイワイ話し合っていく。
ポイントは、参加者全員がそれぞれの視点で「こうすればいいんじゃないか」と考えることだ。「通信量が多い」という事象に対し、インフラエンジニアからの指摘はもちろんだが、フロントエンドエンジニアならば「画像読み込み処理を少し遅らせることで読み込みが減り、コストが減るかもしれない」といったアイデアが生まれたり、バックエンドエンジニアは「最適化できていない処理があったけれど、そのせいでこれほどコストがかかっていたのか」と気付きを得られたりするかもしれないという。
「皆さんが持っている知を持ち寄り、それぞれのドメインから見えることをコストにひも付けながら全員が考えることがとても大切です」
2つ目のポイントは、ドメインを意識することだ。これには事業ドメイン的な、つまりサービスそのものの特性という意味でのドメインに加え、それぞれの職責、職域という意味も含まれる。カスタマーサクセスやバックエンドエンジニアなど、それぞれの目でアーキテクチャやコスト削減を見ていくことが大切だとした。
3つ目のポイントは、最も大きな問題、いわゆる「Elephant in the room」にきちんと取り組むことだ。「CloudWatchを見直そう」「ここの通信を減らそう」といった個々の問題を解消するこはもちろんだが、コスト全体に大きな影響を及ぼす大きな問題から「しょうがない」と目をそらすのではなく、逃げずに向き合うべきであり、最も大切なポイントだという。
DELTAでは実際、こうしたアプローチを取ることで、顧客のコスト削減を実現してきた。
アパレルの売買プラットフォームを運営するRECLOの場合、バックアップ戦略の見直しという王道のアプローチに加え、売買する商品の画像などのアセットをアップロードするアルゴリズムを改善し、無駄な通信をなくすことで月額約30万円ほどのコストを削減した。「これは、ドメインとアーキテクチャをつないだからこそ削減できた例だと思っています」とし、自社プロダクトでどこをチューニングすればトラフィックや負荷の軽減につながるのか、ドメインとアーキテクチャをつなげて考えていくべきだとした。
B2B2C(Business to Business to Consumer)で「ecforce」というカートシステムのサービスを展開しているSUPER STUDIOでは、顧客の拡大に伴ってトラフィックが増加し、それがそのまま費用に跳ね返っていた。そこで、半年ほどかけ、シングルテナントで構築していた構成をマルチテナント環境に移行することで、1ショップ当たり80%のコスト削減を実現した。「コストを減らそうと一度腹をくくったら、ある程度工数をかけてでも大きいところに手を付け、やり切ることが非常に大切だと思います」(丹氏)
さらに、Pixivでは、女性向け漫画アプリの「Palcy」を対象に、リクエストの中で使われていないデータを地道に「枝刈り」することで、当初1MBを超えていたデータを400KB程度まで減らすことにより、コストを削減した。AndroidとiOSと2つのプラットフォームがあり、部署も分かれている中でも、CTOや経営層に近い人が音頭を取り、全員が考えることによってコスト削減を実現した例だという。
丹氏は最後に、「どうせ安くするのなら、小手先ではなく根本的に安くした方が事業インパクトは大きくなります」と述べ、あらためて「全員が考える」「ドメインとアーキテクチャをつなげる」「Elephant in the roomと向き合う」という3つのポイントを示した。そして、「やはり、数字が出るのは楽しいですし、報われます」と自身の経験を踏まえた上で、「みなさんの会社でもお祭りムードで、総力戦で、モブコスト分析やコスト削減祭りをぜひ開催してみてください」と呼び掛け、セッションを終えた。
続けて、スニーカーなど特定の商品に特化したC2C(Consumer to Consumer)のフリマアプリサービス「スニーカーダンク」(スニダン)を運営するSODAの林 雅也(@rinchsan)氏が、「節約は技術!削減は芸術!何より必要なものは覚悟!」と題して同社のクラウドコスト削減の取り組みを紹介し、「ボトルネックからつぶす」「覚悟を持つ」という2つのキーワードが重要だと述べた。
スニダンは、サービス開始からの数年間で急成長を遂げている。2021年の100万MAU(アクティブユーザー数)から、最近では500万MAUを超える規模となっており、比例して、ユーザーからのAPIのリクエスト数もどんどん伸びてきた。サービスの特性上、人気のスニーカーなどが発売されたタイミングで一気に負荷がスパイクすることもある。平常時の1000〜2000リクエスト/秒(rps)程度から、一気に1万〜2万rpsへと、桁が1つ増えるレベルの負荷集中により、サービスに影響を与えたこともあるほどだ。
一方、SODAでは、スニダンを非常にアグレッシブに開発している。月に60〜90回、1日当たりに直すと3〜5回の頻度でサービスをデプロイしており、「かなりイケイケどんどんにプロダクトの機能開発をしまくる会社です」(林氏)という。
サービス開始以降、AWSの利用料もどんどん上昇していた。林氏が紹介したコスト削減プロジェクトは2022年ごろに実施したものだが、2020年2月時点で4万3000ドルだった月額利用料はどんどん膨らみ、2020年8月時点で14万6000ドルに達していたという。
SODAはどのように改善していったのか。林氏はまず、「ボトルネックからつぶす」というパフォーマンスチューニングの鉄則が、そのままコスト削減の方針にもつながるとした。
Webアプリケーションのボトルネックを見つけ出して高速化を競い合う「ISUCON」(いい感じにスピードアップコンテスト)そのものでも、またそのベストプラクティスをまとめた「ISUCON本」でも言われていることだが、1つでも大きなボトルネックを放置したら、他のどこかを改善しても大きな改善は見込めない。他社事例やインターネット上の情報をまねしてみても、自社環境に存在するボトルネックにアプローチできないなら効果は薄い。
林氏は「コスト削減にも同じことが言える。支配的なコスト、一番大きなコストから減らすこと、そして支配的な部分を放置してしまえば効果はほぼゼロになる」と説明。これは、丹氏が前のセッションで言及した「Elephant in the roomに目を向ける」ということとまさに同じだとした。
もう1つ、重要なポイントとして林氏が挙げたのが「覚悟」だ。
多くのスタートアップ企業にとって最も大切なのは「事業成長」だ。コスト削減も確かに重要だが、投資家の期待もある中では、コストには目をつむって、いけいけどんどんで機能を開発し、成長させていく方に比重が置かれがちとなる。「SODAもまさにそうで、コスト削減は後回しになりがちでした。そうした中でコスト削減プロジェクトを進めていくには、やはり覚悟がとても重要じゃないかと考えています」(林氏)
さらに、丹氏の「早めにコストを削減できれば、時間積分がそのまま成果になる」という言葉を引き合いにし、コスト削減を実践するためにも覚悟を持つことが重要だとした。
こうした方針の下、SODAではまずボトルネックを探した上で大きなものから手を付け、コストを削減。最終的には半年間かけて実施したコスト削減プロジェクトにより、月額当たり約6万ドル分の削減を実現した。
林氏が最初に取り組んだのは、ボトルネックの特定だ。「Google Sheetsに、削減できそうなポイントとそれぞれの予想削減額を並べ、一番大きなもの、支配的なものから優先していく方針で進めました」(林氏)
こうして検討した結果、最も大きな削減金額が見込まれたのが「VPC Endpointの導入」だった。
スニーカーダンクのシステムは、林氏いわく「めちゃくちゃオーソドックスな構成」だ。「Amazon Elastic Container Service(Amazon ECS)」でコンテナアプリケーションが動いており、「Amazon Aurora」「Amazon ElastiCache」「Amazon Simple Storage Service(Amazon S3)」といったマネージドサービスをデータストアとして使用している。
この構成で、Amazon ECSから「Amazon Virtual Private Cloud(Amazon VPC)」のNAT Gateway経由で、「Amazon Elastic Container Registry」(Amazon ECR)に置いてある数百MB程度のコンテナのイメージをプルしたり、Amazon S3上のオブジェクトを取得したりする際の通信量が非常に多く、多額の料金がかかっていた。
スケールアウトした際は約450個のコンテナまで増える規模となっており、しかも1日に複数回デプロイするため、大量のプルが走っていた状態だった。
そこで解決策として、Amazon S3とAmazon ECRに対してVPC Endpointを作成した。プライベート接続経由にしたことで、通信量を一気に削減することに成功し、約4万ドルを削減した。最初の改善では見落としていたサイドカーコンテナのイメージについて、Amazon ECRのプルスルーキャッシュルール機能を導入してキャッシュすることにより、さらに1万2000ドルを削減。一連の施策で5万2000ドルの削減に成功した。
だが、取り組みはこれで終わりではない。「次のボトルネック、中くらいの象を探しました」(林氏)
浮上したのは、WAF(Web Application Firewall)のログの配信先だった。それまで「Amazon CloudWatch Logs」に保存していたWAFのログを、より安価なAmazon S3に移行することにした。
ただ、「CloudWatch LogsからAmazon S3に移行すると可視化、分析は難しくなるため、そこには注意すべきでしょう」(林氏)。SODAの場合、そこまで深く分析を求める業務は特になかったため、移行を推進。その結果、追加で月額2700ドルを削減した。
ここまでの取り組みで5万4700ドルの削減に成功したSODAだったが、林氏らはそこで満足せずに、さらなるボトルネック探しの旅を続けたそうだ。定番の「不要リソースの排除」に始まり、「Gravitonインスタンスの利用」「Auto-Scaling Policyの調整、見直し」といった策を打つことで、最終的には6万ドルを削減し、コスト削減プロジェクトは無事に終了した。
もう一つ、決してコスト削減を目的としていたわけではなく、ユーザーエクスペリエンス(UX)向上のために実施した施策が、同時にコスト削減効果につながった取り組みもあったという。
前述の通りスニダンでは、アクセスが集中した際に負荷が2万rps程度まで急増し、サーバがダウンしたり、サービスが使用できなくなったりする事象が発生していた。この問題を解決するため、ロードバランサーの手前に「Amazon CloudFront」を導入し、Request-Collapsing(リクエスト折りたたみ)機能を活用した。TTL(Time To Live)を1秒に設定することでキャッシュヒット率をまずまずの値に高め、DatadogのAPM(アプリケーションパフォーマンス監視)機能から見たリクエスト数を半分程度にまで大きく削減し、Amazon ECSやAmazon Auroraへの負荷も軽減することができた。
ユーザー体験を改善するための施策だったが、DataTransferとCloudFrontのコストを合わせて2100ドル削減できたという。「コスト削減がメインの目的ではありませんでしたが、ユーザー体験を改善しつつ、コスト削減にもつながった。とても面白い例だと思います」(林氏)
最後に林氏は、あらためて「ボトルネックからつぶす」「覚悟を持つ」という2点が重要であると述べ、「コスト削減は後回しになりがちです。ただ、当たり前ですが、取り組まなければコスト削減はできません。覚悟を持って進めることが重要だと考えています」と強調し、講演を終えた。
丹氏、林氏の講演に続けて行われたパネルディスカッションでは、「根性」をはじめとする“パワーワード”が飛び交った。
「2人の講演に共通していたのが『ボトルネックをつぶす』ことでした。では、具体的にどのようにボトルネックを見つけていくべきでしょう?」という西谷氏の問いに対し、林氏は「Cost Explorerなどの数字を愚直に見て、一番ボトルネックになっていそうなところを根性で探していくところがスタート地点だと思います」と述べた。
多数の企業を見てきた経験のある丹氏は、根性に加え「ちょっと変だな」というポイントを嗅ぎ分ける嗅覚も重要だとした。「『こうしたサービスなら、普通はこちらの料金が高いはず。なのに、あっちが高いのはちょっと変だ』と気になる部分から見ていくことはけっこうあります」
そうなると、その匂いを嗅ぎ分ける方法も気になるところだ。林氏は「他社事例を勉強し、どのような状況がよく起こるのか、一般的な知識を得るのはとても重要だと思います」とアドバイスした。
もちろん、クラウドシステムの構成やインフラに関する基礎力、ソフトウェア開発に関する知識も求められる。だが「何か1つのうまいやり方があるわけではなく、それぞれのプラクティス、それぞれのケモノ道があるのだと思います。ですので、何らかのスキルセットというよりも、何かに興味を持って調べる『調査力』のようなソフトスキル、それに根性が求められると感じます」と丹氏は述べた。
「コスト削減プロジェクトは全員で取り組むべき」という丹氏の言葉はもっともだが、ただでさえ他のタスクも抱え、忙しいソフトウェアエンジニアなどはどう巻き込んでいけばよいのだろうか。「巻き込むに当たって『面倒くさいな』といった反応はありませんでしたか?」という西谷氏の問いに、林氏は「SRE(Site Reliability Engineer)もソフトウェアエンジニアもみな、プロダクトを伸ばし、事業を成長させることが重要だという前提の下で全員が動いているので、コスト削減、効率化の取り組みに協力しない、なんていうことは全然ありませんでした」と、組織のカルチャーが良い方向に働いたと振り返った。
丹氏によると、残念ながらうまく会社全体を巻き込めていない場合、進みも鈍く、結果、プロジェクト自体が不調に終わることもあるという。「やはり、CTOやVPoEが旗を振っている組織の場合、うまくいっています」と、誰かが音頭を取り、前向きにコスト削減に取り組むことも重要だとした。
次の「コスト削減に本気で取り組み始めるには、どのようなタイミングがよいか」という問いに対し、丹氏は、「月額100万円を超えるくらいから『ちょっと変だな』となり始め、依頼を頂く印象です」とした。林氏は、「システム費用は売り上げのうち何%にとどめる」というポリシーを定めていた前職の例を出し、閾値(しきいち)を見ながら継続的にコスト削減に取り組む企業もあるとした。
最後に丹氏は、根性がない人や組織には外注という選択肢もあるとした上で、「根性という言葉ばかりあげると、つらく苦しいものという印象を与えてしまったかもしれませんが、基本的に楽しい仕事です。面倒くさがらずに楽しんでやりましょう」と呼び掛けた。
また林氏は、コスト削減にとどまらず何に関しても、しっかりコミュニケーションを取れる良い開発組織、良いエンジニア組織がベースにあることが大切であり、「ぜひ良い組織を作りましょう」と呼び掛け、パネルディスカッションを終えた。
Copyright © ITmedia, Inc. All Rights Reserved.