langfuse 調査...

langfuse を LLM ローカルアプリケーションのログ蓄積、分析環境として利用したい。
docker compose でさくっと立ち上げられるが、ECS, k8s 上に構築して大規模運用を念頭において...
手元で試す環境は kun432 さんの上記記事見てやるとよい。いろんな視点で試されていてとても参考になる。。

client から大量に API が叩かれたとき、web タスク(ECSでいうタスク) がスケールすれば良い構造なのか?
アーキテクチャ図があるね。
ん? client から API 叩いたら Prisma 経由で PostgreSQL に格納するケースと、 woker に渡すケースがあるの? 書き込み系は Worker 経由か?おぉぉぉぉ
API 使用には Trace の POST は無いんだけど
ソース上は POST がある
ingestion.ts: handleBatch
ingestion.ts: handleSingleEvent
event-service.ts: persistEventMiddleware
で INSERT INTO events (id, project_id, url, method, data, headers)
として PostgreSQL に INSERT してる。このあと
EventProcessor.ts: TraceProcessor が実行されて DB を upsert で更新してる。
ここまで同期実行に見えるな。INSERT + UPSERT 実行してて API 実行時の負荷ありそうね。
API 同時実行数を上げると、PostgreSQL がネックになりそう。
ちゃうちゃう、worker への動線はどの処理だ? POST Trace じゃない API なのか。もう少し見てみるか。
langfuse/langfuse/worker is under active development and not recommended for production use in Langfuse 2.x
あーなるほど。

AWS 構成...作るならこんな感じ?
Redis はコンテナ実行でいいんじゃないかなー、いや、ダメか。Redis 冗長化されると困るのかクラスタ組むのめんどいな。Elasticcache 使うか。ちゃうな https://github.com/langfuse/langfuse-k8s 見てると web/worker/redis が1タスクに収まっていれば良いので問題無さそう。

Redis
ここから Redis にデータを放り込んで、
Redis consumer がデータ処理してる
うーん、何してる?わからん、詳細は気が向いたら見よう
WEBAPI の Post 書き込みには Redis は使ってなさそう。まぁ、 Post に対して 202 を返してキューをあとで処理する...みたいな実装にするってのは API 実装としてはダメなのかな。