Slide 1

Slide 1 text

敵対的SRE: 300個のジョブ をAIチーム全員で支える技術 エムスリー株式会社 北川 亮 1

Slide 2

Slide 2 text

自己紹介 ● 北川 亮 ● エムスリー株式会社 AI・機械学習チーム所属 SRE ● 京都オフィス所属 ● Vim/Go/Kubernetesが好き 2

Slide 3

Slide 3 text

自己紹介 ● 北川 亮 ● エムスリー株式会社 AI・機械学習チーム所属 SRE ● 京都オフィス所属 ● Vim/Go/Kubernetesが好き チーム所属のSRE というEmbedded SREという立場 3

Slide 4

Slide 4 text

(※) 2023年10月時点 日本の医師のエムスリー会員率 エムスリーが事業展開している国の数 エムスリーが占める全世界で医師会員の割合 全世界で医師会員合計 17 カ国 (※) 50 %以上 (※) 650 万人以上 (※) 90 %以上 エムスリー が展開する医療従事者向け情報 サイト「m3.com」は32万人を突破、日本 の医師の9割以上が会員。(※) 日本の医師の9割が登録するエムスリーのサービス グローバルでも医師の5割以上が会員、医療業界に根付く事業基盤 圧倒的な医療データへのアクセス容易性を活かしたAI開発 4

Slide 5

Slide 5 text

エムスリーのプロダクトに根ざしたAI技術活用事例 ToB・ToC・グローバルプロダクトにも展開 医療の疑問に医師が答えるAskDoctors 検索エンジン開発 海外版m3.comの記事やQuizのレコメンド AIチームメンバーがUS出張開始 シェアNo.1のクラウド電子カルテ 病名入力補完APIの開発 医療業界のビッグデータを活用 マーケティング向けデータ分析 医療画像やウェアラブルデバイスデータを活用 医療業界のAI活用を推進 5

Slide 6

Slide 6 text

アジェンダ 1. 敵対的SREとは 2. 実例1: アラートに付加情報をのせる 3. 実例2: 成功を監視する 4. 実例3: 必要な監視に絞る 5. まとめ 6

Slide 7

Slide 7 text

敵対的SREとは 7

Slide 8

Slide 8 text

敵対的SREとは? SRE チーム メンバー 監視を生成 良い監視かフィードバック 8

Slide 9

Slide 9 text

敵対的SREとは? SRE チーム メンバー 監視を生成 良い監視かフィードバック 9

Slide 10

Slide 10 text

敵対的生成ネットワーク 生成器 識別器 GAN(Generative Adversarial Network)と呼ばれる深層学習アーキテクチャ データを生成 生成されたものか判定 10

Slide 11

Slide 11 text

敵対的生成ネットワーク 画像生成などで良く使われる 偽 or 真 11

Slide 12

Slide 12 text

敵対的生成ネットワーク 生成器 識別器 GAN(Generative Adversarial Network)と呼ばれる深層学習アーキテクチャ データを生成 生成されたものか判定 正しいデータ の特徴を学習 納得させる データを学習 12

Slide 13

Slide 13 text

良い学習のためにはバランスが重要 生成器 識別器 生成したデータが良いかどうか をフィードバック出来ない 13

Slide 14

Slide 14 text

GANを応用した敵対的SREとは? SRE チーム メンバー 監視を生成 良い監視の 特徴を学習 納得させる 監視を生成 14 良い監視体制を目指す フィードバック

Slide 15

Slide 15 text

GANを応用した敵対的SREとは? SRE チーム メンバー 監視を生成 良い監視の 特徴を学習 納得させる 監視を生成 15 良い監視体制を目指す フィードバック

Slide 16

Slide 16 text

チームメンバー ● 2024年8月現在で14人 ● プロダクト数が50個ほど ○ 定期ジョブは約300個 ● 各メンバーが自身のプロダクトを運用している ○ もちろん手が回らない場合はサポートなどを行う ● SRE自身もプロダクト開発をしている 16

Slide 17

Slide 17 text

GANを応用した敵対的SREとは? SRE チーム メンバー 監視を生成 良い監視の 特徴を学習 納得させる 監視を生成 17 フィードバック

Slide 18

Slide 18 text

SRE ● AI・機械学習チームに所属するSRE ○ メンバーの中の7人がSREタスクを行っている ● チームの開発基盤の作成から監視の作成まで行う 18

Slide 19

Slide 19 text

フィードバック GANを応用した敵対的SREとは? SRE チーム メンバー 監視を生成 良い監視の 特徴を学習 納得させる 監視を生成 ここが大事 19

Slide 20

Slide 20 text

何故、メンバーからのフィードバックが大事か? ● 監視とは運用を効果的にするためにサポートするものである ● 実際に良いかどうか判断するのは運用者 ○ SREが良かれと思って監視を作っても効果は分からない 20

Slide 21

Slide 21 text

ここまでのまとめ ● 敵対的SRE: SREとメンバーが互いに学習しながら監視を安定させる ● 良い監視を学習するためにはメンバーからのフィードバックが重要 ● エムスリーAI・機械学習チームは敵対的SREを通して、14人で50個のプロダ クトを運用している 21

Slide 22

Slide 22 text

実例の紹介 22

Slide 23

Slide 23 text

当初の(良くある)アラート Kubernetes Jobが落ちたら通知 23

Slide 24

Slide 24 text

当初の(良くある)アラート Kubernetes Jobが落ちたら通知 Cloud Logging エラーログを確認 24

Slide 25

Slide 25 text

単に落ちただけじゃなく、何故落ちたかまで知りたい SRE チーム メンバー 情報量を増やしたい 単純なアラートを生成 25

Slide 26

Slide 26 text

改善内容 ● PythonのTraceback文のような決まった定型文をエラーと共に通知した ○ Cloud Logging対応することによって、severityなどの統一も 得られた効果 ● 徐々にジョブが増えていく中で、原因探索時間が短くなった Kubernetes 改善1: アラートに付加情報を加える Jobが落ちたら通知 26

Slide 27

Slide 27 text

学び: より情報量が多いアラートが良いアラートである SRE チーム メンバー 情報量が多 いほど良い アラート Pythonの Stacktrace が良い付加 情報になり そう 27

Slide 28

Slide 28 text

実例2: 成功を監視する 28

Slide 29

Slide 29 text

ジョブの終了が遅いアラートが欲しい AI・機械学習チーム 別チーム ジョブ ジョブ BigQuery 10:00に取り込み 9:30に完了 29

Slide 30

Slide 30 text

ジョブの終了が遅いアラートが欲しい AI・機械学習チーム 別チーム ジョブ ジョブ BigQuery 10:30に完了 10:00に取り込み 徐々にデータ量が増え ていくなど 30

Slide 31

Slide 31 text

ジョブの終了が遅いアラートが欲しい AI・機械学習チーム 別チーム ジョブ ジョブ BigQuery 10:30に完了 10:00に取り込み 必要なデータが存在し なくてエラー 31

Slide 32

Slide 32 text

ジョブの終了が遅いアラートが欲しい AI・機械学習チーム 別チーム ジョブ ジョブ BigQuery 10:30に完了 従来のアラートでは気 付けないエラー 10:00に取り込み 32

Slide 33

Slide 33 text

ジョブの終了が遅いアラートが欲しい SRE チーム メンバー 落ちたという 情報はエ ラーの一部 に過ぎない 成功を監視したい エラー情報を通知 33

Slide 34

Slide 34 text

改善内容 ● 何時までにBigQueryにデータ連携すれば成功かを定義 ● 成功しなかったものを通知 得られた効果 ● 今までに発見出来なかった遅くなっていたジョブを検知 改善2: 成功を監視する BigQuery table更新が間に合わな ければアラート 34

Slide 35

Slide 35 text

学び: 成功を定義して監視をするのが重要 SRE チーム メンバー アウトプッ トを監視し ないといけ ない テーブルの 作成時間が ジョブの SLOである 35

Slide 36

Slide 36 text

実例3: 必要な監視に絞る 36

Slide 37

Slide 37 text

アラート多すぎ問題 ● 2024年現在 チームで定期的に動くジョブは約300個 ● 5分毎に動くジョブも3ヶ月に1度動くジョブも同じアラート Jobが落ちたら通知 Kubernetes 37

Slide 38

Slide 38 text

対応が必要なアラートだけが欲しい SRE チーム メンバー 対応が必要なアラートに絞りたい エラー等もすべて同様に通知 38

Slide 39

Slide 39 text

対応が必要なアラートとは? ● 実例2でSLOを定義してそれを監視するのが良いことを学習した 39

Slide 40

Slide 40 text

各ジョブのSLOを考えてみる 5分に一回動くジョブ 40 10:00 10:05 10:10

Slide 41

Slide 41 text

各ジョブのSLOを考えてみる 失敗する 41 5分に一回動くジョブ 10:00 10:05 10:10 10:15

Slide 42

Slide 42 text

各ジョブのSLOを考えてみる 次成功すればOK 42 5分に一回動くジョブ 10:00 10:05 10:10 10:15 10:20

Slide 43

Slide 43 text

各ジョブのSLOを考えてみる ずっと失敗してい るならアウト 43 5分に一回動くジョブ 10:00 10:05 10:10 10:15 10:20

Slide 44

Slide 44 text

各ジョブのSLOを考えてみる 3ヶ月に一回動くジョブ 1回でも失敗した らアウト 44

Slide 45

Slide 45 text

各ジョブのSLOを考えてみる ● 5分に一回動くジョブ → 30分の間に1度以上成功すればOK ● 3ヶ月に一回動くジョブ → 3ヶ月に1度成功すればOK 45

Slide 46

Slide 46 text

各ジョブのSLOを考えてみる ● 5分に一回動くジョブ → 30分の間に1度以上成功すればOK ● 3ヶ月に一回動くジョブ → 3ヶ月に1度成功すればOK ジョブごとに◯時までに一度成功しているかを監視すれば良い 46

Slide 47

Slide 47 text

Kubernetes 必要な監視に絞る ● すべてのジョブにSLOを定義して通知 SLOを満たさなければ通知 47

Slide 48

Slide 48 text

Kubernetes 必要な監視に絞る ● すべてのジョブにSLOを定義して通知 → 今までのエラーは付加情報として SLOを満たさなければ通知 48

Slide 49

Slide 49 text

必要な監視に絞る 改善内容 ● 成功監視を全ジョブに広げて通知を行った ● 今までの失敗アラートは付加情報として別チャンネルに 得られた効果 ● アラートが対応が必要なものだけに絞られた ● 事例1・2で学んだ付加情報や成功監視が出来ている状態 49

Slide 50

Slide 50 text

学び: 行動につながるアラートだけを最低限に SRE チーム メンバー ジョブの特 徴によって SLOは異な る 行動につな がるものだ けをアラー トする 50

Slide 51

Slide 51 text

まとめ ● 敵対的SRE: SREとメンバーが互いに学習しながら監視を安定させる ● 一方的に監視を作成するのはアンチパターン(本当の敵になってしまう) ● チームで学んだこと ○ 重要なのはSLOを定義し、それを補助するアラートを作成すること ○ SLO監視が行動につながるアラートになる ○ それ以外のメトリクスは補助のために利用してもよい 51

Slide 52

Slide 52 text

ちょっと雑談 ● 行動につながるアラートだけに絞るために1週間ノーアラートで焼き肉チャ レンジを行った ● 目的 ○ チーム全体の運用コストを最低限に ○ 全サービスのSLOを見直すモチベーションに ● CfPを出した(2024/6/25)時点では最長6日と8時間 52

Slide 53

Slide 53 text

ちょっと雑談 ● 行動につながるアラートだけに絞るために1週間ノーアラートで焼き肉チャ レンジを行った ● 目的 ○ チーム全体の運用コストを最低限に ○ 全サービスのSLOを見直すモチベーションに ● CfPを出した(2024/6/25)時点では最長6日と8時間 なんと出した当日に達成 🎉🎉🎉 53

Slide 54

Slide 54 text

エンジニア採用ページ https://jobs.m3.com/engineer/ プロダクト紹介ページ https://jobs.m3.com/product/ エムスリーテックブログ https://www.m3tech.blog/ エムスリーをもっと詳しく 54 社員インタビュー https://www.wantedly.com/companies/m3_inc VPoE登壇資料 fukabori.fm https://fukabori.fm/episode/59 https://fukabori.fm/episode/60 Connpass公式グループ https://m3-engineer.connpass.com/ エンジニア公式Twitter(X) https://twitter.com/m3_engin eering エンジニア公式YouTube https://www.youtube.com/channel /UC_DkAOcwgmtQnJLDctci4rQ

Slide 55

Slide 55 text

https://jobs.m3.com/engineer/ カジュアル面談・応募はこちら プロダクトの内容、技術的な内容 どちらでも気になった場合は気軽にご応募ください!