## What — API と job の違い
- **コスト**:1実行あたりの単価だけ見るとjobの方が高くなりやすい(実行のたびにサーバーを新しく立ち上げる必要があるから)。なので、インジェスチョンのように「たまに走る重い処理」は、常時待機のAPIを持つよりjobの方がコスト的にも実装されやすい
| 観点 | API | job |
|---|---|---|
| 起動方法 | HTTPリクエストで起動 | 実態はコマンド実行(今回はgcloudコマンド) |
| 起動時間 | 一度立ち上げたら常に待機しているので即座に応答できる | 毎回サーバーを立ち上げるので起動に時間がかかる |
| デバッグのしやすさ | 1つのサーバーにいろんなデータのインジェスチョンのログが混ざるので追いづらい | 実行ごとにサーバーが分かれるので、ログも実行単位で分かれて見やすい |
## How — 使い分け
- 比較的小さいリクエストを大量に捌く場合(例:Xのようなサービス)→毎回サーバーを立ち上げると逆に遅いのでAPI
- インジェスチョンのように時間がかかる処理→job実行
> [!success] 結論
> インジェスチョンのように時間がかかる重い処理は**job実行**で実装する。逆に、短くて大量のリクエストを捌くなら**API**。社内データ基盤のインジェスチョン方針はjob実行。
## 関連
- [[データ基盤]]
- [[Cloud StorageとBigQuery]]