Amazon Web Services ブログ

MSK Serverless クラスター上により多くのパーティションを作成し、データを長期間にわたり保持する

2022 年 4 月、Amazon Managed Streaming for Apache Kafka (Amazon MSK) は、エキサイティングな新機能である Amazon MSK Serverless をリリースしました。 Amazon MSK は、開発者が、高可用性でセキュアかつスケーラブルな Apache Kafka ベースのアプリケーションを簡単に構築・実行可能な、 Apache Kafka 用のフルマネージドサービスです。MSK Serverlessを使用すると、開発者は、Apache Kafka クラスターをプロビジョニング、設定、最適化することなくアプリケーションを実行可能です。 MSK Serverless は、コンピューティングリソースとストレージ リソースを自動的にプロビジョニング、スケールするため、開発者はストリーミングキャパシティとストレージを、オンデマンドで利用できます。

MSK Serverless のリリース以降、チームはお客様からフィードバックを収集し、お客様の要望に基づいて MSK Serverless をさらに改善する新しい機能を追加しました。本投稿では、これらの機能強化のいくつかについて詳しく説明し、使用例を示します。

“クラスター内のパーティション数”デフォルトクォータの増加

Apache Kafka では、データはトピックに書き込まれます。トピックは、パーティションと呼ばれる複数のログファイルに分割されています。プロデューサーアプリケーションがデータをトピックに書き込むと、データはこれらのパーティションのうち 1 つに追加されます。 ローンチ時の MSK Serverless は、クラスターあたりのパーティション数が最大 120 パーティションでした。しかしながら、お客様からは、変更データキャプチャ (CDC) から、より高速なリアルタイム データ処理まで、さまざまなユースケースのために、クラスターあたりのパーティションがより多く必要であるとの声をいただきました。

2022 年 12 月に、MSK Serverless クラスターのパーティションのデフォルトクォータを引き上げました。クォータの増加により、クラスターごとに最大 2,400 のパーティションを作成可能です。クラスターごとに所有可能なパーティション数が 20 倍に増えることで、クラスターにより多くのトピックを作成し、より多くのアプリケーションがデータを並行して取得できるようになります。きめ細かいアクセス制御を使用して、データの分離を改善することもできます。より多くのパーティションは、データベース内の各テーブルに数百のユニークキーがあり、それぞれが一意のパーティションにマップされているような、 CDC のユースケースで特に役立ちます。パーティションの増加により、MSK Serverless を使用して、多数のテーブルと数百のキーを含む大規模なデータベースの変更をキャプチャできます。なお、2,400 パーティションの制限はリーダーパーティションにのみ適用されることに注意してください。 MSK Serverless は、デフォルトで各パーティションにつき 2 つのレプリカを追加コスト無しで作成します。レプリカはこの制限にカウントされません。

無期限のデータ保持期間

トピックに配信するデータは、Apache Kafka consumer API を使用してデータにアクセスする必要が有る期間の長さに応じて、設定可能な期間、Apache Kafka に保存できます。通常、ユーザーはデータを数時間から数日の短期間にわたり保持します。以前は、MSK Serverless はデータ保持期間を最大 24 時間 (1 日) に制限していました。これは、多くの一般的な Apache Kafka のユースケースにとっては十分です。ただし、監査目的のデータ保持や、アプリケーションリカバリの SLA 維持といった、一部のユースケースにおいては、お客様はデータを長期間保持する必要があります。

現在はデータ保持期間のクォータが増加しているため、MSK Serverless クラスターに必要な期間だけデータを保持可能です。長期間のデータ保持は、コンシューマーアプリケーションが古いデータにすばやくアクセスする必要がある場合に特に有用です。たとえば、障害が発生した場合、アプリケーションはトピックの最初からデータにアクセスして、状態を再構築する必要があるとします。トピック内にデータを長期間保持可能となったため、Kafka の consumer API で古いデータにアクセス、アプリケーションの状態を復元でき、このような障害からの回復が容易になります。アプリケーションの回復後、アプリケーションの状態を再確立するために必要な、最も過去のタイムスタンプからデータ取得を開始するようにアプリケーションを設定可能です。パーティションあたりの最大保持可能なデータ量が 250 GB であることに注意してください。パーティションのサイズが 250 GB に達しない限り、任意の期間データを保持可能です。特定のトピックについてより多くのストレージが必要な場合は、追加のパーティションを作成可能です。

これらの新しい制限は、MSK Serverless が利用可能な全てのリージョンで有効です。詳細については、Amazon MSK 料金ページ の [MSK Serverless] タブに移動し、[リージョン] ドロップダウン メニューを選択してください。

クラスター内に 2,400 を超えるパーティションが必要な場合は、AWS サポートに連絡してパーティション数のクォータの引き上げをリクエスト可能です。より多くのパーティション、より長い保持期間のクォータは、既存クラスターと新規クラスターの両方に適用されます。

開始方法:トピックを 1000 パーティション、7 日間の保持期間で作成する
このセクションでは、MSK Serverless でトピックを作成し、パーティションの数を指定し、保持期間を設定する方法について説明します。

前提条件として、MSK Serverless クラスターと Apache Kafka クライアントが必要です。詳しい手順については、MSK Serverless クラスターの使用を開始するを参照してください。

クライアント マシンで kafka_2.12-2.8.1/bin にアクセスし、次の export コマンドを実行します (‘my-endpoint’ を MSK Serverless クラスターのブートストラップサーバー文字列に置き換えます)。

export BS=my-endpoint

次のコマンドを実行して、1,000 個のパーティションと 7 日間のデータ保持 (604,800,000 ミリ秒) を持つ msk-sample-topic という名前のトピックを作成します。

<path-to-your-kafka-installation>/bin/kafka-topics.sh 
--bootstrap-server $BS 
--command-config client.properties 
--create 
--topic msk-sample-topic 
--partitions 1000 
--config retention.ms=604800000

(オプション) 次のコマンドを実行して、上記のステップ 2 で作成したトピックの詳細を表示します。

<path-to-your-kafka-installation>/bin/kafka-topics.sh 
--bootstrap-server $BS
--command-config client.properties 
--topic msk-sample-topic 
--describe | head -n1

次の結果が表示されます。

Topic: msk-sample-topic TopicId: Ze76LY9EQuiH0xOIenx_HA PartitionCount: 1000ReplicationFactor: 3 Configs: min.insync.replicas=2,segment.bytes=134217728,retention.ms=604800000,message.format.version=2.8-IV2,unclean.leader.election.enable=false,retention.bytes=268435456000

環境の削除

この記事で作成した AWS リソースで料金が発生しないようにするには、MSK Serverless クラスターと、クライアント マシンの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを削除します。

  1. Amazon MSK コンソールで、このソリューションに使用した MSK Serverless クラスターを選択します。
  2. [アクション] を選択し、[削除] を選択します。
  3. Amazon EC2 コンソールで、Apache Kafka クライアント マシン用に作成したインスタンスを選択します。
  4. [インスタンスの状態] を選択し、[インスタンスの終了] を選択します。

まとめ

本投稿では、MSK Serverless クラスター に、1,000 パーティションと 7 日間の保持期間を持つトピックを作成する方法を説明しました。今回のデフォルトクォータの増加によって、クラスターごとに最大 2,400 のパーティションを作成し、必要な期間データを保持可能となっています。コメントやフィードバックにつきましては、コメント欄までお気軽にご記入ください。

本投稿は AWS Big Data Blog に投稿された Create more partitions and retain data for longer in your MSK Serverless clusters の日本語訳版です。翻訳はソリューションアーキテクトの榎本が担当しました。