Querier

Google Cloud PlatformのCloud Pub/Sub徹底解説 | 特徴、料金、使い方、Python/NodeJS/Goでの実装

2023.07.07に公開 | 2023.07.07に更新

Querier運営

@querier_io@querierinc

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る

今回は、Google Cloud Platformの一部である、パワフルなメッセージングサービス、Cloud Pub/Subについて説明します。

この記事では、Cloud Pub/Subの特徴、メリット、デメリット、料金、そしてPythonやNodeJSでの使い方について詳しく解説します。

Cloud Pub/Subとは(特徴やメリット、デメリット)

Cloud Pub/Subとは、Google Cloud Platform (GCP) が提供するスケーラブルなリアルタイムメッセージングサービスです。このサービスは、大規模なデータストリームを管理して効率的に処理するために設計されています。

メリット

Cloud Pub/Subの主なメリットは以下の通りです。

  • スケーラビリティ: Cloud Pub/Subは大規模なデータストリームをハンドルするために設計されており、メッセージの生産や消費が増加した場合でも容易にスケーリングできます。
  • 信頼性: Cloud Pub/SubはGoogleの堅牢なインフラストラクチャに支えられており、高いデータ耐久性を提供します。

デメリット

一方、以下のようなデメリットも存在します。

  • 料金: 高負荷の場合、料金が高くなる可能性があります。
  • 複雑性: 設定や管理が少々複雑であると感じるユーザーもいるかもしれません。

Cloud Pub/Subの料金、無料枠はある?

Cloud Pub/Subの料金は基本的に以下の要素によって決定されます。

  1. メッセージの発行と受信: メッセージの発行(Publish)と受信(PullまたはPush)の回数に応じて課金されます。これには、成功したリクエストだけでなく、失敗したリクエストや空の応答も含まれます。
  2. メッセージの保存: メッセージが保存される期間にも料金が発生します。デフォルトでは、メッセージは7日間保存されます。ただし、メッセージが消費されて削除されれば、保存期間は短くなります。
  3. ネットワークの使用: メッセージのデータ転送量に応じて料金が発生します。ただし、同一リージョン内の転送や、Google Cloudの他のサービスとの間での転送は通常無料です。

無料枠については、Cloud Pub/Subは毎月最初の10ギガバイトのデータ転送が無料で、それを超える使用に対して課金されます。また、メッセージの発行と受信については、月に最初の10億件が無料です。

料金の詳細や最新の情報については、Google Cloud Pub/Subの公式ドキュメントをご確認ください。

これにより、実際の使用状況に応じて最適なプランを選択することができます。

Cloud Pub/Subの使い方、初期設定

Cloud Pub/Subを使用するには、まずGoogle Cloud Consoleにログインし、左側のナビゲーションメニューからPub/Subを選択します。

トピックの作成

まず、メッセージを発行するための「トピック」を作成します。トピックの作成は以下の手順で行います。

  1. Pub/Subダッシュボードで、[Create Topic] ボタンをクリックします。
  2. トピック名を入力し、必要な設定を適用します。これらは後で変更することもできます。
  3. [Create] ボタンをクリックしてトピックを作成します。

サブスクリプションの作成

次に、作成したトピックからメッセージを受け取るための「サブスクリプション」を作成します。以下の手順でサブスクリプションを作成できます。

  1. 作成したトピックを選択し、[Create Subscription] ボタンをクリックします。
  2. サブスクリプション名を入力し、配信タイプ(PullまたはPush)を選択します。また、その他の設定(例えば、アクノーレッジメントのデッドラインやメッセージの保持期間)を適用します。
  3. [Create] ボタンをクリックしてサブスクリプションを作成します。

これで初期設定は完了です。作成したトピックにメッセージを発行すると、そのメッセージはサブスクリプションを通じて受け取ることができます。

詳細な手順や設定については、Google Cloud Pub/Subの公式ドキュメントをご確認ください。

Cloud Pub/SubをPythonで使う方法

PythonでCloud Pub/Subを使用するには、google-cloud-pubsubライブラリが必要です。

from google.cloud import pubsub_v1

# PublisherとSubscriberを初期化
publisher = pubsub_v1.PublisherClient()
subscriber = pubsub_v1.SubscriberClient()

# トピックとサブスクリプションを設定
topic_path = publisher.topic_path(project_id, topic_name)
subscription_path = subscriber.subscription_path(project_id, subscription_name)

# メッセージを発行
data = 'Hello, World!'
data = data.encode('utf-8')
publisher.publish(topic_path, data=data)

# メッセージを受け取る
response = subscriber.pull(subscription_path, max_messages=10)
for msg in response.received_messages:
    print('Received message: {}'.format(msg.message.data))

Cloud Pub/SubをNodeJSで使う方法

NodeJSでCloud Pub/Subを使用するには、@google-cloud/pubsubライブラリが必要です。

const {PubSub} = require('@google-cloud/pubsub');

// PubSubクライアントを初期化
const pubSubClient = new PubSub();

// トピックとサブスクリプションを設定
const topicName = 'my-topic';
const subscriptionName = 'my-sub';

// メッセージを発行
const dataBuffer = Buffer.from('Hello, World!');
pubSubClient.topic(topicName).publish(dataBuffer);

// メッセージを受け取る
pubSubClient.subscription(subscriptionName).on('message', message => {
  console.log(`Received message: ${message.data.toString()}`);
  message.ack();
});

Cloud Pub/SubをGoで使う方法

以下にGoでCloud Pub/Subを利用する一例を示します。

import (
	"cloud.google.com/go/pubsub"
	"golang.org/x/net/context"
)

func main() {
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, "project-id")
	if err != nil {
		// Handle error.
	}

	t := client.Topic("topic-name")
	result := t.Publish(ctx, &pubsub.Message{
		Data: []byte("Hello, World!"),
	})

	// ...
}

さいごに

この記事では、Google Cloud PlatformのCloud Pub/Subについて詳しく説明しました。

Cloud Pub/Subは大規模なリアルタイムメッセージングを行うための強力なツールです。

Python、NodeJS、Goなど、多くのプログラミング言語で簡単に利用することができます。

今後は、Cloud Pub/Subを活用して更に強力なアプリケーションを構築してみてはいかがでしょうか。

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

最新の記事

2〜3ヶ月と見積もっていた開発期間を、クエリアを導入することでわずか1週間に短縮できました

2012年5月創業のフルカイテン株式会社。 「在庫をフル回転させる」をコンセプトに、機械学習を駆使したSaaS『FULL KAITEN』を提供し、在庫問題の解決に取り組む。

more

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る