ワーカーの開発はGCPのCloudTasksとCloudSchedulerがDX最高

1 min read読了の目安(約900字

皆様、ワーカーを書く時ってどういう構成にしていますかね?
昔だとRabbitMQとか使って、常駐しているサーバーからPull的に取って処理する…とかですかね。
クラウドがどんどん便利になっている昨今 古き良き手法 AWS SQS とかも業務で使ってみましたが、その中で最もDXが良かったのが
GCP CloudTasks と CloudScheduler でした。

それってなーに?

CloudTasks

GCPで用意されているマネージドなタスクキュー

https://cloud.google.com/tasks/docs/dual-overview?hl=ja
皆がタスクキューに求める機能が一通りある上に、管理がすごく楽
多くの場合、お金はほぼかからない

CloudScheduler

GCPで用意されているcron
皆がcronに求めてる機能が一通りあって、管理がすごく楽
多くの場合、お金はほぼかからない

今北お。何が良かったのが3行で

  • トリガーがHTTPなので開発&デバッグがしやすい
  • Queueの管理がコードで出来てCI/CDも出来る
  • GCPの各機能と連携されているので管理や構築が超ラク

トリガーがHTTPなので開発&デバッグがしやすい

とにかくこれが最高でした。
普段どおりAPIを作るだけでいいし、手元で動作確認するのもデバッグノウハウが世に溢れているHTTPなので困ることがない。
pull実行ではないので、実行先のサーバーがオートスケールな構成になっている等の高負荷時に対応できる構成である必要があると思います。

Pull型も簡単に作りたいよ

Cloud Pub/Sub + Appengine Flexible Custom Runtime の組み合わせが一番シンプルかと思います。
AppengineのCustomRuntimeなら、好きなアプリケーションをDocker形式で記述すればインストールできるし、内容もHTTPサーバーを建てる必要は無いです。
これとCloud Pub/SubというAWS SQSのGCP版のようなものを組み合わせれば、従来のPull型の構成にすることが出来ます。