Slide 1

Slide 1 text

LLM機能を支えるLangfuse/ClickHouseの サーバレス化 2025-08-08 ゆるSRE勉強会 #12

Slide 2

Slide 2 text

自己紹介 自己紹介 上原 佑介 インフラエンジニア → SRE 株式会社LayerX バクラク事業部 Platform Engineering部 SREグループ AWS, Datadog, Terraform あたりをよく触る 好きなこと 旅行、飛行機 ゲーム (Switch 2 まだ買えていません) © LayerX Inc. 2

Slide 3

Slide 3 text

バクラクについて

Slide 4

Slide 4 text

バクラクについて © LayerX Inc. 4

Slide 5

Slide 5 text

バクラクの LLM 関連機能 © LayerX Inc. バクラクについて 2025年7月に AI 申請レビュー 機能をリリース 申請作成時に AI が内容をリアルタイムでレビュー 社内ルールとの整合性や申請内容の妥当性を自動で判断 5

Slide 6

Slide 6 text

LLMOps 基盤の構築

Slide 7

Slide 7 text

LLMOps 基盤として Langfuse を採用 Langfuse / ClickHouse とは LLM 機能の開発や検証用プラットフォーム プロンプトのバージョン管理 モデルごとの精度検証・比較 LLM 実行結果のトレース記録・スコア計測 AI レビュー機能の計測基盤として活用 AI エージェントの開発など、今後さらに重要になる基盤 © LayerX Inc. 7

Slide 8

Slide 8 text

Langfuse インフラ構成 © LayerX Inc. Langfuse / ClickHouse とは クラウド版とセルフホスト版がある クラウド版は日本リージョンがなく、データ管理の観点からセルフホストを選択 データストアとして PostgreSQL, S3, ClickHouse を用いる 8

Slide 9

Slide 9 text

ClickHouse とは Langfuse / ClickHouse とは オープンソースの分析向け (OLAP) 列指向データベース Langfuse トレース結果等の格納先として利用 書き込まれたデータはブロックストレージで保管される AWS の場合は EBS や EFS など 今回は EFS を採用 複数サーバによるクラスタ構成に対応 レプリケーションを組むことで冗長化 クラスタ管理用の ClickHouse Keeper を使う © LayerX Inc. 9

Slide 10

Slide 10 text

インフラ構成図 Langfuse / ClickHouse とは 主要リソース Langfuse ClickHouse ClickHouse Keeper 図にない関連リソース Aurora PostgreSQL Redis (Valkey) S3 EFS Langfuse Worker © LayerX Inc. 10

Slide 11

Slide 11 text

インフラ構成図 Langfuse / ClickHouse とは 大きく分けるとこんな感じ ブラウザ → Langfuse → ClickHouse ブラウザが LLM 実行結果を Langfuse へ送信 Langfuse は ClickHouse にトレースを記録 ClickHouse は EFS にデータを書き込み ClickHouse Keeper でクラスタ管理 これをサーバレス構成で構築した © LayerX Inc. 11

Slide 12

Slide 12 text

サーバレス構成の工夫

Slide 13

Slide 13 text

ECS on Fargate 構成を目指す © LayerX Inc. サーバレス構成の工夫 バクラクの大部分は ECS on Fargate 構成を揃えることで既存のプラットフォームを活用できる CI/CD や監視設定などを共通化・自動生成できる EC2 インスタンス管理の手間を省きたい 実現に向けての課題 Langfuse 特に大きな問題なし、そのまま ECS on Fargate で複数台起動できた ClickHouse ECS で起動するために満たすべき要件がいくつかある 13

Slide 14

Slide 14 text

ClickHouse ECS 構成の課題 サーバレス構成の工夫 サーバごとに設定値が異なる 重複しない server_id の指定が必要 単に同じタスクを複数立てるだけではうまく 動かない サーバ間で 1:1 通信が必要 例えば ClickHouse #1 は ClickHouse Keeper #1, #2, #3 を識別して通信する必要がある ロードバランサを挟むと #1, #2, #3 のどこへ 届くかを制御できない 1サーバ = 1 ECS Service として構築 © LayerX Inc. 14

Slide 15

Slide 15 text

ECS Service 分離設計 © LayerX Inc. サーバレス構成の工夫 1サーバずつ1つの ECS Service として5サービス構築 ClickHouse #1 ClickHouse #2 ClickHouse Keeper #1 ClickHouse Keeper #2 ClickHouse Keeper #3 ECS Service Discovery で個別にドメイン名を付与、サービス間は直接通信 特定のサーバを指定して 1:1 通信可能に ECS Service Connect も検討したが、同一ホスト名で複数ポートの開放に対応しておらず断念 15

Slide 16

Slide 16 text

ECS Service 分離設計 © LayerX Inc. サーバレス構成の工夫 サーバ間の設定差分は環境変数で吸収 設定ファイルやコンテナイメージは共通化 タスク定義でサーバごとの設定値を注入 16

Slide 17

Slide 17 text

インフラ構成まとめ サーバレス構成の工夫 Langfuse ALB 経由の ECS on Fargate 単一の ECS Service、Auto Scaling 有効化 ClickHouse NLB 経由の ECS on Fargate サーバごとに個別の ECS Service を作成 内部通信はロードバランサを挟まず直接通信 © LayerX Inc. 17

Slide 18

Slide 18 text

完成! めでたしめでたし

Slide 19

Slide 19 text

無事稼働! と思ったら…… © LayerX Inc. ClickHouse パフォーマンス問題 毎日のようにタスクが不安定な状態に デプロイ時にタスクの入れ替えに失敗する Langfuse がトレースを記録できなかったとエラーを吐く Max attempts reached for * record. Dropping record. Langfuse / ClickHouse ともに CPU やメモリには余裕がある 19

Slide 20

Slide 20 text

タスクについて詳細調査 © LayerX Inc. ClickHouse パフォーマンス問題 開発チームや MLOps エンジニアの協力で詳細調査 ClickhouseWriter.writeToClickhouse Error: Timeout error. のログが出ていた ClickHouse への書き込みが頻繁にタイムアウトする状態 EFS メトリクスで Throughput utilization が常に高いことが発覚 20

Slide 21

Slide 21 text

EFS スループットモードについて © LayerX Inc. ClickHouse パフォーマンス問題 EFS にはスループットモードが3種類あり、要件に合わせて選択可能 Elastic: 利用状況に合わせて自動的にスケール Bursting: ストレージ使用量に比例してスループットも増える Provisioned: 指定したスループット量を固定で確保 該当の EFS は Bursting になっていた 使い始めたばかりで使用量は 3~4GiB ほど ストレージ 1GiB あたり 50KiBps のスループット枠 → 200KiB/s ほどしかない Bursting → Elastic へ変更して状況が改善した AWS コンソールの初期値は Elastic ただし Terraform aws provider の初期値は Bursting なことを見落としていた (凡ミス) 21

Slide 22

Slide 22 text

EFS 設定変更により安定稼働! © LayerX Inc. ClickHouse パフォーマンス問題 ボトルネックが解消したことで ClickHouse が安定するように タイムアウトエラーが解消 デプロイ時のタスク入れ替え失敗も起きなくなった ClickHouse が安定したことで Langfuse のエラーも解消 設定変更後、トレースの記録失敗は0件 Langfuse 上でのオペレーションも高速化された 不十分であった EFS の監視項目も追加 22

Slide 23

Slide 23 text

さいごに

Slide 24

Slide 24 text

まとめ 関連記事 LangfuseのTrace書き込み失敗から学ぶLLMOpsを支える技術 https://tech.layerx.co.jp/entry/deep-dive-clickhouse Langfuse用のClickHouse冗長構成をAWS Fargateで実現する https://tech.layerx.co.jp/entry/2025/05/02/123428 © LayerX Inc. まとめ Langfuse / ClickHouse サーバレス構成の実現 ECS on Fargate + EFS にて構築 サーバ間の 1:1 通信を実現するため ECS Service を分離 Service Discovery による同一ホスト名・複数ポートの通信を可能に EFS パフォーマンス問題 ClickHouse 本体を気にしすぎて後ろにある EFS の調査が遅れた スループットモードの選択と使用率には要注意 24

Slide 25

Slide 25 text

エンジニア積極採用中! We are hiring! SRE を含めた幅広い職種で募集中です! 新規プロダクトや新しい要件が今後も次々と出てきます パフォーマンス改善などやれることが沢山あります 採用サイトが今月リニューアルされました! 質問に答えるとパーソナライズされた採用ページが生成 されます ぜひ一度試してみてください! © LayerX Inc. 25