GCP の使い方 (2) Cloud Pub/Sub を使ってみよう|研修コースに参加してみた
今回参加したコースは GCP の使い方 (2) Cloud Pub/Sub を使ってみよう です。 このコースは GCP の数あるサービスの中でも基幹になるサービスを紹介するもので、前編の (1) で IAM 、後編の (2) では Cloud Pub/Sub を扱います。
Pub/Sub そのものはクラウドと関係のないもので、パブリッシャー(配信)とサブスクライバー(購読)が互いに知ることなく、特定のトピックのメッセージを配信・受信するだけのメッセージのパターンを指します。 これがマイクロサービスやデータ基盤の構築、 IoT のストリーム処理などが増えたことに伴い、アプリケーション間での通信・連携が求められ、特にクラウドで Pub/Sub を使用することが増えています。 GCP では Cloud Pub/Sub 、 AWS では AWS SNS です。
このコースでは、その Cloud Pub/Sub の特徴と設定を解説いただきました。 クラウドらしくボタンをポチポチしてラクに Pub/Sub を設定できました!
では、どのような内容だったのか、レポートします!
コース情報
想定している受講者 | GCP 入門を受講していること |
---|---|
受講目標 |
|
講師紹介
このコースの講師は 前編の IAM に続き、 Gene さんです。
「ネットワーク技術をわかりやすく解説する」ことを目標にフリーのインストラクタ、テクニカルライターとして活動中。
2000 年よりメールマガジン、 Web サイト「ネットワークのおべんきょしませんか?」を開設。 2003 年には CCIE Routing & Switching を取得し、 2003 年 8 月に独立。
Cloud Pub/Sub とは
Cloud Pub/Sub とは次のようなものです
- サービス同士が非同期通信する仕組み(メッセージングシステム)
- 非同期通信:メッセージの送信も受信も自由なタイミングでできる
- Google が管理
- 100 ミリ秒程度の低遅延
- 膨大な数のメッセージを処理できる拡張性も備える
- Google 自身のサービスでも活用している
HTTP のような同期通信(リクエスト – レスポンス)ではないことが使い道を分けるポイントかも知れないですね。
Cloud Pub/Sub の主な用途として Gene さんから挙げられたのが、イベントドリブン型のマイクロサービスです。
- マイクロサービスとは
- 一つのシステムではなく、機能やドメイン単位などでシステムを分離
- 機能をまたいだ処理の場合、トリガーを各機能システムで実装するより、 Cloud Pub/Sub で設定すると簡単
- 非同期処理が向いている場合
また GCP のページでは BigQuery への同期や IoT デバイスからのストリーミングデータの受信など、様々挙げられていました。
Cloud Pub/Sub の仕組み
Cloud Pub/Sub は、パブリッシャー (配信) & サブスクライバー (購読) モデルです。
- パブリッシャー:メッセージをトピックに送信するアプリケーション
- サブスクライバー:トピックからメッセージを受け取るアプリケーション
- パブリッシャーとサブスクライバーの関係は、 1 対多、多対 1 、多対多が可能
- トピック:メッセージの送信先リソース
- サブスクリプション:メッセージ購読の設定に関する情報(配信方法や保存期間などを設定)
- トピックが作成されると自動で作成される
トピックという言葉がどうもイメージしにくいなぁと思い、 ChatGPT さんにいろいろ聞くと、
Cloud Pub/Sub のトピック名には、トピックが表す情報やデータの種類に関する意味を込めることが一般的です。 例えば、 “user-signed-up” という名前のトピックは、ユーザー登録イベントに関連するメッセージをパブリッシュするために使用されるトピックであることを示しています。
という答えでした。 なるほど、メーリングリストをイメージするとよいかもですね。
続いて、特徴的な機能を見てみましょう。
- メッセージの中身は JSON のような key-value 形式のデータ
- Pull と Push の両方を使える
- Push :自動配信
- Pull :能動的に受信
- 確認応答( ACK )がある
- サブスクライバーはメッセージを正常に受信すると Pub/Sub に通知
- 確認応答されたメッセージはキューから削除される
- 返ってこなければ再送する
仕組みとしてはシンプルですね。 だから高速な通信が可能なのでしょう。
Cloud Pub/Sub の操作
実際に Cloud Pub/Sub を操作してみます。 コースでは、操作説明のあと Gene さんに操作のデモを行っていただきました。 なお、普通はプログラム同士で送受信しますが、ここでは手動で行い、メッセージ送受信の流れを確認します。
コースでは詳細に画面キャプチャとデモをしながら説明いただいたのですが、このレポートでは大まかな操作手順を紹介します。
- トピックを作成
- Web コンソール メニュー > 「 Pub/Sub 」
- 「トピックを作成」を押し ID やトピック名を入力
- サブスクリプションを作成
- 「 Pub/Sub 」 > 「サブスクリプション」
- 「サブスクリプションを作成」を押し、 pull / push などを設定(今回は pull )
- メッセージをパブリッシュ
- 「 Pub/Sub 」 > 「トピック」 > 「トピック ID 」
- 「メッセージをパブリッシュ」
- 本文などを入力し公開
- メッセージを受信
- 「サブスクリプション」からトピック ID を選択し「メッセージ」タブ
- 「 PULL 」をクリックしてメッセージを表示する
gcloud コマンドでも実行
先ほどは GUI で操作しましたが、 gcloud CLI を使ってコマンドでもやってみました。
- トピックの作成
$ glcoud pubsub topics create <TOPIC_ID>
- サブスクリプションの作成
$ gcloud pubsub subscriptions create <SUBSCRIPTION_ID> \ --topic=<TOPIC_ID>
- メッセージのパブリッシュ
$ gcloud pubsub topics publish <TOPIC_ID> \ --message=<MESSAGE_DATA>
- pull を実行してメッセージをサブスクリプションを受信
--auto-ack
オプションで自動的に確認応答
$ gcloud pubsub subscriptions pull topic2-sub --auto-ack
このコマンド操作をもって、このコースは修了しました。
まとめ
GCP の使い方 (2) として、アプリケーションの連携でよく使う Cloud Pub/Sub について仕組みと設定方法を確認しました。
API でアプリケーション間連携のためのメッセージングシステムを作ろうとすると、とても面倒なことに対して、 Cloud Pub/Sub だととても設定がラクで、しかも速い、大規模利用も OK なので、使いたくなるものですね。 AWS でも AWS SNS というサービスがあるものの、 Push のみ + エンドポイント必要なので、似て非なるものです。
クラウドを利用する際は、 GCP なのか、 AWS なのか、 Azure なのか、その他なのか、非常に重要な選択になるのですが、一般的なロードバランサ、 DBMS など使いたいサービスで差異が無いなら、 IAM や Pub/Sub など普段使うことが多いものでフィットするものを選ぶのもよいかも知れませんね。
GCP でもキラーアプリケーションとも言うべき BigQuery などではなく、普段よく使うサービスに焦点をあてたものとして、前編の IAM に続き、 Pub/Sub を学ぶことで、 GCP の特徴がわかりました! クラウド選択でお悩みの方や、 GCP の基礎を学びたい方にはオススメのコースです!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額 28,000 円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。