Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
モダンとレガシーが混在するDMMブックスで培った SRE Practices
ono-hiroshi1
May 24, 2022
Programming
0
1.5k
モダンとレガシーが混在するDMMブックスで培った SRE Practices
ono-hiroshi1
May 24, 2022
Tweet
Share
More Decks by ono-hiroshi1
See All by ono-hiroshi1
ログ基盤をCloudWatchLogからNewRelic Logs + S3に変えたら 利便性も上がってコストも下がった話
onohiroshi1
0
170
DMMブックスにNewRelicを導入した話
onohiroshi1
1
250
60億円の損害を出した 「DMMブックス」 70%OFFキャンペーンでプラットフォームに何が起きていたか
onohiroshi1
7
24k
Other Decks in Programming
See All in Programming
heyにおけるCI/CDの現状と課題
fufuhu
2
550
Swift Regex
usamik26
0
110
はてなフォトライフをECSに移行した話 / Hatena Engineer Seminar #20
cohalz
1
820
Jakarta EE 10 and Beyond
ivargrimstad
0
1.9k
設計ナイト2022 トランザクションスクリプト
shinpeim
11
2k
Amazon ECSのネットワーク関連コストの話
msato
0
620
React NativeアプリにStorybook CSF3.0を導入しよう
texmeijin
0
160
What's new in Android development tools まとめ
mkeeda
0
290
IE Graduation (IE の功績を讃える)
jxck
20
12k
LINE Messaging APIの概要 - LINE API総復習シリーズ
uezo
1
160
Value and Record Types
hschwentner
0
550
実践エクストリームプログラミング / Extreme Programming in Practice
enk
1
410
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
19
2.9k
Building a Scalable Design System with Sketch
lauravandoore
448
30k
The World Runs on Bad Software
bkeepers
PRO
57
5.3k
Done Done
chrislema
174
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Embracing the Ebb and Flow
colly
73
3.4k
How GitHub (no longer) Works
holman
296
140k
For a Future-Friendly Web
brad_frost
166
7.4k
A Tale of Four Properties
chriscoyier
149
21k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
11
4.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
5
2.2k
Atom: Resistance is Futile
akmur
255
20k
Transcript
© DMM.com モダンとレガシーが混在する DMMブックスで培った SRE Practices 合同会社 DMM.com SRE部 小野
博志 2022/05/15
© DMM.com 自己紹介 2 小野 博志 / Ono Hiroshi 合同会社DMM.com
ITインフラ本部 SRE部 エンジニアリングマネージャー Facebook: https://www.facebook.com/onohiroshi2 2005年に新卒で中小独立系 Slerに入社。Javaを使ったWeb系開発に従事。 2008年よりMSP(マネージド・サービス・プロバイダ)の業務に従事。アカウント SEから始ま り、サービス企画やテクニカルディレクターを務める。 エンタープライズの領域 で大規模なコー ポレートサイト、WebCMSを中心として担当していた。 2020年にDMM.comに入社し、DMMブックスを中心に複数のサービスを SREとして担当しつ つ、NewRelicを社内に広める活動も合わせて実施している。
© DMM.com アジェンダ 3 • SLI/SLOにCore Web Vitalsも加えた話 • NewRelicへのログ出力をCloudWatch
Logsを経由しないようにしコストを下げた話 • 検証環境を自動構築できるようにした話
© DMM.com DMMのSRE体制 4
© DMM.com 横断組織としてのSRE部とSREチーム 5 事業部 動画 電子書籍 プラットフォーム Team A
Team B Team C Team A Team B SRE Team Team A Team B SRE Team SRE部 セキュリティ部など横断組織 コーポレート組織 コーポレート 人事・総務 など DMMブックスでは電子書籍事業部の SREチームとSRE部が 一体になって日々の活動に取り組んでいる
© DMM.com 話題のコミックや小説などを パソコンやスマホで 読めるプラットフォーム コミック、雑誌、小説、写真集等の電子書籍を配信しております。現在は 67万冊以上の作品を取り揃えており、 さまざまなジャンルの作品を提供しています。
© DMM.com 今だけ!お得な70%OFFクーポンがあります
© DMM.com SLI/SLOの拡充 8
© DMM.com 背景 9 • かねてからユーザから表示が遅いとのフィードバックがあった。 • そのため、速度改善も兼ねてモノリスからマイクロサービスへチャレンジすることになった。 • 一旦は、主要ページに留めてFE/BE分離、非同期通信による改善を行いページ表示速度は明らかに
改善されたが実際どれくらいのユーザが満足できているのかは分かっていなかった
© DMM.com 現状はどうなっていたか 10 シンセティック監視(いわゆる外形監視)で主要ペー ジのレスポンスタイムを測定しているだけだった。
© DMM.com SLI/SLOとは 11 • SLI • サービスレベル指標の略 • 提供しているサービスのレベルを測るための定量的な値
• SLO • サービスレベル目標の略 • 設定したSLIに基づいてサービスとして目標とする値 サービスが 正常でない 状態になったとき、それを正常に戻すためのトリガーとするため
© DMM.com Core Web Vitalsの導入 12 • Core Web Vitalsとは
• Googleが提唱するユーザ体験の満足度につながる指標のこと。以下の3つが定義されている。 • 読み込み時間(Largest Contentful Paint) • インタラクティブ性(First Input Delay) • ページコンテンツの視覚的な安定性(Cumulative Layout Shift) 引用:https://web.dev/vitals-business-impact/
© DMM.com データは既に貯めていた 13 • DMMブックスではNewRelicでモニタリングを行っており、データ自体はすでに溜め込んでいた。ただ し、NewRelicでは8日間のデータしかなかったため、Metric Aggregatorで長期トレンドへと変換した
© DMM.com 結果 14 • デバイス別、回線別(Wi-Fi/SIM)など多角的な分析が出来、改善すべきページが明らかになった。 • デプロイとCore Web Vitalsを紐付けることでCore
Web Vitalsに影響を与えるリリース内容が分析でき るようになった。 • そして、感覚的に持っていたユーザが不満を持っているページが明らかになった。
© DMM.com 結果(2) 15 • Core Web Vitalsの一部の指標は日々の朝会で確認し、悪化があれば原因を調査している
© DMM.com CloudWatch Logsから NewRelic Logsへ 16
© DMM.com 背景 17 • DMMブックスは多くの機能をAWS上で構築しているが、サービスが成長するにつれて全体コストに対 してCloudWach Logsの費用が大きくなっていった。 • 調べてみるとDataProcessing-Bytesが大きなコストを占めており、更に読み解くと、PutLogEvents
で ありログを登録する場合にかかる費用であることも分かった。
© DMM.com コストが掛かっていた理由 18 CloudWatch Logs アプリケーション newrelic-log-ingestion CloudWatch LogsへのPutEventに多くのコストが掛かっていた
ロググループ単位で集計するとアプリケーションが稼働しているアクセスログおよびアプリケーションロ グで多くのコストが掛かっており、更にログの保管ではなく登録に多くのコストが掛かっていた。元々ロ グ検索はNewRelicを使っておりログの保存でのみ使っていた
© DMM.com CloudWatch Logsの料金 19 収集(データの取り込み):0.76USD/GB 保存(アーカイブ):0.033USD 意外と割高な料金設定となっている
© DMM.com CloudWatch Logsを利用しない構成へ 20 アプリケーション FireLens Kinesis Data Streams
S3 CoudWatchを経由せずにKinesis Data Streams(+S3バックアップ)へ変更したところ、運用を変えず にコスト削減を実現できた
© DMM.com 結果 21 当初Kinesis FirehoseのVPCエンドポイントを作成してなかったため、NATGatewayのコストがかさみ、 コスト削減効果はほぼ無いと思われたが、VPCエンドポイントを作成したところ、約4割減のコスト削減 に繋がった。
© DMM.com ECS での検証環境の 自動構築 22
© DMM.com 背景 23 • DMMブックスでは拡大するチーム・プロジェクトに対してそれぞれステージング環境とは別に検証環境 が必要であり、その構築に一定のコストが掛かっていました。そのためブランチごとに検証環境が自動 構築される仕組みを用意する必要がありました
© DMM.com Stagingと 共通 作成した仕組み 24 push stg/**** CIの実行 CodePipline
CircleCI CodeBuild 自動構築範囲 アプリケーション FireLens アプリケーションのデプロイ TerraformによりAWSリソースの作成 検証環境として ALBを1つ用意 土日はタスクを止めて コスト削減
© DMM.com 考慮した点 25 • データストアはステージングと共通のものを利用する • 弊社のステージング環境はユーザ系のデータ以外、ほぼ本番と同等のデータが格納されており、 これはテストにおいて重要な意味を持ちます。このデータを利用したくデータストア系のものはス テージングと共通にすることにしました
• ALBは1つ作成し、すべての検証環境は同一のALBを利用してリスナーで振り分ける • 60環境ほど検証環境が必要であり、ALBまで作成してしまうとコストが嵩むため • EventBridge+Lambdaの組合せで土日はECS Serviceのタスクを0にし費用がかからない仕組みにし た
© DMM.com 今後取り組みたい点 26 • 現状は本番環境と同じECS Fargateで構築したが、やはり60環境(約240サーバ)もあると検証環境だ けでもかなりのコストが掛かる。この点はECS on EC2に変えることで、さらなる最適化を目指していき
たい • そう多くないが、データストアの変更が必要、かつ互換性が無い場合はこの仕組では検証することがで きないため、そのパターンでも自動構築にチャレンジしていきたい
© DMM.com まとめ 27
© DMM.com まとめ 28 • Core Web VitalsはSEOとしても評価されるため、この数字を追いかけることはビジネス的にもSRE的 にも双方わかりやすく、かつ定量的に図れるもののためメリットは大きかった。 •
ECSのログ出力先としてCloudWatch Logsは簡易に導入ができ、一定の利便性もあるが規模が大き くなるとどうしてもコストが嵩むため、規模が大きなサービスは使わない方がおすすめであることが分 かった。