翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
適切なストリームモードを選ぶ
以下のトピックでは、アプリケーションに適したモードを選択する方法と、必要に応じてモードを切り替える方法について説明します。
トピック
Kinesis Data Streams の各種モードについて
モードは、データストリームの容量の管理方法と、データストリームの使用に対する課金方法を決定します。Amazon Kinesis Data Streams では、データストリームのモードとしてオンデマンド標準、オンデマンドアドバンテージ、プロビジョンドを選択できます。
-
オンデマンド標準 - オンデマンドモードのデータストリームは、容量計画を必要とせず、1 分あたりの書き込みスループットおよび読み込みスループットのギガバイトを処理するように自動的にスケールされます。オンデマンドモードでは、Kinesis Data Streams は必要なスループットを提供するために、シャードを自動的に管理します。
-
オンデマンドアドバンテージ - オンデマンドストリームに対してより多くの機能を利用でき、かつ単純化された料金体系を提供するアカウントレベルのモードです。このモードでは、ストリームの書き込みスループットキャパシティを、任意のタイミングで事前にウォームアップできます。料金については、ストリーム単位の固定料金がなくなり、すべてのオンデマンドストリームにおけるデータインジェスト、データ取得、および拡張保持の使用量に対する料金が、オンデマンド標準の料金と比べて少なくとも 60% 低くなります。
-
プロビジョンド - プロビジョンドモードのデータストリームの場合、データストリームのシャードカウントを指定する必要があります。データストリームの総容量は、シャードの容量の合計です。必要に応じて、データストリームのシャードの数を増減することができます。
Kinesis Data Streams の PutRecord および PutRecords API を使用して、任意のモードでデータストリームにデータを書き込むことができます。データを取得するために、3 つのモードはすべて、GetRecords API を使用するデフォルトのコンシューマーと SubscribeToShard API を使用する拡張ファンアウト (EFO) のコンシューマーをサポートします。
保持モード、暗号化、モニタリングメトリクスなど、すべての Kinesis Data Streams の機能は、オンデマンドモードとプロビジョンドモードの両方でサポートされています。Kinesis Data Streams は、オンデマンドおよびプロビジョンドの容量モードの両方で、高い耐久性と可用性を提供します。
オンデマンド標準モードの機能とユースケース
オンデマンドモードのデータストリームは、容量計画を必要とせず、1 分あたりの書き込みスループットおよび読み込みスループットのギガバイトを処理するように自動的にスケーリングされます。オンデマンドモードでは、サーバー、ストレージ、またはスループットのプロビジョニングや管理が不要になるため、低レイテンシーで大量のデータを取り込んで保存することが簡単になります。運用上のオーバーヘッドなしで、1 日あたり数十億ものレコードを取り込むことができます。
オンデマンドモードは、変動性が高く、予測不可能なアプリケーショントラフィックのニーズに対応するのに最適です。これらのワークロードをピーク容量にプロビジョニングする必要がなくなり、使用率が低いため、コストが高くなる可能性があります。オンデマンドモードは、予測不能で変動性の高いトラフィックパターンを持つワークロードに適しています。
オンデマンド容量モードでは、データストリームから読み書きされるデータのギガバイトあたりの料金が発生します。アプリケーションで実行することが予測される読み込みおよび書き込みスループットを指定する必要はありません。Kinesis Data Streams は、ワークロードが増加または減少するときに、即座にワークロードに対応します。詳細については、Amazon Kinesis Data Streams の料金表
オンデマンドモードのデータストリームは、過去 30 日間に観測されたピーク書き込みスループットの最大 2 倍に対応します。データストリームの書き込みスループットが新しいピークに達すると、Kinesis Data Streams はデータストリームの容量を自動的にスケーリングします。例えば、データストリームの書き込みスループットが 10 MB/秒から 40 MB/秒の間で変化する場合、Kinesis Data Streams を使用すると、以前のピークスループットの 2 倍または 80 MB/秒に簡単にバーストできます。同じデータストリームが 50 MB/秒の新しいピークスループットを維持する場合、Kinesis Data Streams は 100 MB/秒の書き込みスループットを取り込むのに十分な容量を確保します。ただし、15 分以内にトラフィックが以前のピークの 2 倍以上に増加すると、書き込みスロットリングが発生する可能性があります。これらのスロットルされたリクエストは再試行する必要があります。
オンデマンドモードのデータストリームの総読み込み容量は、書き込みスループットに比例して増加します。これにより、コンシューマーアプリケーションは、受信データをリアルタイムで処理するための適切な読み取りスループットを常に確保できます。GetRecords API を使用したデータの読み取りと比較して、書き込みスループットは少なくとも 2 倍になります。GetRecord API で 1 つのコンシューマーアプリケーションを使用することをお勧めします。これにより、アプリケーションがダウンタイムから回復する必要があるときに追いつくのに十分なスペースが確保されます。複数のコンシューマーアプリケーションを追加する必要があるシナリオでは、Kinesis Data Streams の拡張ファンアウト機能を使用することをお勧めします。拡張ファンアウトは、SubscribeToShard API を使用して最大 20 のコンシューマーアプリケーションをデータストリームに追加することをサポートし、各コンシューマーアプリケーションは専用のスループットを備えています。
読み取りおよび書き込みスループットの例外処理
オンデマンドモード (プロビジョンド容量モードと同じ) では、データストリームにデータを書き込むために、各レコードでパーティションキーを指定する必要があります。Kinesis Data Streams は、パーティションキーを使用して、シャード間でデータを分散します。Kinesis Data Streams は、各シャードのトラフィックをモニタリングします。着信トラフィックがシャードあたり 500 KB/秒を超えると、15 分以内にシャードが分割されます。親シャードのハッシュキー値は、子シャード間で均等に再配分されます。
着信トラフィックが以前のピークの 2 倍を超えると、データがシャード全体に均等に分散されていても、約 15 分間、読み取りまたは書き込みの例外が発生する可能性があります。すべてのレコードが Kinesis Data Streams に適切に保存されるように、このようなリクエストをすべて再試行することをお勧めします。
不均等なデータ分散につながるパーティションキーを使用し、特定のシャードに割り当てられたレコードがその制限を超えると、読み取りおよび書き込みの例外が発生することがあります。オンデマンドモードでは、単一のパーティションキーがシャードの 1 MB/秒のスループットおよび 1,000 レコード/秒の制限を超えない限り、データストリームは不均等なデータ分散パターンを処理するように自動的に適応します。
オンデマンドモードでは、トラフィックの増加が検出されると、Kinesis Data Streams はシャードを均等に分割します。ただし、特定のシャードへの着信トラフィックの上位部分を駆動しているハッシュキーは検出および分離されません。非常に不均等なパーティションキーを使用している場合は、書き込みの例外を引き続き受け取る可能性があります。このようなユースケースでは、きめ細かくシャードの分割をサポートするプロビジョンド容量モードを使用することをお勧めします。
オンデマンドアドバンテージモードの機能とユースケース
オンデマンドアドバンテージは、リージョン内のすべてのオンデマンドストリームに追加機能を提供し、異なる料金体系を適用するアカウントレベルの設定です。このモードでは、オンデマンドストリームは引き続き既存の機能を保持し、実際のデータ使用量に基づいて自動的に容量をスケールします。ストリームの書き込みスループットキャパシティを事前にウォームアップしたい場合は、ウォームスループットを設定できます。たとえば、データストリームの書き込みスループットが 10 MB/秒〜40 MB/秒の範囲であれば、スロットリングなしで最大 80 MB/秒の瞬間的なスループット増加に対応できます。一方で、今後 200 MB/秒程度のピークが予測される場合は、ウォームスループットを 200 MB/秒に設定しておくことで、データ流入時に必要な容量を確保できます。ウォームスループットを使用しても追加料金は発生しません。
オンデマンドアドバンテージモードのもう一つの利点は、オンデマンドストリームがよりシンプルな料金体系へ移行することです。このモードを有効にすると、アカウントにはストリーム単位の固定料金が発生しなくなり、データインジェスト、データ取得、およびオプションの長期保持料金のみが課金対象となります。また、それぞれの料金項目は、オンデマンド標準と比べて大幅に割引された価格が適用されます。詳細については、「Amazon Kinesis Data Streams の料金表
このモードでは、拡張ファンアウトによるデータ取得も標準のデータ取得と比べて追加料金は発生しません。さらに、オンデマンドアドバンテージモードでは、ストリームごとに最大 50 のコンシューマーを登録して、拡張ファンアウトを使用できます。オンデマンドアドバンテージを有効化すると、アカウントはオンデマンドストリーム全体で、少なくとも 25 MiB/秒のデータインジェストと 25 MiB/秒のデータ取得を利用することが前提となります。最小利用要件を満たしているアカウントについて、Kinesis Data Streams コンソールでは、アカウントの利用パターンがオンデマンドアドバンテージモードに適しているかどうかを確認できる機能が用意されています。
アカウントのデータ使用量が要件を下回る場合は、その不足分について料金が発生しますが、同じ割引率が適用されます。オンデマンドアドバンテージを有効化した場合、無効化できるのは 24 時間経過後となる最低利用期間があります。総合的に見て、オンデマンドアドバンテージは、最低コミットメントに近い、あるいはそれを上回るスループットを継続的に使用する場合、多数の拡張ファンアウトコンシューマーが必要な場合、または数百単位のデータストリームを運用する場合に、Kinesis Data Streams を利用するための最適なモードです。
プロビジョンドモード機能とユースケース
プロビジョニングモードでは、データストリームを作成した後、 AWS マネジメントコンソールまたは UpdateShardCount API を使用してシャード容量を動的にスケールアップまたはスケールダウンできます。Kinesis Data Streams プロデューサーまたはコンシューマーアプリケーションが、ストリームに対してデータを書き込んだり、ストリームからデータを読み取ったりしている間に更新を行うことができます。
プロビジョンドモードは、予測しやすい容量要件を持つ予測可能なトラフィックに適しています。シャード間でのデータの分散方法をきめ細かく制御したい場合は、プロビジョンドモードを使用できます。
プロビジョンドモードでは、データストリームのシャードカウントを指定する必要があります。プロビジョンドモードでデータストリームのサイズを決定するには、以下の入力値が必要です。
-
ストリームに書き込まれるデータレコードの KB 単位での平均サイズ (近似の KB 単位 (
average_data_size_in_KB) まで切り上げられます)。 -
1 秒間にストリームで読み書きされるデータレコードの数 (
records_per_second) です。 -
ストリームから独立して同時にデータを消費する Kinesis Data Streams アプリケーションであるコンシューマーの数 (
number_of_consumers)。 -
KB 単位での受信書き込み帯域幅 (
incoming_write_bandwidth_in_KB)。average_data_size_in_KBをrecords_per_secondに乗算した値に等しくなります。 -
KB 単位の送信読み取り帯域幅 (
outgoing_read_bandwidth_in_KB)。incoming_write_bandwidth_in_KBをnumber_of_consumersに乗算した値に等しくなります。
ストリームに必要なシャードの数 (number_of_shards) を計算するには、入力値を以下の式にあてはめます。
number_of_shards = ceiling(max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048))
ピークスループットを処理するようにデータストリームを設定しないと、プロビジョンドモードで読み取りおよび書き込みのスループットの例外が発生する可能性があります。この場合、データトラフィックに対応するようにデータストリームを手動でスケーリングする必要があります。
不均等なデータ分散につながるパーティションキーを使用し、あるシャードに割り当てられたレコードがその制限を超えると、読み取りおよび書き込みの例外が発生することがあります。プロビジョンドモードでこの問題を解決するには、このようなシャードを特定し、トラフィックに上手く対応できるように手動で分割します。詳細については、ストリームのリシャーディングを参照してください。
モードの切り替え
内のデータストリームごとにAWS アカウント、オンデマンドモードとプロビジョニングモードを 24 時間以内に 2 回切り替えることができます。モードを切り替えても、このデータストリームを使用するアプリケーションが中断することはありません。このデータストリームへの書き込みとデータストリームからの読み取りを続行できます。オンデマンドからプロビジョンド、またはプロビジョンドからオンデマンドのいずれかでモードを切り替えると、ストリームのステータスは更新中に設定されます。プロパティを再度変更するには、データストリームのステータスがアクティブになるのを待つ必要があります。
プロビジョンド容量モードからオンデマンド容量モードに切り替えると、データストリームは最初に移行前のシャードカウントを保持します。この時点から、Kinesis Data Streams はデータトラフィックをモニタリングし、書き込みスループットに応じて、このオンデマンドデータストリームのシャードカウントをスケーリングします。オンデマンドモードからプロビジョンドモードに切り替えると、データストリームは最初に移行前のシャードカウントを保持しますが、この時点から、書き込みスループットに適切に対応するために、このデータストリームのシャードカウントをモニタリングおよび調整する必要があります。
アカウントレベルの設定を有効化することで、オンデマンド標準モードからオンデマンドアドバンテージモードに切り替えることができます。この設定を有効化すると、アカウントはリージョン内のすべてのオンデマンドストリームに対して、データインジェスト 25 MiB/秒、データ取得 25 MiB/秒の最低使用量をコミットすることになります。一度オンデマンドアドバンテージを有効化すると、無効化できるようになるまで最低 24 時間待つ必要がありますが、切り替えリクエスト自体はいつでも行えます。オンデマンドアドバンテージからオンデマンドスタンダードに戻したい場合は、まずオンデマンドストリームに設定されているウォームスループットをすべて削除する必要があります。