Closed11

Cloud Tasksって何ができるのかを調べる

Cloud Tasks は、大量の分散タスクの実行、ディスパッチ、配信を管理できるフルマネージド サービスです。Cloud Tasks を使用すると、ユーザー リクエストまたはサービス間リクエストの外部で作業を非同期に行うことができます。

Pub/Subライクな何かなんだと思っているが、何が違うのだろうか。スケジューリングとかできるっぽいが。

もうこの表が語ってくれてるやん!

https://cloud.google.com/tasks/docs/comp-pub-sub#detailed-feature-comparison

個人的メリット

  • 配信時間をスケジュールできること
    • 今までCron Jobで処理対象のデータを探していたが、いつやるかはっきりしているものはCloud Tasks使って予約しておける
  • 再試行の回数とかタイミングとかを制御できる
  • タスク作成の重複を排除できる
    • Cloud Tasksキューにタスクを詰めるのはFunctionsからに成ることが多そうで、FunctionsはTriggerによる起動だと複数回起動することがあるので、タスクの重複をCloud Tasksで排除してくれるのはありがたい

気をつけないといけないところ

  • ボクが使うならHTTPでFunctionsをハンドラとして設定するが、タスクを詰めすぎるとDosみたいなレベルで起動してしまう
    • D社にいたときにPub/Subを使ったとき、pushで配信すると自サーバーにDos攻撃しているみたいな感じになってしまった ので、pull型にしてサブスクライバーを用意して500件ずつ取ってきて処理するみたいな感じにしつつMessage数が多くなると、サブスクライバーを水平スケールさせて対応させてたことを思い出した
  • メッセージのサイズが100KBである
    • まあこれはFirestoreに入るデータがそもそも1MBなので大抵は大丈夫そうだし、FirestoreのDocPathとかをタスクとして詰めそうなので大抵は問題なさそう

よくわからなかったところ

  • 最大配信レートの単位の QPS のQってなに…?
  • スケジュールできる未来の時刻の上限はいつなのか

QPS = queries per secondかもしれない!しかしCloud Taskの配信におけるQueryってなんだ…?1秒間に500タスクしか配信できないよってことか?たぶんそうだろうきっとそう

https://cloud.google.com/s/results?q=qps

スケジュールできる未来の時刻の上限はいつなのか

30日以内っぽいな。メッセージの保持期間が30日だし。これは気をつけないといけない。

SouzohではTasksはバッチ処理のときに使っているって言っていた

ZennでもGitHubデプロイやエクスポートデータ(zipファイル)の生成など、負荷が大きめの処理でCloud Tasksを使っています。

「再試行の回数とかタイミングとかを制御できる」というのがやっぱり便利ですね。

なるほど参考になりますありがとうございます!
(メモ代わりに久々に追記したやつに返信があると思わなくてびっくりしましたw これがFollowingタブの効果…!)

Followingタブで気づきました!w
作ってよかった!

このスクラップは2021/01/20にクローズされました
ログインするとコメントできます