このドキュメントでは、Pub/Sub Lite アプリケーションとデータを Pub/Sub Lite から Pub/Sub に移行する方法について説明します。
Pub/Sub に移行するには、Pub/Sub Lite のエクスポート サブスクリプション機能を使用します。エクスポート サブスクリプション機能は、エクスポート サブスクリプションというタイプのサブスクリプションを使用して、Pub/Sub Lite から Pub/Sub メッセージに変換します。
Pub/Sub Lite と Pub/Sub の違い
Pub/Sub と Pub/Sub Lite はどちらも水平方向にスケーリング可能なメッセージング サービスですが、各サービスの動作には重要な違いがあります。これらの違いについて詳しくは、Pub/Sub と Pub/Sub Lite の選択をご覧ください。
以降のセクションでは、サービス間の移行に関連する各サービスの主な違いについて説明します。次のような点を検討します。
- データの局所性とレプリケーション
- 配信モード
- 並列処理と順序付け
- 再生と消去
- 容量管理と料金
データの局所性とレプリケーション
Pub/Sub Lite。リージョン Pub/Sub Lite トピックは、同じリージョン内のセカンダリ ゾーンにデータを複製します。ゾーン Pub/Sub Lite トピックは、複製なしで単一のゾーンにデータを保存します。
Pub/Sub。Pub/Sub は、リージョン内の 3 つのゾーンにデータを複製します。
主な移行ポイント
各サービスがデータを複製する方法は異なります。
Pub/Sub を使用する場合は、Pub/Sub のメッセージ ストレージ ポリシーを使用して、優先リージョンにデータが保存されるようにできます。
Pub/Sub では、メッセージが保存される特定のゾーンを制御できません。代わりに、メッセージ ストレージ ポリシーで指定されているように、リージョン内の 3 つのゾーンにデータを常に複製します。
メッセージ ストレージ ポリシーを指定しない場合、Pub/Sub はリソース ロケーション制限の組織のポリシーに基づいて、メッセージの保存場所を自動的に決定します。組織のポリシーを明示的に設定しない場合、Pub/Sub はすべてのリージョンを許可し、メッセージを保存するリージョンを自動的に選択します。
配信モード
Pub/Sub Lite。メッセージ配信の場合、Pub/Sub Lite は StreamingPull RPC API のみをサポートしています。
Pub/Sub。メッセージ配信の場合、Pub/Sub には StreamingPull メッセージ配信など、複数のメッセージ配信オプションがあります。
主な移行ポイント
Pub/Sub Lite の動作(低レイテンシや高効率など)を Pub/Sub で再現する場合は、StreamingPull API を使用してコンシューマ クライアントを実装します。または、プッシュ配信など、利用可能な他の配信モードを使用して Pub/Sub サブスクリプションを実装することもできます。
並列処理と順序付け
Pub/Sub Lite。Pub/Sub Lite は、パーティションごとの並列処理をサポートしています。
Pub/Sub。Pub/Sub は、メッセージごとの並列処理をサポートしています。
主な移行ポイント
Pub/Sub はパーティションベースのソリューションではありません。Pub/Sub メッセージは同時に処理することもできます。つまり、メッセージの順序は保証されません。アプリケーションでメッセージの順序付けが必要な場合は、Pub/Sub の順序指定キーを使用します。
Pub/Sub Lite でエクスポート サブスクリプションを使用する場合、Pub/Sub Lite キーが Pub/Sub メッセージの順序指定キーとして使用されます。これにより、メッセージは順序どおりに配信されます。
Pub/Sub メッセージとの互換性を確保するため、Pub/Sub Lite キーに UTF-8 でエンコードされた文字のみが含まれていることを確認します。
- Pub/Sub Lite キーはバイトとして保存されます。
- Pub/Sub の順序指定キーは文字列として保存されます。
Pub/Sub の順序指定キーのパブリッシャーの最大スループットは 1 MBps です。Pub/Sub でのメッセージの順序は、単一のリージョン内でのみ保証されます。Pub/Sub で順序付きメッセージを受信するには、サブスクリプションの設定でメッセージの順序指定を明示的に有効にする必要があります。
再生と消去
Pub/Sub Lite。Pub/Sub Lite は、追加の構成を必要とせずにシーク機能をサポートしています。
Pub/Sub。Pub/Sub はシーク機能をサポートしていますが、設定するには追加の構成が必要です。
主な移行ポイント
シーク機能を有効にするには、Pub/Sub でトピックとサブスクリプションの両方の設定を明示的に構成する必要があります。
- トピック: メッセージの保持期間を構成する必要があります
- サブスクリプション: 確認済みメッセージの保持を構成する必要があります。
Pub/Sub Lite と完全に一致する必要がある場合や、移行でメッセージの再生またはパージが必要な場合は、これらの設定を構成することが重要です。特定の要件に関係なく、メッセージをシークして再処理する機能は、段階的な移行中に貴重な安全保護手段となります。これにより、ロールバックが可能になり、予期しない問題が発生した場合のデータ損失を最小限に抑えることができます。
容量管理と料金
Pub/Sub Lite。Pub/Sub Lite の容量は、Pub/Sub Lite 予約を使用してストレージ容量とスループット容量を構成することで、手動でプロビジョニングされます。
Pub/Sub。Pub/Sub はフルマネージドで、自動的にスケーリングされます。
主な移行ポイント
Pub/Sub に移行する場合は、割り当てのオーバーライドを設定するか、Pub/Sub リソースの割り当て変更をリクエストして、容量と料金を管理できます。
Pub/Sub の容量を管理する主な理由は、厳格な費用要件を遵守することです。厳しい費用の上限がない場合は、Pub/Sub を使用して、あまり介入することなくリソースを効率的に管理できます。Pub/Sub は使用量に基づいて課金されます。詳細については、Pub/Sub の料金をご覧ください。
移行を計画する
Pub/Sub Lite から Pub/Sub に移行するには、Pub/Sub Lite エクスポート サブスクリプション機能を使用します。エクスポート サブスクリプションを使用すると、Pub/Sub Lite アプリケーションを段階的に移行できます。段階的なアプローチを採用すると、移行の更新、テスト、モニタリングを反復的に行うことができ、エラーとダウンタイムのリスクを最小限に抑えることができます。
始める前に
- 既存の Pub/Sub Lite アプリケーションを評価し、必要な Pub/Sub 機能に対応するマッピングを作成します。
- Pub/Sub が機能要件とビジネス要件をすべて満たしていることを確認します。
段階的な移行ワークフロー
次の手順は、エクスポート サブスクリプションの移行ワークフローの概要を示しています。
- 関連する Pub/Sub トピックとトピックに対するサブスクリプションを作成します。
- Pub/Sub Lite のエクスポート サブスクリプションを作成します。
- Pub/Sub サブスクリプションと Pub/Sub Lite サブスクリプションの両方に登録します。
- パブリッシャーを段階的に更新して、Pub/Sub Lite トピックではなく Pub/Sub トピックにメッセージを送信します。
- 移行したワークロードが意図したとおりに動作していることを確認します。
- Pub/Sub Lite のパブリッシャーとサブスクライバーを停止します。
移行の各フェーズ
以降のセクションでは、段階的な移行ワークフローの各ステップについて詳しく説明します。
Pub/Sub トピックとサブスクリプションを作成する
対応する Pub/Sub トピックとそのサブスクリプションを作成します。このフェーズでは、メッセージの保持、メッセージの確認応答、メッセージ ストレージ ポリシーなど、必要なトピックとサブスクリプションの設定を構成します。
必要に応じて、過剰使用や予期しない請求を防ぐために割り当てを設定します。最も重要なことは、Pub/Sub に正常に移行できなかったメッセージをキャプチャするために、デッドレター Pub/Sub Lite トピックを設定することを強くおすすめします。これにより、エラーのトラブルシューティングを行い、エクスポートの失敗の根本原因を特定し、失敗したメッセージを正しいトピックに再送信して、データ損失を防ぐことができます。
Pub/Sub Lite エクスポート サブスクリプションを作成する
トピックごとに Pub/Sub Lite エクスポート サブスクリプションを作成して、Pub/Sub Lite トピックから対応する Pub/Sub トピックにメッセージをエクスポートします。エクスポート サブスクリプションごとにスループット容量を個別に設定するのではなく、Pub/Sub Lite の予約を使用して、すべてのエクスポート サブスクリプションのスループットをまとめて効率的に管理します。このフェーズが終了すると、Pub/Sub Lite トピックと Pub/Sub トピックの両方が、エクスポート サブスクリプションが作成された時点から同じメッセージを受信します。
その後、Pub/Sub トピックを使用して、サブスクライバー クライアントを段階的に開発し、分離されたフェーズでテストできます。このアプローチにより、既存の Pub/Sub Lite アプリケーションの中断を最小限に抑えることができます。
Pub/Sub Lite トピックと Pub/Sub トピックにデュアル サブスクライブする
開発環境では、適切な Pub/Sub クライアント ライブラリを使用して、サブスクライバー クライアントを更新し、Pub/Sub トピックから直接メッセージを読み取るようにします。Pub/Sub Lite とは異なり、Pub/Sub には複数のPub/Sub Lite とは異なり、Pub/Sub には複数の配信モード(pull と push)が用意されているため、アプリケーションの要件に最も適したものを選択してください。
Pub/Sub Lite と同じ動作をエミュレートするには、StreamingPull API を使用して Pub/Sub インスタンスを構成します。
複数のコンシューマ アプリケーションがあるシステムでは、各アプリケーションを 1 つずつ段階的に移行します。サブスクライバー アプリケーションごとに、Pub/Sub Lite サブスクライバーと新しい Pub/Sub サブスクライバーを並行して実行し、新しいサブスクライバーの動作とパフォーマンスを確認します。両方のサブスクライバーを注意深くモニタリングして、メッセージ配信の一貫性、エラー処理、全体的な機能を確認します。すべてのサブスクライバーが正常に移行され、検証されたら、古い Pub/Sub Lite サブスクライバー クライアントを廃止します。
パブリッシャーを更新する
すべてのサブスクライバーが Pub/Sub からメッセージを正常に使用できるようになったら、パブリッシャーを段階的に更新して、Pub/Sub トピックにメッセージを直接送信するようにします。これを行うには、Pub/Sub クライアント ライブラリを使用するようにパブリッシャーを更新します。これにより、Pub/Sub Lite から Pub/Sub にトラフィックを段階的に移行できます。
Pub/Sub Lite を無効にする
すべてのサブスクライバーとパブリッシャーを Pub/Sub に正常に移行したら、Pub/Sub Lite リソースをシャットダウンできます。これにより、使用していないインフラストラクチャに不要な費用が発生するのを防ぐことができます。