リソースをクリーンアップする
Kinesis Data Streams の使用には料金がかかるため、作業が終わったら、ストリームおよび対応する Amazon DynamoDB テーブルは必ず削除してください。レコードを送信したり取得したりしていなくても、ストリームがアクティブなだけでわずかな料金が発生します。その理由として、アクティブなストリームでは、受信レコードを継続的に "リッスン" し、レコードを取得するようにリクエストすることにリソースが使用されるためです。
ストリームおよびテーブルを削除するには
-
実行しているプロデューサーおよびコンシューマーをすべてシャットダウンします。
Kinesis コンソール (https://console.aws.amazon.com/kinesis
) を開きます。 -
このアプリケーション用に作成したストリーム (
StockTradeStream
) を選択します 。 -
[ストリームの削除] を選択します。
DynamoDB コンソール (https://console.aws.amazon.com/dynamodb/
) を開きます。 -
StockTradesProcessor
テーブルを削除します。
[概要]
ほぼリアルタイムで大量のデータを処理するために、複雑なコードを記述したり、大規模なインフラストラクチャを開発したりする必要はありません。Kinesis Data Streams を使用すれば、基本のデータを処理するロジックを記述する (processRecord(Record)
を記述するなど) 場合と同じように簡単にスケールして、大量のストリーミングデータに対応できます。Kinesis Data Streams が代わりに処理してくれるため、処理を拡張する方法を心配しなくて済みます。することと言えば、ストリームレコードを Kinesis Data Streams に送信し、受信した新しい各レコードを処理するロジックを記述するだけです。
このアプリケーションについて考えられる拡張機能は、次のとおりです。
- すべてのシャードで集計する
-
現在は、単一のワーカーが単一のシャードから受け取ったデータレコードの集約に基づく統計が取得されます (複数のワーカーが同時に単一のアプリケーションからシャードを処理することはできません)。拡張するときに複数のシャードがある場合、すべてのシャードで集計しようと考えるかもしれません。そのためには、パイプラインアーキテクチャを用意します。パイプラインアーキテクチャでは、各ワーカーの出力が単一のシャードを持つ別のストリームに供給され、第 1 段階の出力を集計するワーカーによってそのストリームが処理されます。第 1 段階のデータが制限されるため (シャードごとに 1 分間あたり 1 つのサンプル)、シャードごとに処理しやすくなります。
- 処理の拡張
-
多数のシャードが含まれるようにストリームを拡張する場合 (多数のプロデューサーがデータを送信している場合)、処理を拡張するには、より多くのワーカーを追加します。複数のワーカーを Amazon EC2 インスタンスで実行し、Auto Scaling グループを使用することができます。
- Amazon S3/DynamoDB/Amazon Redshift/Storm へのコネクタを使用する
-
ストリームは継続的に処理されるため、出力を他の保存先に送信することができます。AWSは、Kinesis DataStreams を他の AWS サービスやサードパーティツールと統合するためのコネクタ
を提供します。