2023.09.15
CTO-Booster
月間約70万円のサーバーコスト削減を実現!漫画アプリ『Palcy』AWS最適化 / ピクシブ株式会社
こんにちは、株式会社DELTAの広報です。
今回は、DELTAの「CTO Booster」を導入して、ピクシブ株式会社のマンガアプリ「Palcy」のインフラコストを最適化したプロジェクトをご紹介します。
DELTAは「Palcy」にかかるサーバーコストの削減可能幅の調査から検証、実際の削減作業まですべてを成功報酬でお手伝いさせていただき、結果として「Palcy」運営にかかる月のサーバーコストを約$5,000削減することができました。
本記事では、当プロジェクトを題材のひとつとして2023年8月30日に開催された「pixiv MANGA Night 2」のイベントレポートを通じて振り返ります。
ピクシブ株式会社と「Palcy」について
「Palcy」はピクシブ株式会社が株式会社講談社とともに提供している、女性・少女向けマンガアプリです。iOS/Android両スマホプラットフォームで配信しています。バックエンドはRuby on RailsとAWSを利用しており、(ピクシブ株式会社の他サービスはオンプレ環境で動ているものが多いのですが、)完全にクラウドの環境で構築されています。
当イベントは弊社インフラエンジニアの馬場と、ピクシブ株式会社KNR様の対談形式で行いました。馬場からピクシブ様に行ったコスト最適化の施策についての実施報告を行い、難しかったポイントなどを両者で振り返りました。
ECSにおいて確保するリソースの最適化
馬場:1つめの内容はECSへの施策でした。
PalcyさんではコンテナのマネジメントサービスAmazon ECSをAmazon Fargateを用いてピーク時・ピークアウト時の調整を実施していました。このECSにおいて確保するリソースが過大な部分があって遊んでいるリソースが存在している状態でしたので、そのリソースを適切なサイズに変更するというような施策を提案させていただきました。
当初この施策をやります、とお話した際にはどう思いましたか?
KNR:「けっこう影響がありそうなところからいきなりやるんだな」というのは正直思いました(笑)最初の取り組みはやはり緊張感もありましたので。
馬場:それはそうですね(笑)
KNR:はい。ユーザーさんもパートナー企業もいるプロダクトなので、細心の注意は払って進めていきました。
KNR:緊張感があったとはいえ、PalcyのデプロイフローにおいてはG/Bデプロイを採用しているのでECS自体が全く動かなくなることや、失敗した場合でも切り戻しは可能な状態にできていました。また、まずは開発環境で十分に検証するという進め方をしていただいていたので、やりましょう!と決めることができました。
馬場:弊社の方で検証作業まで代行させていただいたのですが、適用の際にもKNRさんとかなり密に連絡を取りながら進めていきました。1分おきくらいにやり取りをする、くらいの勢いで密に連絡を取り合いながらやっていきました。
馬場:結果としては時間当たり40%強のコスト削減が実現できました。また、単純にコストが下がっただけではなく、将来的にパフォーマンスチューニングした際にもライトサイジングがダイレクトに影響を及ぼすようないい変更を加えられたかな、と思います。
KNR:提案を頂くまでは、我々は環境のリードオンリーの権限をお渡ししただけだったので、かなり色々なところをDELTAさんの方で見ていただいて、提案を頂いたなという感覚があります。
施策に関しては、私がノウハウを持っていない部分ではあったので、そこでこのような成果が出るというのは驚きでした。
不要なログ出力を停止
馬場:2つめの内容はCloudWatch Log出力への施策でした。
ヘルスチェックAPIの起動・終了時に出力されるログが大量に出力されている状態であったものの、そのログをあまり活用しているわけではないのではないかと考え、この出力を抑えることを通じたコスト削減を提案させていただきました。
こちらの施策については、聞いたときにどう思われましたか?
KNR:実装時にこのログに対する意識があまりなかったのと、前任者が設計したものでもあったため、ここが無駄になっていることには気づいておらず「なるほど…!」となりました。
アクセス状況やレスポンス時間はCloudWatchのメトリクスですでに監視できる状態にありました。一方で確かにヘルスチェックのログはあまり見たことがないというのはおっしゃる通りだなと思いましたね。
基本的に出力されたログは開発時には1つ1つみていますが、安定運用に入った段階で例外などの文字列をトリガーとして自動的にSlackに発報する仕組みをとっているため完全に誰も見返すことのない無駄なログになっていました。
馬場:この施策については、開発環境に検証用のAPIを作っていただいて、ソースコードと一緒に提出して動作確認をしていただきました。
あとは、この時間だったらユーザーも少ないから適用できそうですね、などと会話をしながら、適用タイミングも確認しながら進めていきました。
KNR:このタイミングはユーザーが増えるから避けてほしい、月末月初はバッチが動くから避けてほしい、など本番リリースについては密に連絡をとりながら細かく適用タイミングを決めていました。
そして、適用が終わったら連絡をください、と伝えて、連絡を頂いてから確認をする、みたいなことを繰り返していましたね。
馬場:最後の内容は、データ通信量への施策でした。これは、KNRさんから「これはやりたいんだけど、チームにリソースがなくて手がつけられていない」という相談を頂いた施策でした。
KNR:「Palcy」はスマートフォンアプリであるため、モバイルアプリとWebアプリケーションの通信は予め定義した内容のJSONをWebAPIでモバイルに渡します。
ただこのJSONファイルの内容がかなり大きく、最大で1MBを超える場合もありAWSの通信料もユーザーさんの”ギガ”も使ってしまう状況にありました。
しかし、汎用的なモデルを使いまわしていたこともあり、APIから返された内容がすべてモバイル上で使われているわけではなかったんですよね。
馬場:まずは本当に使っていないのか?の調査と、修正方針の提案を行った後に、モデルの最適化作業までを実施させていただきました。結果的に、1MB超のレスポンスの内容を60%程度削減することができました。
KNR:この施策はPalcyチームで元々計画をしていたものでしたが、日々の開発や突発的に発生するバグなどの対応に追われチームとして足並みを揃えてこの対応を行うことが難しいなかでDELTA様に対応していただきました。
対応に当たってiOS、Android、Webの3つを対応していただけたことは大きかったと思います。
また、同時にiOS/Android間でのデザインのズレも発見していただき、こちらも対応していただきました。ここについてはそこまで仕様書をお渡しした記憶がなかったのですが‥‥色々と現状のコードなどを見ながら察して修正いただけて、「え、なんでちゃんと理解しているんだろう?」と思うくらいにはちゃんと代行していただいたなという感想があります(笑)
馬場:我々は代行サービスを謳っている以上、なるだけクライアントの皆様にお手間をおかけしないことを心掛けておりますので、そう言って頂けるの
は嬉しいです。
月のサーバーコストは$5,000(約70万円)削減されました
馬場:繰り返しにはなりますが、DELTAは「Palcy」にかかるサーバーコストの削減可能幅の調査から検証、実際の削減作業まですべてを成功報酬でお手伝いさせていただき、結果として「Palcy」運営にかかる月のサーバーコストを約$5,000を削減することができました。
当初の期待値と比べていかがでしたか?
KNR:正直期待値以上だったかなと思います。無料診断の直後にご提案頂いた施策の中には、蓋を開けてみると実行が難しかったものもありましたが、それも含めても期待値以上だったかなと思います。
「料金の削減額に応じて支払額が決まるのは、大きなメリットだった」
KNR:せっかくなのでプロジェクト全体を振り返ってみようと思うのですが、あえて大変だったポイントを挙げるとすれば、ここらへんでした。
2社間でのGitを使ったコード共有がセキュリティ上から難しく、この点の解決の時間がかかってしまったこと
必要十分なIAM権限の付与のため何度かやりとりを往復しなければ行けなかったこと
は難しかったですね。DELTAさんのせいではないのですが。
馬場:そこに関しては両社で悩みましたね。ルールの範囲内でいい落としどころが見つかったのはよかったです。
KNR:よかった点としては、まずはマルっと任せられた点ですね。ある程度仕様をくみ取って進めて頂けたのが楽でしたね。仕様を伝えるために過大に資料を作って渡す、みたいな負荷が少なかったです。
KNR:もう一点は、 「CTO Booster」が削減成功額からフィーをお支払いする料金体系だった点です。
これは上司を説得しやすかったですね。
「今までこれくらいかかっていました、これだけ下がりました。下がった分からこれくらいお支払いします。」と説明するわけなので、下がった分から払うならば今と年間の支払額は変わらないわけじゃないですか。
別途コンサル料がこれだけかかって~などと説明をするとすごく嫌な顔されると思うんですよね(笑)
この料金体系が明朗だったので、進めやすかったですね。
馬場:僕らのサービスの特徴を話して頂いてありがとうございます(笑)僕自身も、自分の成果に対して対価を頂けるという働き方に惹かれてこのチームに入ったのもあるので、そう言っていただけて嬉しいです。
KNR:あとは雑にAWSの話をたくさんできたのもよかったですね(笑)
今後もサーバレス化や転送量の圧縮などに挑戦したい
KNR:Palcyでは、まだまだアーキテクチャ等で改善をしていきたいと思っていて、このような展望についてもざっくばらんにご相談できたのがよかったですね。ちょうどRDSからDynamoを活用する形にできないかについてはいろいろ相談させていただきましたね。
他にも、またDELTAさんと一緒に取り組めるのであれば、転送量の圧縮ができないかな~とか‥‥他にも、サーバレスアーキテクチャをもっと導入できないかな~とか、やりたいことはたくさんあります。
馬場:やはりこういったアーキテクチャをどうするかを一緒に話している時間は楽しいですよね。また、こういう話をしましょう!
KNR:はい、そうしましょう!
という形で、Palcyさんの開発について、これからの展望を交えてパートを締めて頂きました。
ピクシブ様ではこれらの様々なポジションで仲間を募集していますので、興味がある方は下記よりぜひご応募くださいませ。
懇親会では、各社の働き方や社風についても語らいました
1時間程度のプログラムを終えた後には、参加者全員で軽食を囲みながらの懇親会を実施しました。名刺交換はもちろん、各社の開発組織についてより踏み込んだ話で盛り上がりました。
サーバー代削減は「CTO Booster」にお任せください
「CTO Booster」は、ソースコードやアーキテクチャの改善を通じて、サーバー代の削減を成功報酬で代行します。
【無料】まずはサーバー代の削減余地がわかる診断から
現状のサーバー代に何円の削減余地があるかがわかる診断は無料です。
ぜひ下記お問い合わせフォームよりご相談ください。
お問い合わせ(診断希望の方はこちら!)
記事をシェア: