70.6K Views
June 27, 23
スライド概要
NRUG (New Relic User Group) SRE支部 Vol.3 の発表資料です
https://nrug-sre.connpass.com/event/285748/
経済ニュースアプリのSREの仕事をしています。
SREチームがNew Relicを使って AWSコスト最適化に貢献した話 株式会社ニューズピックス 安藤 裕紀 NRUG (New Relic User Group) SRE支部 Vol.3 - 2023.6.27(Tue)
00 自己紹介 安藤裕紀 / Yuki Ando NewsPicks SRE Unit Leader SREチームのマネージャー兼テックリード 好きなAWSのサービス:ECS、Cost Explorer 、CDK ©NewsPicks Inc. All Rights Reserved.
00 目次 1. AWSコスト最適化への課題意識 2. コンピューティングコスト削減にNew Relicを活用 3. データベースコスト削減にNew Relicを活用 4. まとめ ©NewsPicks Inc. All Rights Reserved.
01 AWSコスト最適化への課題意識 ©NewsPicks Inc. All Rights Reserved.
01 ソーシャル経済メディア NewsPicksについて タイトルタイトルタイトルタイトルタイトルタイトルタイト ルタイトルタイトルタイトル テキストテキストテキストテキストテキストテキストテ キストテキストテキストテキストテキストテキストテキ ストテキストテキストテキストテキストテキストテキスト テキストテキストテキストテキストテキストテキストテ キストテキストテキストテキストテキストテキストテキ ストテキストテキストテキストテキストテキストテキスト テキストテキストテキストテキストテキストテキストテ キストテキスト ©NewsPicks Inc. All Rights Reserved.
01 プロダクトチーム内でSREが1チームで複数事業のインフラを担当 SRE ©NewsPicks Inc. All Rights Reserved.
01 SREチームのミッションと、活動の4つの軸 Mission 誰もが安全かつ高速に開発できるインフラを提供することで、 NewsPicksの企業価値を継続的に向上させる ユーザー体験を守る 開発者体験を高める 常にユーザー視点のモニタリングを行い、可用性やレイテ ンシーのSLO達成を通じて快適なユーザー体験を提供する メディアとしてニュースのスパイクアクセスを難なく捌く ユーザーに価値を届けるプロダクト開発のパフォーマンスを 最大化するため、開発者の負を取り除き快適・安全・高速に 使える開発基盤サービスを提供する レガシーを捨てる セキュリティ・コストを適正化する レガシーなサーバーOSやミドルウェア、言語ランタイム、 アーキテクチャーを継続的に刷新していく モダンな技術スタックによりエンジニア採用の競争力を 高め、プロダクト開発組織の成長阻害要因を取り除く SNSの側面があるソーシャル経済メディアをユーザーが安心し て利用できるセキュリティを確保する サービスの規模拡大に比例してサーバーのコストが増えない ようにし、売上に対するコストの割合を低くする ©NewsPicks Inc. All Rights Reserved.
01 「サービスの規模拡大に比例してコストが増えないようにする」 Mission 誰もが安全かつ高速に開発できるインフラを提供することで、 NewsPicksの企業価値を継続的に向上させる ユーザー体験を守る 開発者体験を高める 常にユーザー視点のモニタリングを行い、可用性やレイテ ンシーのSLO達成を通じて快適なユーザー体験を提供する メディアとしてニュースのスパイクアクセスを難なく捌く ユーザーに価値を届けるプロダクト開発のパフォーマンスを 最大化するため、開発者の負を取り除き快適・安全・高速に 使える開発基盤サービスを提供する レガシーを捨てる セキュリティ・コストを適正化する レガシーなサーバーOSやミドルウェア、言語ランタイム、 アーキテクチャーを継続的に刷新していく モダンな技術スタックによりエンジニア採用の競争力を 高め、プロダクト開発組織の成長阻害要因を取り除く SNSの側面があるソーシャル経済メディアをユーザーが安心 して利用できるセキュリティを確保する サービスの規模拡大に比例してサーバーのコストが増えない ようにし、売上に対するコストの割合を低くする ©NewsPicks Inc. All Rights Reserved.
01 未曾有の円安によりSREチームの心は休まらない日々 USD/JPYの為替チャート(2022/1〜2023/6) 😱2022/10:150円(+30%) 😰2022/7:135円(+17%) 🤔2022/4:125円(+8.5%) 😀2022/1:115円(±0%) yahoo!finance https://finance.yahoo.com/quote/JPY=X 2023.6.7時点より ©NewsPicks Inc. All Rights Reserved.
01 未曾有の円安によりSREチームの心は休まらない日々 USD/JPYの為替チャート(2022/1〜2023/6) 😱2022/10:150円(+30%) 何もしなければコストが 30%増える 😰2022/7:135円(+17%) 🤔2022/4:125円(+8.5%) 😀2022/1:115円(±0%) yahoo!finance https://finance.yahoo.com/quote/JPY=X 2023.6.7時点より ©NewsPicks Inc. All Rights Reserved.
01 未曾有の円安によりSREチームの心は休まらない日々 USD/JPYの為替チャート(2022/1〜2023/6) 😱2022/10:150円(+30%) 何もしなければコストが 30%増える 1ドル115円→150円でAWS費用が30%アップ😱 「仮に」AWS費用が1億なら3000万の利益減少😭 😰2022/7:135円(+17%) 利益率15%の事業だとすると、追加で2億の売上を持ってこないと 会社として当初の収益目標を達成できないことになります🥺(やばい) 🤔2022/4:125円(+8.5%) ※数字は、NewsPicks事業の数字ではなく架空のものです 😀2022/1:115円(±0%) yahoo!finance https://finance.yahoo.com/quote/JPY=X 2023.6.7時点より ©NewsPicks Inc. All Rights Reserved.
01 2023年は135円ラインで推移すると思いきや、余談を許さない上昇傾向 USD/JPYの為替チャート(2022/1〜2023/6) 😱2022/10:150円(+30%) 😰2022/7:135円(+17%) 🤔2022/4:125円(+8.5%) 😀2022/1:115円(±0%) yahoo!finance https://finance.yahoo.com/quote/JPY=X 2023.6.7時点より ©NewsPicks Inc. All Rights Reserved.
円安以上にドルベースでコストを減らすしかない💪 ©NewsPicks Inc. All Rights Reserved.
01 最終的に、2022/1のAWSコストから30%以上の削減に成功💪 AWS QuickSightで可視化した月別サービス別AWS料金(2022/1〜2023/5) ©NewsPicks Inc. All Rights Reserved.
02 コンピューティングコスト削減に New Relicを活用 ©NewsPicks Inc. All Rights Reserved.
02 コストを最適化するには、まず可視化が必要 AWSコスト最適化ガイドブックより: Cloud Financial Management(CFM)フレームワーク ©NewsPicks Inc. All Rights Reserved.
03 親の顔よりもAWS Cost Explorerを眺める日々 AWS Cost Explorerのサービス別グラフ(2022/1-2022/9) 最初はEC2やECSが多かったので、とにかくコンピューティングコストを優先して削り込む ©NewsPicks Inc. All Rights Reserved.
02 AWSのマネコンだけ見てもコスト最適化のヒントはたくさん Savings Plans Compute Optimizer Trusted Advisor カバレッジレポート/使用状況レ ポートで、利用するコンピュー ティングリソースに対するSP購 入の推奨事項を出してくれる オンデマンド課金を最小限にする チューニングに使える EC2インスタンスに割り当ててい るリソースが、使用状況に対して 過剰なプロビジョニングがあれば 検出してくれる 過剰な場合はスケールダウンを検 討することができる コスト最適化の推奨として、 過剰なプロビジョニングや RDS/ElastiCacheリザーブドノー ドの最適化、利用頻度の低いリ ソースを一覧化してくれる ©NewsPicks Inc. All Rights Reserved.
02 AWSのマネコンだけ見てもコスト最適化のヒントはたくさん Savings Plans Compute Optimizer Trusted Advisor EC2インスタンスに割り当ててい コスト最適化の推奨として、 アプリケーションの中身やサービスの特性を理解しなくてもできる るリソースが、使用状況に対して 過剰なプロビジョニングや カバレッジレポート/使用状況レ ポートで、利用するコンピュー ティングリソースに対するSP購 入の推奨事項を出してくれる オンデマンド課金を最小限にする チューニングに使える 過剰なプロビジョニングがあれば 検出してくれる 過剰な場合はスケールダウンを検 討することができる RDS/ElastiCacheリザーブドノー ドの最適化、利用頻度の低いリ ソースを一覧化してくれる CPU使用率などをみて、○%までRI/SPを買う・スケールダウンする というマネコンポチポチおじさんになって、エンジニアといえるのか? 事業会社のエンジニアをやる以上、エンドユーザーの体験や サービスの特性を考えてアプリケーションの改善含めた問題解決をしたい ©NewsPicks Inc. All Rights Reserved.
02 コンピューティングコストの最適化ステップ 1. AWSリソース削減 2.CPU使用率を改善 Savings Plans, Compute Optimizer, Trusted Advisorに 従ってポチポチ調整 New Relicを利用して 支配的なサーバー処 理を特定し、改善 ©NewsPicks Inc. All Rights Reserved. 3.AWSリソース削減 CPU使用率に余裕が できるので、さらに AWSリソースを削り 込む!
02 コンピューティングコストの最適化ステップ 1. AWSリソース削減 2.CPU使用率を改善 Savings Plans, Compute Optimizer, Trusted Advisorに 従ってポチポチ調整 New Relicを利用して 支配的なサーバー処 理を特定し、改善 マネコンポチポチおじさん はここまで 10%削減すれば良い方では ©NewsPicks Inc. All Rights Reserved. 3.AWSリソース削減 CPU使用率に余裕が できるので、さらに AWSリソースを削り 込む!
02 コンピューティングコストの最適化ステップ 1. AWSリソース削減 2.CPU使用率を改善 Savings Plans, Compute Optimizer, Trusted Advisorに 従ってポチポチ調整 New Relicを利用して 支配的なサーバー処 理を特定し、改善 3.AWSリソース削減 CPU使用率に余裕が できるので、さらに AWSリソースを削り 込む! さらにコストを最適化して 30%以上削減達成! ©NewsPicks Inc. All Rights Reserved.
02 そもそも何の処理がサーバー内のリソースを使っているのか? New Relic APMのTransactions > Sort by Most time consumingでサーバー が提供するAPIごとの「リクエスト数×サーバー処理時間」のランキング上位を確 認 上位2つのAPIで30%近くを占めて いるため、この2つのAPIの目的を 確認し、リクエストを減らすか処理 を高速化すればサーバーのCPUリ ソースが空くと考えた ©NewsPicks Inc. All Rights Reserved.
02 cover画像APIのCloudFrontキャッシュ対応 ユーザーのアイコン画像をアプリ用に様々なリサイズをして返すAPIだった アプリケーションでmax-ageヘッダーを付与してCDNにキャッシュした アプリケーションで max-ageヘッダー付与 cover画像 ©NewsPicks Inc. All Rights Reserved. Users Amazon CloudFront Amazon ECS
02 Webブラウザ用pick stream APIの呼び出し回数削減 Webブラウザからのタイムライン更新のポーリングリクエストが、いにしえの AjaxのsetInterval()無限ループだった。Chromeから複数タブを開いて非アク ティブになっていてもずっとDDoS攻撃されてしまうので、非表示時に抑止した 古くからあるフロントエンド処理はCoffeeScriptでした… ©NewsPicks Inc. All Rights Reserved.
02 リクエストを減らしたのでサーバー数も2割以上減らせた 処理時間上位2つのAPIをランキング外に弾き出したのでサーバー数も減らした そもそもサーバーに来なくていいリクエストをなくすという判断はいくらAWSの モニタリングをしても無理。サービスとアプリケーションを理解しないといけない newsのAPIがサーバーの処理時間の最上位を占めるニュースアプリっぽくなった ©NewsPicks Inc. All Rights Reserved.
02 定時スケーリングの調整も、New Relicダッシュボードで見やすく トラフィックとスケーリングを一つのダッシュボードに集約 時間帯別のスケーリングの妥当性を確認してスケーリング調整 ©NewsPicks Inc. All Rights Reserved.
03 データベースコスト削減に New Relicを活用 ©NewsPicks Inc. All Rights Reserved.
03 削減すると割合の大きなサービスが変わってくる AWS Cost Explorerのサービス別グラフ(2022/9-2023/5) サービス別Top3がDatabese関連に入れ替わったので削り込む ©NewsPicks Inc. All Rights Reserved.
03 固定費を削減する方法はいろいろ EC2/ECSのスケーリング コンピューティングリソースを サービスの使用量に合わせてスケー リングして無駄を減らす 開発環境は平日日中のみ稼働する ようにして無駄を減らす。祝日の停 止を設定する RI/SP/Spotの活用 Savings Plansの推奨事項やカバレッ ジレポートを見てこまめに購入判断 する。Fargate Spotを利用する Cost ExplorerでDynamoDBの Reserved Capacityの利用状況を確 認してこまめに購入判断する ©NewsPicks Inc. All Rights Reserved. ストレージコスト削減 EBSのスナップショット世代数の見 直しと過去の不要な手動スナップ ショットの消し込み S3ライフサイクルルールの見直しと 適切なGlacier活用 Gravitonへの移行 マネージドなデータベースサービス (Aurora,RDS,ElastiCache)の インスタンスタイプをGravitonに 変更する(だけ)
03 RDS/ElastiCacheに関してはGravitonへの移行がおすすめ EC2/ECSのスケーリング コンピューティングリソースを サービスの使用量に合わせてスケー リングして無駄を減らす 開発環境は平日日中のみ稼働する ようにして無駄を減らす。祝日の停 止を設定する RI/SP/Spotの活用 Savings Plansの推奨事項やカバレッ ジレポートを見てこまめに購入判断 する。Fargate Spotを利用する Cost ExplorerでDynamoDBの Reserved Capacityの利用状況を確 認してこまめに購入判断する ©NewsPicks Inc. All Rights Reserved. ストレージコスト削減 EBSのスナップショット世代数の見 直しと過去の不要な手動スナップ ショットの消し込み S3ライフサイクルルールの見直しと 適切なGlacier活用 Gravitonへの移行 マネージドなデータベースサービス (Aurora,RDS,ElastiCache)の インスタンスタイプをGravitonに 変更する(だけ) 2022年後半はGraviton移行祭り
03 Gravitonはパフォーマンスの悪化もなくコスト削減ができた🥰 AWSサービス タイプ コスト削減幅 (RI1年前払い) パフォーマンス影響 -10% 全体としてはパフォーマン スが改善💪 一部のテーブル・クエリは 遅くなったものもあり Before After Amazon Aurora(MySQL) db.r5.large db.r6g.large Amazon RDS(PostgreSQL) db.t3.medium db.t4g.medium -2.5% 影響なし(元々のスルー プットが多くない) Amazon ElastiCache for Redis cache.r5.large cache.r6g.large -5% 影響なし(キャッシュは 元々のレスポンスが爆速) ※ 上記RIを複数購入し実際は db.r6g.4xlargeを利用 同じインスタンスファミ リーはRI充当できるため →同じr5からr6gでもAuroraよりElastiCacheの方がコスト削減幅が小さく、t3からt4gなどバーストタイプで は更にコスト削減幅は小さい。バーストタイプやElastiCacheでは相対的にGravitonのメリットは小さくなる ©NewsPicks Inc. All Rights Reserved.
03 DynamoDBに関しては、New Relicのダッシュボードが役立った AWSインテグレーションで、DynamoDBテーブルごとの使用率を可視化 ProvisionedCapacityに対して、ConsumedCapacityの余 裕があるテーブルがわかる AWSだと意外にこのモニタリングが難しい ©NewsPicks Inc. All Rights Reserved.
04 まとめ ©NewsPicks Inc. All Rights Reserved.
04 最終的に、2022/1のAWSコストから30%以上の削減に成功💪 AWS QuickSightで可視化した月別サービス別AWS料金(2022/1〜2023/5) ©NewsPicks Inc. All Rights Reserved.
04 可視化・最適化・改善のサイクルが回ると、予測・計画もできる AWSコスト最適化ガイドブックより: Cloud Financial Management(CFM)フレームワーク 毎月、AWSコストの実績から見通しと予算を立て、 AWS Budgetに設定してコントロールできている ©NewsPicks Inc. All Rights Reserved.
03 まとめ ● AWSコスト最適化は可視化から始めるしかない ● AWSマネコンポチポチおじさんではコスト最適化に限界はある サービスとアプリケーションをより理解するためにNew Relicを活用しよう ● DynamoDBなど、意外にNew Relicダッシュボードに連携するだけでも CloudWatchなどより便利な場合もあります! ©NewsPicks Inc. All Rights Reserved.
ご清聴ありがとうございました! ©NewsPicks Inc. All Rights Reserved.