このページの本文へ

事業会社の目線から具体的なコスト削減事例を披露したSODA 

サービスの急成長でAWSコストも3倍に 覚悟と根性でコストは減ったのか?

2024年02月05日 10時00分更新

文● 大谷イビサ 編集●ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 2024年2月1日に開催された「第1回 AWSコスト削減天下一武道会」。事業会社の立場でコスト削減事例を披露したのはフリマアプリ「SNKRDUNK(スニーカーダンク)」を運営するSODA CTOの林 雅也さんだ。「支配的なコスト」の削減を意識した具体策はもちろん、スタートアップで後回しになりがちなコスト削減を進めるために必要な覚悟について説明した。

SODA CTOの林 雅也さん

サービスの急成長でAWSのコストも3倍以上に

 コスト削減をサービスとして展開するDELTA 丹哲郎CTOのセッションに続き(関連記事:AWSのコスト削減は全員で楽しくやろう DELTAが事例とノウハウを披露)、「節約は技術!削減は芸術!何より必要なものは覚悟!」というタイトルで、コスト削減事例を披露したのはSODA CTOの林雅也さん。冒頭、「ボトルネックから潰す」「『覚悟』を持つ」という2つのキーワードを掲げた林さんは、自己紹介・会社紹介からセッションをスタートする。

 林さんの所属するSODAは「SNKRDUNK(スニーカーダンク、通称スニダン)」というスニーカーやトレカ向けのフリマアプリを展開している。ユニークな特徴としては、すべての取引をSODAがいったん中継し、出品される商品をすべて真贋鑑定するところ。偽物や状態の異なる出品がないため、安心して取引できるため、利用者の評価も高い。

 サービスは急成長を遂げており、直近3年でMAU(Monthly Active User)は100万から500万人に拡大。また、通常時には1000~2000程度のリクエスト数も、人気のスニーカーが出品されるときは1~2万のスパイクになるという。プロダクトのデプロイ頻度も月に60~90程度と高く、開発は非常にアグレッシブ。「イケイケどんどんで開発を進めている会社なので、コスト削減のような守りの施策は意思決定しにくかった」と林さんは振り返る。

 事業成長を進める同社だったが、2020年2月に4万3000ドルだった月額利用料が、コスト削減プロジェクトを走らせる直前の2022年8月には14万6000ドルにまで跳ね上がっていた。実に3倍以上も跳ね上がってしまったこのAWSのコストを削減するのが、今回紹介されたプロジェクトの概要だ。

急成長のサービスで跳ね上がったAWSのコスト

支配的コストから目をそらさない そして覚悟

 コスト削減の方針として、お手本にしたのはパフォーマンスチューニングの鉄則だ。林さんはいわゆるISUCON本としておなじみの「Webパフォーマンスチューニング ISUCONから学ぶ高速化の実践」(技術評論社)から、「ボトルネックから潰す」「ボトルネックを放置したら効果はゼロ」の2つの鉄則を引用する。

 前者は「1ヶ所でも大きなボトルネックが存在していると、システム全体の性能が大きく上がることがない」、後者は「存在しているボトルネックを解消せずに、他の事例で効果的だったと言われる手段を積み重ねても効果は薄い」という内容だ。これはコスト削減も同じ話ではないかと、林さんは読み取った。すなわり「支配的なコストから減らす」、そして「支配的な部分を放置したら効果はゼロ」ということだ。ただ、パフォーマンスの議論と異なり、完全にゼロというわけではないというのも、コスト削減ならではのポイントだという。

支配的なコストから減らす

 こうしたポリシーを明らかにしつつ、林さんは40%減を謳うコスト削減効果を先に披露した。14万6000ドルだったコストは、半年間のプロジェクトを動かした結果、6万ドル減の8万7000ドルになった。そして削減した6万ドルのうち、4万ドルはたった1つの施策で実現したもの。「丹さんが話していたElephant in the room(部屋の中の象)に目を向けよということは、まさにこのことではないかと解釈しました」と林さんは指摘する。

 もう1つコスト削減に重要なのは、タイトルにもある「覚悟」だ。投資家の援助を受けるSODAのようなスタートアップにとっては、事業の成長はなにより高い優先事項。コスト削減の重要さは理解しつつも、新機能の開発が求められた結果、コスト削減は後回しになっていたという。「もちろんロジックで話すこともできるけど、やはりコスト削減には覚悟が必要」と林さんは指摘。丹さんのセッションにあった「早く始めた方が時間積分で効果も高い」という話についても、「耳が痛い。おっしゃる通りだと思う」とコメントした。

NAT GatewayからVPC Endpointへの移行で大きな削減幅

 具体的には、前述した通り、削減幅の大きなものを抽出する作業からスタートした。いわば「Elephant in the roomを探す作業」だ。SODAの場合、削減幅が大きいと見込まれたのが、VPC Endpointの導入だ。

コスト削減できる部分をリストアップ

 SNKRDUNKはオーソドックスなAWSのシステム構成となっており、アプリケーションはECS上のコンテナで動作し、データストレージにAurora、Elasticache、S3などを用いている。コスト削減のポイントとなるのは、VPC内にあるEC2インスタンスからECRやS3などのサービスにアクセスする際に使っているNAT Gatewayを、VPC Endpointに切り替えること。NAT Gatewayは起動料金に加え、データのイン/アウトに転送料がかかるため、コストはかさみがち。しかし、S3へのアクセスの場合は、NAT Gatewayではなく、VPC Endpointを経由すれば、追加料金がかからない。

NAT GatewayをVPC Endpointへ

 SODAの場合、VPC内のECSからECR内のコンテナイメージやS3のオブジェクトを取得するのにNAT Gatewayを経由していた。SNKRDUNKの場合、1つのコンテナイメージは数百MBとそれほど大きくないのだが、ECSタスクの起動数は35~150個に上っていた。前述した通り、デプロイ回数が月に最大100回(1日5回)とかなり多いため、コンテナイメージのロードが多く、NAT Gatewayでのデータ転送量の増加につながっていた。これをVPC Endpointのプライベートリンク経由で行なうことで、5万ドルのコスト削減につながると見込んだ。

 結果的に削減されたのは4万ドル。1万ドルは別途でECR Publicからプルするサイドカーコンテナの分。こちらはECR pull through cacheという機能を用いて、ECR PublicのイメージをプライベートのECR上にキャッシュできるようにした。これですべての通信はVPC Endpoint経由となり、5万2000ドルの削減につながった。

NAT Gateway分のコストが大幅に削減された

 また、「中くらいの象」としてWAFのログの保存先をCloudwatch Logsから安価なS3に変更した。これにより可視化や分析は難しくなるが、業務として分析がなかったので、いったんはコスト削減を優先した。ここでは2700ドルの削減となった。

コストは削減しないと、削減されない

 その他やったのは、使っていない環境やElastic IPなど不要なリソースの削除。また、インテル系よりもコスト効率が高いと言われるARM系のGravitonインスタンスを、動作が確認できたデータストア系で採用した。さらに余分なECSやAuroraのリードレプリカが起動しないよう、Step-scalingのしきい値やScheduled-scalingの設定を調整したり、Target-tracking scalingの検証なども行なった。これらすべてで最終的に6万ドルの削減となった。

 加えて、おまけとして「コスト削減の取り組みじゃなかったけど、やってよかったこと」として挙げられたのが、CDNサービスであるCloudFrontのRequest-Collapsingの採用だ。こちらはキャッシュミス時のオリジンサーバーへのリクエストを最低回数に折りたたんでくれる機能で、SNKRDUNKのスパイク負荷の対策として導入したもの。具体的にはCloudFrontとECSの間にロードバランサー(ALB)を挟み、TTL1秒というキャッシュポリシーを設定した。

 TTL1秒にもかかわらず、キャッシュヒット率は12%と意外と高く、ECSやAuroraへのリクエスト数も大きく減少したという。キャッシュヒットが高く、データ転送料が減れば、当然コストも落ちるわけで、ここでも2100ドルのコスト削減が実現したという。パフォーマンス強化がメインだったが、コスト削減にもつながったという好例だ。

CloudFrontのリクエスト折りたたみでリクエスト数は大幅に削減された

 最後、林氏は再度「ボトルネックから潰す」「『覚悟』を持つ」という2つのキーワードを掲出した。前者に関して林さんは、「支配的なコストから目をそらしてしまうと、効果はゼロになってしまう。支配的なコストから削減できるよう、まずは作戦を立てたいところ」とコメント。また、覚悟については、「コスト削減はあと回しになりがちだが、当たり前だが、削減しないと、削減されない。だから、覚悟を持って進めるのが重要」とまとめた。

コスト削減を成功させるためにも「いい組織」を作ることが重要

 丹さんと林さんのセッションが終わった段階で、企画・主催の西谷圭介さんがモデレーターとなったパネルディスカッションとなった。西谷さんは2人の話について「こういうイベントを企画してなんですけど、非常に耳が痛いですね(笑)」と感想を語ると、林さんも「丹さんの話を聞いて、僕も耳が痛いなあと(笑)」と応じた。

3人によるパネルディスカッション

 まずはサービスとしてコスト削減代行を手がけるDELTAのクライアントへの関わり方。丹さんは「とにかくめちゃくちゃヒアリングする。ただ、さすがに170社もやってると、逆に(コスト削減のポイントも)なんとなく想像もついてくる」とコメント。また、支配的なコストの探し方については「Cost Explorerを見て、愚直に探していく」(林さん)のが王道だが、「(ビリング見ながら)『なんか変だな』という勘や匂いもある」(丹さん)という。普段、意識しているからこそ、異臭に気づくというわけだ。

 続いて、丹さんの「全員で」に対応する組織やメンバーの巻き込み方。「弊社はSREもエンジニアも事業成長が成長が大事ということは理解しているので、コスト削減の取り組みを理解しないメンバーはいなかった」と林さん。逆に言うと、CTOやVPoEが旗を振らないと、コスト削減プロジェクトを進めるのは難しい。丹さん曰く、過去クライアント案件では実際にコスト削減につながらなかったプロジェクトもあったという。

 また、コスト削減はいつ始めるのか? 丹さんの話の通り、もちろん早く始めた方がよいのだが、林さんの目線からすると「高すぎない?という声が社内で上がってくる時点」が始めどころで、SODAの場合は気づいたのは社内のAWS有資格者だった。他社の例では売上の一定割合を超えた時点で見直しに入るという事業会社もあるという。一方、サービス事業者の丹さんからすると「印象としては月額100万円を超えてくると、うちにお声がかかる会社が多い」とのこと。AzureやGoogle Cloudのコスト削減案件もあるが、ノウハウが全然出てこないところが課題だという。

 最後、コスト削減の取り組み全般についてコメントを求められた丹さんは「根性を連呼して、つらく苦しいものみたいな印象を与えてしまったかもしれないが、一言で言えば楽しい仕事」と語る。林さんは「コスト削減には覚悟も大事だけど、そもそも開発組織内でコミュニケーションをとるような基盤が大事。だから、いい組織を作ることの方が重要だと思っています」という金言でパネルをまとめた。

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード