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

可観測性を目的思考で捉え直す_-Squadが自律的に改善できるO11y基盤づくり_Ra...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 可観測性を目的思考で捉え直す_-Squadが自律的に改善できるO11y基盤づくり_Railsモジュラーモノリス___DevPlatform_Squadの取り組み-.pdf

Avatar for Shuhei Kanamori

Shuhei Kanamori

February 10, 2026
Tweet

More Decks by Shuhei Kanamori

Other Decks in Programming

Transcript

  1. 2層構造の組織設計 【実組織】プロダクト本部・エンジニアリング本部 └─ 責務: メンバーのスキル・キャリア・Well-being支援 【仮想組織】Tribe / Squad(バリューストリーム) └─ 責務:

    顧客価値をスピード感を持って実現 └─ 各Tribeが重要指標(KPI)に責任を持つ └─ Tribeの配下にSquadが存在 • メンバーは両方に所属(マトリクス型) • 「個人の成長」と「価値提供」の責務を分離し、異動のアジリティを確保
  2. Tribe/Squad制とKPI 【仮想組織 - マッチングTribe】 └─ KPI: 稼働率(募集に対する実稼働率) └─ 申し込み、マッチング等を担当するSquadが存在 【仮想組織

    - スポットワークシステムTribe】 └─ KPI: 信頼性 └─ 勤怠、決済等を担当するSquadが存在 • 各SquadにPdM/Engineer/Designer/Analystが属し、TribeはGroup PdMが統括 • ユーザージャーニー、顧客価値はSquadが強く向き合う
  3. モジュラーモノリスアーキテクチャ Railsモジュラーモノリス(Packwerk活用) packs/ ├─ attendances/ # 勤怠機能 ├─ payments/ #

    決済機能 ├─ offerings/ # 募集機能 └─ ... # その他多数 • ビジネスドメイン単位でパッケージを分割 • 各パッケージ ≒ Squad の責務領域
  4. CODEOWNERSでチーム責務を明確化 .github/CODEOWNERS /packs/attendances/ → 勤怠機能担当Squad /packs/payments/ → 決済機能担当Squad /packs/offerings/ →

    募集機能担当Squad • コードとチームが紐付く • PRレビューの自動割り当て • 「誰に聞けばいいか」が明確化
  5. なぜこの前提が重要か 組織構造 × Railsアーキテクチャ → Squadごとの自律改善が重要 各SquadがKPIに責任を持つ └─ KPIに紐づくUJ/SLOがある └─

    ドメイン単位でコードとチームを紐付ける └─ Squadが自律的に改善できる仕組みが必要 → この前提があるから「目的思考のO11y」が機能する
  6. ✨ 理想:メトリクス、APMで問題を早 期発見・改善 • Datadogを導入した • ダッシュボードを作った • アラートを設定した よくある失敗パターン(課題の整理)

    ⚠ 現実:形骸化しがち • メトリクスは取っているが活用できて いない • アラートが鳴っても反応がない • ダッシュボードを作ったが見ない なぜ? → 目的が不明確だから
  7. Squadが自律的に改善するには何が必要? 「どのインデックスがなんで遅いか」がわかること -> 現状わかっていない 目的から逆算してメトリクスを取得する 再整理の結果: • Elastic Cloud Integrationだけでは不

    足 • Datadog Agent経由でESを直接叩くこ とでIndex単位の詳細メトリクスが取得可 能と判明 → 目的(Squadが自律改善できる)から逆算して必要 なメトリクスを確認する → 「なんとなく連携」から「目的思考の連携」へ
  8. まとめ:目的思考のポイント ❌ Before: どのメトリクスを取る か? → ツール起点、手段が目的化 ✅ After: なぜそのメトリクスが必要なの

    か? → 目的起点、改善方法から逆算 • 「何を計測するか」より「なぜ計測するか」 • 目的が不明確だと形骸化する • 具体的な改善イメージから逆算して必要なメトリクスを取得する
  9. ボトルネックの割合として大きいのはデータベース Rails × APMありがちなボトルネック ✅ APMにDatabase Monitoringを 紐付ける → クエリのExplainがAPMに紐づく

    ことで改善オポチュニティを探索し やすくなる •Active Recordの抽象度が高い → 意図せず重いクエリが発行さ れがち • N+1問題も起こりやすい → こちらはAPMのスパン数から わかり、ゼロコード計装でも気づくこ とが可能
  10. 🙅やっていないこと • 各Squadの代わりにSLO/CUJを 決める • 各Squadの代わりにパフォーマン ス改善する(あくまでやる時は Squad Drivenでコラボレーションす る)

    O11yにおけるDevPlatform Tribe/Squadの役割 🙆やること • O11y基盤整備(code_ownerタ グ、DBM連携等の新機能活用) • 定点観測による最低限の品質担 保 • 複雑な性能問題をSquadとコラ ボレーションして解決
  11. まとめ:Squadが自律改善できる状態へ 1. 目的から逆算してメトリクスを取得 → 「何を取るか」より「なぜ取るか」 → 目的が不明確だと形骸化する 2. コード ×

    Squad × APM/DBMを紐付ける → code_ownerタグで「誰が改善すべきか」を明確に → DBM連携でRailsのありがちなボトルネック( DB)に対処 3. プラットフォームチームは基盤整備とイネーブラーに徹する → 各Squadが自律的に改善できる状態を作る → Squadの代わりに決めたり改善を行うことはしない