Toilを無くして徒然なるままに日暮し硯に向かひたい

生成AIアプリケーション開発などを行うエンジニアのブログです。

Google CloudのCloud Pub/Subが何かがよくわからないので調べてみた

Google Cloud Pub/Sub は、Google Cloud が提供する、メッセージを送受信するためのサービスです。

コンソールのキャプチャはこちら

なぜPub/Subを使うのか?

  • 非同期処理: ある処理が終わったことを別の処理に通知したり、大量のデータを少しずつ処理したりする際に、Pub/Subを使うと、処理を並列化して効率よく行うことができます。
  • スケーラビリティ: システムの負荷が急激に増減しても、Pub/Subは自動的にスケールして対応するため、安定したシステムを構築できます。
  • カップリング: システムの各コンポーネント疎結合にすることで、各コンポーネントを独立して開発・変更できるようになります。

Pub/Subと組み合わせるサービスの一つが、App EngineのCronサービスです。

App EngineのCronサービスとCloud Pub/Subを連携させることで、タスクスケジューリングに高い予測可能性と信頼性をもたらすことができます。

1. Cronサービスによるスケジュール設定:

  • App EngineのCronサービスは、cron形式のスケジュール設定を可能にします。
  • この設定に基づき、指定された時間に定期的にタスクを実行できます。
  • 非常に柔軟なスケジュール設定が可能で、毎分、毎時、毎日、毎週、毎月など、様々な周期でタスクを実行できます。

2. Pub/Subへのメッセージ発行:

  • Cronサービスで実行されるタスクは、Cloud Pub/Subのトピックにメッセージを発行するように設定できます。
  • このメッセージには、タスク実行に必要なデータやパラメータを含めることができます。

3. Pub/Subによる非同期処理:

  • Pub/Subは、メッセージを非同期的に配信するサービスです。
  • Cronサービスから発行されたメッセージは、Pub/Subのサブスクライバーに配信され、サブスクライバーはメッセージの内容に基づいて処理を実行します。

4. スケーラビリティと信頼性:

  • Pub/Subは、大量のメッセージを処理できるスケーラブルなサービスです。
  • また、メッセージの配信が保証されるため、信頼性の高いシステムを構築できます。

この連携によるメリット

  • タスクのスケジューリング: 定期的なタスクを正確なタイミングで実行できます。
  • 非同期処理: タスクの実行時間が長くなっても、メインの処理をブロックしません。
  • スケーラビリティ: 処理負荷が増えても、Pub/Subが自動的にスケールアップし、処理能力を確保します。
  • 信頼性: メッセージの配信が保証されるため、タスクが確実に実行されます。
  • カップリング: タスクのスケジューリングと実行を分離できるため、システムの柔軟性が高まります。

利用例

  • バッチ処理: 毎日深夜に大量のデータを処理するバッチ処理をスケジュールできます。
  • データ更新: データベースのデータを定期的に更新するタスクをスケジュールできます。
  • レポート作成: 定期的にレポートを作成し、関係者に通知するタスクをスケジュールできます。
  • バックアップ: データベースやファイルシステムのバックアップを定期的に実行するタスクをスケジュールできます。

なお、Google CloudのPub/SubはAWSだと、Amazon Simple Notification Service (SNS)やAmazon Simple Queue Service (SQS)に相当します。

Geminiの力も借りながら、Pub/Subが何であるかが少しわかりました。