本文へスキップ
MameTechNews
バックエンド

Vercel、常駐ワーカーDaemonsのパブリックベータを開始

## POINTS

  • キューのポーリング、CeleryやBullMQ、Temporal、受信不要のCIランナーを本番コンテナとして常駐させられる。
  • Hobbyは月10 Active CPU時間で待ち時間は数えない。Proは同時16 vCPU、32GiBまでがベータの既定枠である。
  • プレビュー、受信ポート、オートスケール、ディスク永続化はベータ中は使えない。台数と外部への状態保存を先に決める。

Vercelのchangelogによると、DaemonsはFluid compute上のコンテナで、終了やクラッシュのあと再起動し、設定した台数をリージョンごとに維持する。対象として挙げているのは、Vercel Queuesのポーリング、Celery、BullMQ、RabbitMQ、Kafka、TemporalやCadenceのワーカー、受信接続なしでジョブを取りにいくGitHub Actions、GitLab、CircleCIのセルフホストランナーである。

設定はプロジェクト直下のvercel.json、vercel.ts、vercel.tomlのいずれかにdaemonsを書く。掲載例はworker/Dockerfileをiad1で1台起動するものだ。接続情報は本番の環境変数に置き、標準出力はプロジェクトのログに出る。CPUとメモリのメトリクスはObservability Plusで見られる。

ベータの制限はドキュメントに列挙されている。メモリは1、2、4、8GiBから選び、既定は2GiB。CPUアーキテクチャはLinux amd64のみ。SIGTERM後の猶予は既定10秒で、terminationGracePeriodSecondsにより最大3600秒まで延ばせる。Hobbyは1GiBか2GiBに限られ、チームあたり月10 Active CPU時間で、待ち時間は数えない。上限に達するとそのチームのデーモンはすべて止まり、翌月かProへの変更で再開する。Proは同時に16 vCPU、32GiBまでである。

プレビューデプロイ、受信HTTPやTCP、オートスケール、ローカルディスクの永続化、vercel devでの起動、ルートディレクトリがサブフォルダのプロジェクトは未対応だ。サーバレスの実行時間に収まらないワーカーを同じデプロイへ置く仕組みであり、台数は固定し、状態はBlobか外部のデータベースに置く前提で設計する。