stackbook

← 作るもの

データ集計・バッチ

夜間の一括計算、分析

条件集計 · PaaS · 制約なし

推奨:SQL+Python(Polars)

推奨

SQL+Python(Polars)

  • 集計はまずSQLで書くのが最短で、SQLで表現しにくい変換だけPythonにする(§2-9)

構成行を開くと詳細(乗り換える条件・根拠・費用・習熟度)

集計SQL(DuckDB、BigQuery、Postgres)

SQL

既定:データ分析・集計作成物ごとの言語の決め方

乗り換える条件

  • Python(Polars)SQLで表現しにくい変換があるとき
変換Polars

Polars

公式サイト ↗

既定:データ処理Python(AI/ML、データ処理が必要な場合に限定)

乗り換える条件

  • pandasライブラリ連携上必要なとき

代替:データ分析・集計作成物ごとの言語の決め方

既定は SQL(DuckDB、BigQuery、Postgres)。SQLで表現しにくい変換があるとき に乗り換える。

Python環境uv(Python本体の導入からロックファイルまで1本)

uv

公式サイト ↗

既定:バージョン・依存管理Python(AI/ML、データ処理が必要な場合に限定)

乗り換える条件

  • Poetry既存プロジェクト

ケース別の構成§19

  • AI/LLMプロダクトAIバックエンド:LLM API呼び出し中心ならHono(TS)、埋め込み・ML処理があるならFastAPI(uv、Ruff、Pydantic)
ワークフローTemporal(長時間・複雑なもの)

Temporal

公式サイト ↗

選ぶ場面§2-10

  • 長時間ワークフローリトライ・待機・状態保持をエンジンに任せる

既定:ワークフローキャッシュ・キュー・ストリーム

乗り換える条件

代替:ジョブPython(AI/ML、データ処理が必要な場合に限定)

既定は Celery。長時間ワークフロー に乗り換える。

ケース別の構成§19

  • AI/LLMプロダクト長時間処理:Temporal、またはInngest

習熟度

実行Render または Fly.io

Render

公式サイト ↗

既定:自由に選べる・Webアプリどこで動かすか

乗り換える条件

既定:PRプレビュー環境CI/CD・リポジトリ運用

乗り換える条件

  • Neonのブランチ機能と組み合わせてDBも分離

代替:デプロイRuby / Rails

既定は Kamal。サーバー管理をしたくないとき に乗り換える。

成長したら → AWS(ECS+RDS+Terraform)§24

きっかけ
閉域網・監査・細かい権限管理が必要になった
最初からの備え
Dockerfileでビルドし、設定はすべて環境変数から読む

ケース別の構成§19

  • 業務システム・社内ツール(Rails構成)デプロイ:Kamal(オンプレVM・VPS)またはRender

Fly.io

公式サイト ↗

既定:自由に選べる・Webアプリどこで動かすか

乗り換える条件

代替:デプロイRuby / Rails

既定は Kamal。サーバー管理をしたくないとき に乗り換える。

成長したら → AWS(ECS+RDS+Terraform)§24

きっかけ
閉域網・監査・細かい権限管理が必要になった
最初からの備え
Dockerfileでビルドし、設定はすべて環境変数から読む

作り始める

共通の準備

# 言語・ツールのバージョン固定(使う言語だけ)
mise use node@lts pnpm@latest
mise use go@latest
mise use ruby@latest
mise use python@latest uv@latest

# Gitフックと依存更新
pnpm add -D lefthook && pnpm exec lefthook install
# renovate.json を置き、GitHubでRenovateアプリを有効化する

次に読む