[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】Stena Expenseの検知アーキテクチャ ── Go × Python × gRPCで不正検知を実現する仕組み [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

膨大な経費データの目視確認は、コストと精度の面で限界がある。解決すべき課題は以下の通り。

  • 組織ごとに異なるデータ形式への対応。
  • 重複申請や統計的異常など、多様な不正パターンの検知。
  • データ取り込みから集計まで、多段階の複雑な工程と状態管理。
  • 生成AIのみでは、これら複雑なワークフローと精度の両立が困難。

// Approach

1.**ハイブリッド構成**: Go(Controller)でドメイン管理を行い、Python(Predictor)でML処理を分離。
2.**ワークフロー制御**: Google Cloud WorkflowsとCloud Run Jobを用い、各ステップを順次実行。
3.**gRPCコールバック**: PredictorからControllerへ直接結果を送信。Cloud Run Jobによるデータ中継を排除し、メモリ効率を向上。
4.**動的モデルロード**: preprocessorとdetectorをPickle化してGCSに保存。アプリの再デプロイなしでモデル更新を実現。
5.**厳密な状態管理**: Goのドメインモデルで検知ステータスを管理。不正な状態遷移を防止。

// Result

  • 言語の強みを活かした、堅牢かつ柔軟な検知基盤の実現。
  • 検知モデルの更新とプロダクトのデプロイサイクルの完全分離。
  • 大量の検知結果に対するメモリ効率とスケーラビリティの確保。

Senior Engineer Insight

>

GoとPythonの役割分担が極めて合理的だ。ビジネスロジックの堅牢性とMLの柔軟性を、gRPCコールバックという高度な通信手法で繋いでいる。特に、Cloud Run Jobを単なる中継器にせず、PredictorからControllerへ直接結果を叩き込む設計は、メモリ効率とネットワーク負荷の観点から実戦的だ。Pickleによる動的ロードも、モデル更新頻度が高いML領域では運用コストを劇的に下げる。ただし、分散システムにおける状態管理の複雑性は、厳密なステートマシン設計で補完する必要がある。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。