Closed1

ミドルウェアが出力するクライアントの大量の統計情報を気軽に扱うにはどうすればいいか

voluntasvoluntas

現状

  • ミドルウェアが出力する大量のクライアントの統計情報の扱いが難しい
  • リアルタイムな統計情報なので短い間隔で取りたくなる
  • ミドルウェアから HTTP/2 でゲートウェイに送りそこから TimescaleDB で保存するという仕組みを用意している

課題

  • TimescaleDB 別にそこまで性能良くない
    • PostgreSQL の拡張というのもあり限界がある
    • 無理に TimescaleDB 使う必要ない
  • 無理に HTTP/2 使う必要はもうないのでは?
    • 短い間隔で取得した統計情報を入れようと思い HTTP/2 にしたが HTTP/1.1 + JSON で大丈夫そう

現状

  • DuckDB や ClieckHouse といった S3 などにおいた JSON を直接を読み込むといった機能が一般的になってきてる
  • JSONL で出力したログを fluent-bit で S3 などに保存したりで十分なのでは?

方針転換

  • HTTP/1.1 + JSON のウェブフックで十分そう
  • ウェブフックがしんどい場合はログ出力で十分そう
    • ただしログ出力がミドルウェアの負荷になる可能性もある

DuckDB か ClickHouse か

  • DuckDB は仕組みがとても気に入っているが長期的な保存や冗長構成は取れない
    • あくまで一時的な解析ツールとして利用が現実的
    • チョットした解析ではとても便利
      • jq 的な利用としても可能
  • ClickHouse はデータをため込める
    • ClickHouse Cloud がシンガポールリージョンだが、思ったより安い
    • 圧縮もしてくれる
    • Go のクライアントも二種類公式が用意してくれる
    • 機能的に DuckDB とあまり差が無い

細かい統計情報をとりたいなら、ログに出力して解析が無難。
ClickHouse でも DuckDB でもログファイルを解析して取り込んでくれる。

今後はこちらの流れに合わせるのが良さそう。

このスクラップは2ヶ月前にクローズされました