Upgrade to Pro — share decks privately, control downloads, hide ads and more …

システムとの会話から生まれる先手のDevOps

 システムとの会話から生まれる先手のDevOps

DevOpsDays Tokyo 2025
https://www.devopsdaystokyo.org/
での登壇資料です

KAKEHASHI

April 15, 2025
Tweet

More Decks by KAKEHASHI

Other Decks in Technology

Transcript

  1. 迅速なフィードバックループのための日々の営み 9 PullRequest を小さく 小さな課題 に分割 エンジニア全員で 日々のログ・ダッ シュボード確認 運用や保守、

    カイゼンも一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  2. システムとの会話 10 本番環境で起きていることをシステム自身からのシグナルから確認し、 それに基づいた課題解決のフィードバックループを回すこと PullRequest を小さく 小さな課題 に分割 エンジニア全員での 日々のログ・ダッ

    シュボード確認 運用や保守、 カイゼンも一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  3. 導入に向けてさまざまなワーキンググループが発足 • 導入推進 ◦ 既存の在庫管理システムからAI在庫管理への移行にあたりデータ移行の仕組みづくり ◦ 顧客の本部組織と連携して、各店舗の移行をスムーズに進めるためのプラン策定 • サポート体制の見直し •

    障害対応フローの見直し ◦ 顧客への障害時のエスカレーション方針の確認 ◦ 障害レベル、障害フローの再定義 • 大手法人向け新規機能開発 ◦ 本部組織向けの機能 ◦ これまでは運用でカバーしていたものを機能化 • 既存ユーザー向けの機能エンハンス ◦ 大手法人向けの開発に注力はするが、対応がゼロにはできない 13
  4. インシデントの対応が増えてきていた 17 PullRequest を小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 運用や保守、

    カイゼンも一緒に プランニング ヒヤリハットを含めた インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 ヒヤリハットを含めた インシデント対応 ヒヤリハット含む インシデント対応 Deploy Monitor R elease Code Test Operate P lan Build
  5. インシデント対応自体は歓迎だけど増えすぎると、、、、 20 PullRequest を小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 運用や保守、

    カイゼンも一緒に プランニング ヒヤリハットを含めた インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 ヒヤリハット含む インシデント対応 インシデントの復旧作 業 インシデントの復 旧作業 インシデントの ふりかえり 暫定対応 恒久対応 再発防止策の 実施 暫定対応 Deploy Monitor R elease Code Test Operate P lan Build
  6. Deploy Monitor R elease Code Test Operate P lan Build

    放置したままユーザーが増えると将来は、、、 21 PullRequest を小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 運用や保守、 カイゼンも一緒に プランニング ヒヤリハットを含めた インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 ヒヤリハットを含めた インシデント対応 ヒヤリハットを含めた インシデント対応 ヒヤリハットを含めた インシデント対応 ヒヤリハットを含めた インシデント対応 ヒヤリハット含む インシデント対応 インシデントの復旧作 業 インシデントの復旧作 業 インシデントの復旧作 業 インシデントの 復旧作業 インシデントの ふりかえり インシデントの ふりかえり 暫定対応 恒久対応 再発防止策の 実施 暫定対応 暫定対応 暫定対応 暫定対応 恒久対応
  7. 品質・信頼性向上のワーキンググループが発足 • 導入推進 ◦ 既存の在庫管理システムからAI在庫管理への移行にあたりデータ移行の仕組みづくり ◦ 顧客の本部組織と連携して、各店舗の移行をスムーズに進めるためのプラン策定 • サポート体制の見直し •

    障害対応フローの見直し ◦ 顧客への障害時のエスカレーション方針の確認 ◦ 障害レベル、障害フローの再定義 • 大手法人向け新規機能開発 ◦ 本部組織向けの機能 ◦ これまでは運用でカバーしていたものを機能化 • 既存ユーザー向けの機能エンハンス ◦ 大手法人向けの開発に注力はするが、対応がゼロにはできない • 品質向上・信頼性向上 ← New ◦ 大手法人導入後に大きな問題につながるようなインシデントの防止 ◦ よく発生しているインシデントの発生箇所・原因箇所の見直し 22
  8. どのような観点での分析をしたか # 観点 説明 使い方 1 障害レベル レベル0〜レベル5の障害レベル 発生数に対しての打ち手か、大きな障害への打ち手か、ど ちらへの打ち手が効果があるかの確認

    2 発生月 いつに発生したインシデントか 何かの体制変更などのイベント、大きな機能開発など発生 につながった要素がありそうかの確認 3 対象コンポーネント backend/frontend/外部システ ム連携/データ コンポーネント、サブコンポーネントごとに見直しが必要な コンポーネントの特定 4 作り込み顕在化まで の月数 作り込み日から発生日までの月数 リリースしてすぐの検知が多ければテスト方法やリリース プロセスの見直し。過去に作り込んだ問題が多い場合は、 開発時の既存仕様の確認方法の見直し 5 検知のきっかけ システム検知、エンジニア検知、 PdM/CS検知、ユーザー検知 モニタリング、アラートの強化が必要か 6 現象が発生した機能 発注、在庫管理、処方などの機能 見直しが必要な機能の特定 7 原因となった機能 発注、在庫管理、処方などの機能 原因と現象発生の機能が異なる場合は、機能やシステム の依存関係が複雑になっている可能性がある 8 技術的要因の区分 状態管理不正、計算ロジック不正、ラ イブラリアップデート 偏りが見られる場合は、全体への類似見直しを検討する 24
  9. 健全なフィードバックループへ 28 PullRequest を小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 運用や保守、

    カイゼンも一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  10. 見直しを実施したログ • AWSのインフラが出力するシステムログの削減 ◦ Infoレベルの情報はトラブルシュートでもほぼ使っていなかったため、 出力ログレベルをWarnレベルに変更し、ログの書き込み量を削減 • アプリケーションで出力していた一部のInfoログの停止 ◦ なんとなくの安心感のために出力し、

    使っていなかったアプリケーションのログを出力しないように変更 • 内部処理のトラブルシュートためのトレース情報の保管期間の見直し ◦ トレース情報は過去に渡って確認することがなかったため、保管の期間を見直し ◦ CloudWatch LogsとDatadogの両方に保管していたトレース情報をDatadogのみに変更 33
  11. 実施方法自体も変えていかないといけなかった 34 • 事業拡大でユニットエコノミクスも健全化が必要なタイミング。インフラコストの変化に気づくための確認 頻度の見直しや、インフラコスト増加に対する感度を上げておかなければならなかった • ユーザー数の増加に合わせて、書き込むログの内容やアラートの運用方法も見直しが必要だった PullRequest を小さく 小さな課題

    に分割 エンジニア全員での 日々のログ・ダッ シュボード確認 運用や保守、 カイゼンも一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブでの 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  12. 確認の考え方や粒度も変えていかないといけなかった 38 • 機能の使われ方もこれまでとは異なっていたため、 もう少し細かな粒度でモニタリングと検知をできるようにしておく必要があった PullRequest も小さく 小さな課題 に分割 エンジニア全員での

    日々のログ・ダッ シュボード確認 運用や保守、 カイゼンも一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  13. それ以外にも色んな考え方を変化させていく必要がある これまで 拡大期(大手法人導入〜) 一度に導入される店舗数 数店舗〜数十店舗 数百店舗 機能性と品質 AI在庫管理のコア機能であるおすすめ発注 など、魅力的品質が求められてきた 魅力的品質はもちろん、資産管理としての在庫管理と

    しても使われるため、当たり前品質も求められるよう になった 導入時のデータ投入 1店舗ずつなど進められた 同時に複数店舗の大量のデータ投入が必要になり、 データ投入時のシステム負荷が無視できない パフォーマンスとスケーラ ビリティ 除々に遅くなるなど変化が緩く、システム 全体の日々のモニタリングで十分に対処で きていた 導入店舗が急に増える、かつ、機能の使われ方も変 わったため、急なパフォーマンス変化が見られた。これ までよりも細かいモニタリングの粒度が必要だった モニタリングとアラート 日々のモニタリングで、対応が必要な場合 も十分に対処できていた システム規模が大きくなりこれまでのモニタリング粒 度では変化を把握できない アラート数も増え、対処が間に合わなくなる 運用 エンジニアの手動での運用でも十分に対応 できていた 店舗数が増えたことで日々の運用にかかる時間も増 えてきた インフラコスト PMFを優先し、ある程度無視できた 1店舗あたりのコストの健全性も事業継続のために重 要になってきた 39
  14. フィードバックループをさらに変化に強くする① 43 変化に合わせて日々の営みを変化させていくために チームが柔軟に動けるための余白を作る PullRequest も小さく 小さな課題 に分割 エンジニア全員での 日々のログ・ダッ

    シュボード確認 運用や保守、カイゼン、 そして余白も一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  15. フィードバックループをさらに変化に強くする② 46 変化に合わせて日々の営みを変化させていくために チームが柔軟に動けるための余白を作る PullRequest も小さく 小さな課題 に分割 エンジニア全員での 日々のログ・ダッ

    シュボード確認 運用や保守、カイゼン、 そして余白も一緒に プランニング ヒヤリハット含む インシデント対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析に よる効果検証 定期的な インフラコスト の確認 アラートの 確認と対応 さらに レビュー負荷 を小さく Deploy Monitor R elease Code Test Operate P lan Build
  16. 実際にこんなルールで取り組みを開始しました 1. PullRequestタイトルのプレフィックスを [Tidy] とつける 2. 変更内容が単一である (複数の変更をひとつのPullRequestに含めない) 3. 修正箇所のテストが存在し、テストが通っている

    (コメントのみの修正等は除く) 4. アプリケーションの挙動は変わっていないこと 5. 可逆的である (不具合が発生した場合は、このPullRequestをRevertするだけでよい) 6. 不具合が発生するリスクが低い自信を持てている (PullRequest 作成者の自己申告でよい) レビュー負荷軽減のため、レビューなしマージの取り組みを開始した 48
  17. 日々の営みにSLOを追加導入 53 PullRequest を小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 ペア・モブで

    検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析によ る効果検証 定期的な インフラコスト の確認 SLOによる サービスレベル 低下の検知 運用や保守、 カイゼンも一緒に プランニング ヒヤリハット含む インシデント対応 アラートの 確認と対応 Deploy Monitor R elease Code Test Operate P lan Build
  18. SLO導入による期待するフィードバックサイクル 55 PullRequest も小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 運用や保守、カイゼンも

    一緒にプランニング →サービスレベル低下 への対応を計画 ヒヤリハット含むイン シデント対応 →SLOを下回った場 合にインシデントと してチームで対応 ペア・モブで 検討・開発 シフト制の 運用作業 自動テスト CI/CD データ分析によ る効果検証 定期的な インフラコスト の確認 SLOによる サービスレベル 低下の検知 アラートの確認と対応 →エラーバジェットで アラート疲れを防止 Deploy Monitor R elease Code Test Operate P lan Build
  19. さらなる大手法人導入に向けて想定される課題 56 観点 想定される課題感 指標 可用性 特になし。 マネージドサービス中心に使用していること、24/365のシステムでは ない ー

    レイテン シー データ量増加に伴って一部のAPIにパフォーマンス の劣化の可能性 • APIごとのレイテンシー • APIごとのタイムアウト数 スケール 性 将来のスケールアウトが必要なタイミングの予測が 困難。 また、顧客数増加に対しての妥当な負荷増加なの か、不当な実装での負荷増加なのかの把握が難しい • 店舗数増加との関係値 • 店舗単位の負荷、リソース使 用量 データの 納期 データ量増加に伴って、バッチ処理が店舗の業務開 始に間に合わなくなる • 完了時間 データ品 質 使用傾向の異なる顧客が増え、AIの出力結果の品 質(精度)が下がる • 出力結果の制約に異常検知率 • 入力値や結果の分布変化値
  20. さらなる大手法人導入に向けて想定される課題 57 観点 想定される課題感 指標 可用性 特になし。 マネージドサービス中心に使用していること、24/365のシステムでは ない ー

    レイテン シー データ量増加に伴って一部のAPIにパフォーマンス の劣化の可能性 • APIごとのレイテンシー • APIごとのタイムアウト数 スケール 性 将来のスケールアウトが必要なタイミングの予測が 困難。 また、顧客数増加に対しての妥当な負荷増加なの か、不当な実装での負荷増加なのかの把握が難しい • 店舗数増加との関係値 • 店舗単位の負荷、リソース使 用量 データの 納期 データ量増加に伴って、バッチ処理が店舗の業務開 始に間に合わなくなる • 完了時間 データ品 質 使用傾向の異なる顧客が増え、AIの出力結果の品 質(精度)が下がる • 出力結果の制約に異常検知率 • 入力値や結果の分布変化値 SLOとして設定 オブザーバビリティ強化
  21. 業務領域の分類 おすすめ 発注 医薬品 売却 在庫管理 それ以外 の発注 複雑さ 顧客にとっての価値

    処方箋 管理 本部管理 中核の業務領域 補完の業務領域 一般の業務領域 一般または補完の業務領域 システムの規模が大きくなり、APIだとしても一律の考え方では適切な設定が難しい。 機能を業務領域で分類し、その分類ごとに設定する 59
  22. 二段階のSLO設定 目的 スコープ 目標値の考え方 守りのSLO • ユーザー数の増加や 機能追加による変化 によるシステムの安定 稼働を守る

    • 不要なアラートへの対 応を抑制、アラート疲 れを防ぐ • 現状課題が見られる 指標 • 大手導入の拡大期に おいて課題が想定さ れる指標 • 設計が妥当かどうか を示す値 • 現状よりも急激に悪 化していないかどう かを確認できる値 攻めのSLO ※実態としては組織 OKRに近いがSLO の仕組みで運用する • エンジニアが主体的に システムを良くしてい くために、背中を押し てくれる • 将来目指したいシス テムの状態を測る指 標 • エンジニア主体でで きるユーザー体験を 向上させる指標 • 現在地からすると ムーンショットな目 標値
  23. 守りのSLOと攻めのSLO 65 PullRequest も小さく 小さな課題に 分割 エンジニア全員での 日々のログ・ダッシュ ボード確認 運用やカイゼンも一緒に

    プランニング →サービスレベル低下 への対応を計画 ヒヤリハット含む インシデント対応 →SLOを下回った場 合にインシデントと してチームで対応 ペア・モブ中心 の検討・開発 シフト制の運用作業 自動テスト CI/CD データ分析によ る効果検証 定期的な インフラコスト の確認 【守りのSLO】に よるサービスレ ベル低下の検知 【攻めのSLO】に よる目指す姿の 明確化 できた余白と目 標によって主体 的なカイゼン エンジニアが主 体となってBiz側 とサービスレベ ル向上の提案 アラートの確認と対応 →エラーバジェットで アラート疲れを防止 Deploy Monitor R elease Code Test Operate P lan Build