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

ノーコードAI開発SaaS裏側 〜GCPで完結!KPI分析指向のログ設計から可視化まで〜

Avatar for skmochi skmochi
August 21, 2023

ノーコードAI開発SaaS裏側 〜GCPで完結!KPI分析指向のログ設計から可視化まで〜

Avatar for skmochi

skmochi

August 21, 2023

More Decks by skmochi

Other Decks in Technology

Transcript

  1. KPIとは? - KPI: Key Performance Indicator - 目標到達のための計測可能な指標 - これが伸び悩んでいた場合は軌道修正が必要

    - プロダクトオーナーは頻繁に確認したい KGI プレミアム会員の 月額課金収益 NSM 月間楽曲再生時間 KPI プレミアム会員数 KPI セッション数 /週 SpotifyのKPI例 (一部抜粋) ※1 ※1 https://amplitude.com/north-star/getting-started-running-a-north-star-workshop
  2. Node-AIのKPI - 1人当たりのカード実行の成功回数 / 週 - ユーザがどれだけNode-AIを利用しているか - ユニークユーザ数 /

    週 - どれだけ集客できているか KGI XXX NSM XXX KPI 1人当たりのカード 実行の成功回数 /週 KPI ユニークユーザ数 /週 Node-AIのKPI例 (一部抜粋)
  3. 最終的な構成 GKE版 Node-AI オンプレ版 Node-AI API サーバー Worker API サーバー

    Worker ※ サンプル GCP Project: A GCP Project: B KPIの可視化 他にもマイクロサービスが複数あり 他にもマイクロサービスが複数あり
  4. 最終的な構成 (課題部分) GKE版 Node-AI オンプレ版 Node-AI API サーバー Worker API

    サーバー Worker ※ サンプル GCP Project: A GCP Project: B KPIの可視化 ログを構造化
  5. 最終的な構成 (課題部分) GKE版 Node-AI オンプレ版 Node-AI API サーバー Worker API

    サーバー Worker ※ サンプル GCP Project: A GCP Project: B KPIの可視化 トレース可能なロ グにする
  6. 最終的な構成 (課題部分) GKE版 Node-AI オンプレ版 Node-AI API サーバー Worker API

    サーバー Worker ※ サンプル GCP Project: A GCP Project: B KPIの可視化 Cloud Loggingに 適したログ形式
  7. 最終的な構成 (課題部分) GKE版 Node-AI オンプレ版 Node-AI API サーバー Worker API

    サーバー Worker ※ サンプル GCP Project: A GCP Project: B KPIの可視化 オンプレ環境 からログを転送
  8. BigQueryへの保存前提でログをjson形式で構造化 - 方法1: python-json-loggerライブラリ - 今回はこれ前提で話を進めます - 方法2: Python用Google Cloud

    Logging ライブラリ - 特にこだわりがないならこれがおすすめ - ログレベルや転送の設定が基本的に不要、ログ書き込み権限を付与するだけ timestamp api user card 2023-... api/v0/xxx user1 hoge … … … … Cloud Logging BigQuery ログルーター
  9. KPIによっては複数のマイクロサービスをまたぐ処理をトレースする必要がある その際は専用のユニークな IDを振って対応する 別マイクロサービス間でもトレース可能なログにする GKE版 Node-AI API サーバー Worker ログ例

    { "user": "xxx", "api": "api/v0/yyy", "traceID": "zzz" } ログ例 { "cardType": "欠損値補間", “result”: “success”, "traceID": "zzz" } task情報にtraceIDを入れて Workerに渡す KPI: 1人当たりのカード実行の成 功回数 / 週 を計測できる
  10. ログレベルのvalueに対するkeyは”level” or “severity”にしないとGUI上で適切に表 示されない Cloud Loggingのログレベルに適したkey-valueを設定する {level_name: “ERROR”} として出力した場合 エラー表示にしたいのにinfoア

    イコンとなってしまう ※ Cloud Loggingライブラリ使用の際は対応不要 keyを“severity”にすると jsonPayload項目に 載らないのでおすすめ {level: “ERROR”} として出力した場合
  11. fluent bitを使ってCloud Loggingに転送する fluent bitをデプロイしてオンプレ環境のログをCloud Loggingに転送する設定を入れる - DaemonSet: ノード単位でログを送信 -

    Sidecar: Pod単位でログを送信 Pod fluentbit ConfigMap fluentbit config Secret GSA key [OUTPUT] Name stackdriver [PARSER] Format json ログの書き込み権限 環境変数 GOOGLE_APPLICATION_ CREDENTIALS=key.json を設定 volumeMount ※ Cloud Loggingライブラリ使用の際は対応不要
  12. - スプリント毎のKPIを可視化する仕組みを作った - 最終的な構成から逆算してログ設計や転送設定などを行った - 楽したいならCloud Loggingライブラリを使うべき - 代替手段はpython-json-logger +

    fluent bit - もしオンプレ or GCP基盤を利用していてまだKPI計測を行っていない、という方が いれば是非やってみてください まとめ