next.jsでバックグラウンド処理を実行する方法を整理する

inngest
例:
少し難しい😅この記事がわかりやすそう

シンプルなジョブはvercelのEdge Functionsで良さそう
とてもシンプル
app routerでもapiルートで使うのがデフォな感じする(cronでスケジューリングして外から処理を行うんだからそうか)

supabaseのedge functionsという手もある
簡単そう
公式:

netlifyはscheduled function

nestjsはtask scheduling

awsはsqsやlamdaでcron実行したり

そういえばランタイムの問題があるんだった
webrunnerの24hはすごいが逆に怖い気もする

firebaseはcloud functions

gcpはcloud functions

バックグラウンド処理例

cron(読:クロン、クーロン、クローン)とは
UNIX系のOS(Linuxとか)に入っているプログラムのひとつ
であり
事前に「いついつになったら、このプログラムを動かしてね」と指示を出しておくと、その時間になったときに指定しておいたプログラムを動かしてくれるやつ
です。
https://wa3.i-3-i.info/word11748.html
cronだとunix系の話で、該当手法がunixかは不明なら
・スケジュールドタスク
・スケジューラー
・スケジューリングタスク
・定期バッチ処理
など呼ぶのが良さそう。バッチ処理を定期実行の処理として呼ぶのはどうなのかといった記事を見た気がするが忘れた。
バッチ処理(バッチしょり)とは、コンピュータで1つの流れのプログラム群(ジョブ)を順次に実行すること。あらかじめ定めた処理を一度に行うことを示すコンピュータ用語。反対語は対話処理・インタラクティブ処理またはリアルタイム処理。
引用: Wikipedia - バッチ処理
つまりWebアクセスのようなリアルタイム処理ではなく、毎時とか日次とか月次とかでまとめて処理を行う方式です。
https://qiita.com/koduki/items/e90ee1fea5aa75071d95

専用のツール系はサービス終了リスクもある
例:

その他
Upstash's QStash
Pipedream
Cronhub
Zeplo
Mergent
参照:https://vercel.com/guides/how-to-setup-cron-jobs-on-vercel

参考:
デモ:
下記のようにapiを呼び出してスケジューリングできる。
solutions/cron/vercel.json
{
"buildCommand": "pnpm turbo build",
"ignoreCommand": "pnpm dlx turbo-ignore",
"crons": [
{
"path": "/api/cron/1m",
"schedule": "* * * * *"
},
{
"path": "/api/cron/10m",
"schedule": "*/10 * * * *"
},
{
"path": "/api/cron/1h",
"schedule": "0 * * * *"
},
{
"path": "/api/cron/12h",
"schedule": "0 */12 * * *"
},
{
"path": "/api/cron/1d",
"schedule": "0 0 * * *"
},
{
"path": "/api/cron/1w",
"schedule": "0 0 * * 0"
},
{
"path": "/api/cron/1mo",
"schedule": "0 0 1 * *"
}
]
}