SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
【AWS  Black  Belt  Online  Seminar】
Amazon  Kinesis
アマゾンウェブサービスジャパン株式会社
ソリューションアーキテクト|内海英⼀一郎郎
2016.08.10
⾃自⼰己紹介
アマゾンウェブサービス
ジャパン株式会社
ソリューションアーキテクト
❤  Amazon  Kinesis
❤  Java
❤  LMAX  Disruptor
うちうみえいいちろう
内海英⼀一郎郎|@eiichirouchiumi
  本資料料では2016年年8⽉月10⽇日時点のサービス内容および価格についてご説明しています。
最新の情報はAWS公式ウェブサイト(http://aws.amazon.com/  )にてご確認ください。
  資料料作成には⼗十分注意しておりますが、資料料内の価格とAWS公式ウェブサイト記載の価
格に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。
内容についての注意点
AWS  does  not  offer  binding  price  quotes.    AWS  pricing  is  publicly  available  and  is  subject  to  change  in  
accordance  with  the  AWS  Customer  Agreement  available  at  http://aws.amazon.com/agreement/.    Any  
pricing  information  included  in  this  document  is  provided  only  as  an  estimate  of  usage  charges  for  AWS  
services  based  on  certain  information  that  you  have  provided.    Monthly  charges  will  be  based  on  your  actual  
use  of  AWS  services,  and  may  vary  from  the  estimates  provided.
  価格は税抜表記となっています。⽇日本居住者のお客様が東京リージョンを使⽤用する場合、
別途消費税をご請求させていただきます。
Agenda
•  Amazon  Kinesis  概要
•  Amazon  Kinesis  アプリケーション
の開発
•  Amazon  Kinesis  の運⽤用
Amazon  Kinesis  概要
Amazon  Kinesis
ストリーミングデータを収集・処理理・配信するためのマネージドサービス群
Amazon  Kinesis  
Streams
ストリーミングデータを
処理理・分析するための
アプリケーションを
独⾃自に構築
Amazon  Kinesis  
Analytics  プレビュー
ストリーミングデータを
標準的な  SQL  クエリーで
簡単に分析
Amazon  Kinesis  
Firehose
ストリーミングデータを  
Amazon  S3,  Amazon  
Redshift,  Amazon  ES  へ
簡単にロード
ストリーミングデータの
利利⽤用シナリオ
シナリオ データの収集と  ETL 継続的なメトリクス計算 リアルタイム分析と応答
データタイプ
アプリケーションログ/コンピューターメトリクス/クリックストリーム
/センサーデータ/マーケットデータ...
広告
/マーケティング
配信や⼊入札データの収集
コンバージョンレート/収益
/カバレージの計算
ユーザー⾏行行動に応じた
配信・⼊入札エンジンの最適化
IoT テレメトリーデータの収集
デバイスやサーバーの
稼働状態の計算
稼働状態予測や
アラート・通知の発⾏行行
ゲーム 顧客⾏行行動データの収集
成功率率率/トランジションレート
/クリックレートの計算
リーダーボードや
マッチメイクの最適化
コンシューマー
向け
顧客⾏行行動データの収集
ページビュー
/クリックレートの計算
レコメンデーションエンジンの
最適化
Amazon  Kinesis  の
特⻑⾧長
プロビジョニングと管理理が容易易
伸縮⾃自在のスケーラビリティ
リアルタイム処理理
前払いなしの従量量課⾦金金制
ユースケースに応じたサービスラインナップ
Kinesis  Streams
ストリーミングデータを処理理・分析するためのアプリケーションを独⾃自に構築
•  管理理が容易易
–  必要なキャパシティをセットしてストリームを作成するだけで利利⽤用可能。スループットやデータ量量
の変化に応じてスケール
•  独⾃自のリアルタイムアプリケーション
–  Amazon  Kinesis  Client  Library,  Apache  Spark/Storm,  AWS  Lambda  等を利利⽤用してストリーム
処理理を実装
•  低コスト
–  あらゆるスケールのワークロードで⾼高いコスト効果
Kinesis  Streams  の
アーキテクチャ
AZ AZ AZ
Front
end
認証・認可
3  アベイラビリティゾーンの
永続ストレージに強い整合性でデータを複製
数百万のソースが  
1  時間あたり数百  TB  の
データを⽣生成
集約して  S3  にアーカイブ
End
point
機械学習
/スライディングウィンドウ分析
リアルタイムダッシュボード
/アラート
データウェアハウスにロード
複数のアプリケーションから
同時アクセス可能な
順序つきイベントストリーム
AWS  リージョン
Kinesis  Streams  の
主要なコンセプト
•  データの種類や処理理の⽤用途に応じて「ストリーム」を作成。ストリームは  1  つ以上の「シャード」で構成
•  保存されるデータの単位を「データレコード」と呼び、保持期間はデフォルトで  24  時間/最⻑⾧長で  7  ⽇日間
•  1  データレコードの最⼤大サイズは  1  MB
•  データ送信側のキャパシティは  1  シャードあたり秒間  1  MB  もしくは  1,000  PUT  レコード
•  データ処理理側のキャパシティは  1  シャードあたり秒間  2  MB  もしくは  5  回の読み取りトランザクション
•  ストリーム内のシャード数を増減することでスループットをコントロール
Kinesis  Streams  
エ
ン
ド
ポ
イ
ン
ト
シャード  0
シャード  1
シャード  ..N
ストリーム
データ送信側 データ処理理側
Amazon  S3
DynamoDB
Amazon  Redshift
Amazon  EMR
データ
レコード
Kinesis  Streams  における
データレコードの分散
•  データ⼊入⼒力力時に指定するパーティションキー(最⻑⾧長  256  ⽂文字)で
保存先のシャードが決定
–  MD5  ハッシュ関数でパーティションキーを  128  ビット整数値のハッシュキーに変換
–  ハッシュキーの範囲に対応したシャードにデータレコードをマップ
シャード  0
"HashKeyRange" {
"EndingHashKey": "170141183460469231731687303715884105727",
"StartingHashKey": "0"
}
シャード  1
"HashKeyRange" {
"EndingHashKey": "340282366920938463463374607431768211455",
"StartingHashKey": "170141183460469231731687303715884105728"
}
ストリーム
データ パーティションキー
データレコード
2^128  -‐‑‒  1
0
ハッシュキーの
範囲
パーティションキーの
ハッシュで分散*
*  ハッシュキーを直接指定することも可能
Kinesis  Streams  における
データレコードの順序性
•  全てのデータレコードにはシーケンス番号がアサインされる
–  ストリーム内の全シャード間でユニーク
–  シャード内で時間の経過とともに単調増加(シャード間では単調増加しない)
–  データ処理理時にシーケンス番号でレコード取得開始ポジションを指定可能
シャード  0
シャード  1
SequenceNumber
32
SequenceNumber
26
SequenceNumber
25
SequenceNumber
17
データレコード
データレコード
SequenceNumber
35
SequenceNumber
15
SequenceNumber
12
SequenceNumber
11
データレコード
ストリーム
Kinesis  Streams  をサポートする
プロデューサー/コンシューマー
プロデューサー  (データ送信側) コンシューマー  (データ処理理側)
AWS  SDK
Kinesis  Producer  
Library
Kinesis  Agent
AWS  IoT
Kinesis  Log4j  
Appender
Get*  API
Kinesis  Client  
Library
Fluentd
Kinesis  Analytics
AWS  Lambda
Amazon  EMR
Apache  Storm
Kinesis  Streams  の
料料⾦金金
項⽬目 料料⾦金金
(東京リージョン)
シャード時間
(取得  1  MB/秒、送信  2  MB/秒)
$0.0195
PUT  ペイロードユニット  (25  KB)
1,000,000  ユニットごと
$0.0215
拡張データ保持期限  (最⼤大  7  ⽇日間)  
シャード時間ごと
$0.026
Kinesis  Firehose
ストリーミングデータを  Amazon  S3,  Amazon  Redshift,  Amazon  ES  へ
簡単にロード
•  管理理不不要
–  アプリケーションの実装やインフラストラクチャーの管理理を⼀一切切⾏行行わずに  Amazon  S3  /  Amazon  
Redshift  /  Amazon  ES  にデータを配信可能
•  データストアとダイレクトに統合
–  シンプルな設定でストリーミングデータのバッチ化・圧縮・暗号化が可能。最短  60  秒でデータを
配信
•  シームレスにスケール
–  データのスループットに応じて⾃自動的にスケール
Kinesis  Firehose  の
主要なコンセプト
•  配信先に応じて「配信ストリーム」を作成
•  シャードの作成やパーティションキーの指定不不要
•  1  データレコードの最⼤大サイズは  1  MB
•  制限なしにスケールするよう設計
•  ⽶米国東部(バージニア北北部)/⽶米国⻄西部(オレゴン)/欧州(アイルランド)リージョンで利利⽤用可能
Kinesis  Firehose  
エ
ン
ド
ポ
イ
ン
ト
データ
レコード
データ送信側
Amazon  S3
配信ストリーム
Amazon  Redshift
配信ストリーム
Amazon  ES
配信ストリーム
Amazon  S3
Amazon  Redshift
Amazon  ES
Kinesis  Firehose  の
料料⾦金金
項⽬目 料料⾦金金
(バージニア北北部リージョン)
PUT  ペイロードサイズ
GB  ごと
$0.035
Kinesis  Analytics  プレビュー
ストリーミングデータを標準的な  SQL  クエリーで簡単に分析
•  SQL  をストリームに適⽤用
–  簡単にデータストリームへ接続し、標準的な  SQL  を適⽤用可能
•  リアルタイムアプリケーションを構築
–  秒以下のレイテンシーでストリーミングデータを連続的に処理理
•  弾⼒力力的にスケール
–  データのスループットに応じて弾⼒力力的にスケール。オペレーションの介⼊入不不要
Amazon  Kinesis  
アプリケーションの開発
Kinesis  Streams  の
セットアップ
•  以下の情報を⼊入⼒力力
–  ストリーム名
–  シャード数
PutRecord  API  による
Kinesis  Streams  への単⼀一レコード送信
•  ストリーム名・データ・パーティションキーを指定して送信
•  送信成功時にはシャード  ID  とシーケンス番号が返却される
# AWS CLI の例例
$ aws kinesis put-record --stream-name myStream –data ‘myData' 
--partition-key $RANDOM
{
"ShardId": "shardId-000000000013",
"SequenceNumber":
"49541296383533603670305612607160966548683674396982771921"
}
PutRecords  API  による
Kinesis  Streams  への複数レコード⼀一括送信
•  1  リクエストとして設定できるデータレコードの合計件数は最⼤大  500  件
•  1  リクエストとして設定できるデータレコードの合計サイズは最⼤大  5  MB
•  ⼀一部のデータレコードの送信のみが失敗する可能性あり
// Java の例例
AmazonKinesisClient amazonKinesisClient = new AmazonKinesisClient(credentialsProvider);
PutRecordsRequest putRecordsRequest = new PutRecordsRequest();
putRecordsRequest.setStreamName(“myStream");
List<PutRecordsRequestEntry> putRecordsRequestEntryList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
PutRecordsRequestEntry putRecordsRequestEntry = new PutRecordsRequestEntry();
putRecordsRequestEntry.setData(ByteBuffer.wrap(String.valueOf(i).getBytes()));
putRecordsRequestEntry.setPartitionKey(String.format("partitionKey-%d", i));
putRecordsRequestEntryList.add(putRecordsRequestEntry);
}
putRecordsRequest.setRecords(putRecordsRequestEntryList);
PutRecordsResult putRecordsResult = amazonKinesisClient.putRecords(putRecordsRequest);
System.out.println("Put Result" + putRecordsResult);
Kinesis  Producer  Library  による
Kinesis  Streams  へのレコード送信
•  複数のレコードをバッファリングして送信し、キャパシティ超過時のリトライをサポート
•  タイムアウト時間や送信時に利利⽤用するコネクション数を設定可能
•  複数件のデータを  1  データレコードに集約して送信可能
•  パフォーマンスメトリクスを  CloudWatch  に⾃自動送信
KinesisProducer kinesis = new KinesisProducer();
List<Future<UserRecordResult>> putFutures = new LinkedList<Future<UserRecordResult>>();
for (int i = 0; i < 100; i++) {
ByteBuffer data = ByteBuffer.wrap("myData".getBytes("UTF-8"));
putFutures.add(
kinesis.addUserRecord("myStream", "myPartitionKey", data));
}
// 応答を待機し、送信結果をチェック  
for (Future<UserRecordResult> f : putFutures) {
UserRecordResult result = f.get();
...
}
Kinesis  Firehose  のセットアップ
(Amazon  S3  配信)
•  以下の情報を⼊入⼒力力
–  配信ストリーム名
–  S3  バケット
•  バケット名
•  プレフィックス名
Kinesis  Firehose  のセットアップ
(Amazon  S3  配信)
•  以下の情報を⼊入⼒力力
–  バッファサイズ
–  バッファインターバル
–  圧縮オプション
–  暗号化オプション
–  エラーログ出⼒力力の是⾮非
–  IAM  ロール
Kinesis  Firehose  のセットアップ
(Amazon  Redshift  配信)
•  以下の情報を⼊入⼒力力
–  配信ストリーム名
–  S3  バケット
•  バケット名
•  プレフィックス名
–  Redshift  クラスター
•  データベース名
•  テーブル名
•  カラム名
•  ユーザー名
•  パスワード
–  COPY  コマンドオプション
–  リトライ許容時間
Kinesis  Firehose  のセットアップ
(Amazon  Redshift  配信)
•  以下の情報を⼊入⼒力力
–  バッファサイズ
–  バッファインターバル
–  圧縮オプション
–  暗号化オプション
–  エラーログ出⼒力力の是⾮非
–  IAM  ロール
Kinesis  Firehose  のセットアップ
(Amazon  ES  配信)
•  以下の情報を⼊入⼒力力
–  配信ストリーム名
–  Elasticsearch  ドメイン
•  インデックス名
•  ローテーション間隔
•  タイプ名
–  リトライ許容時間
–  バックアップモード
–  S3  バケット名
–  S3  プレフィックス名
Kinesis  Firehose  のセットアップ
(Amazon  ES  配信)
•  以下の情報を⼊入⼒力力
–  バッファサイズ
–  バッファインターバル
–  圧縮オプション
–  暗号化オプション
–  エラーログ出⼒力力の是⾮非
–  IAM  ロール
PutRecord  API  による
Kinesis  Firehose  への単⼀一レコード送信
•  パーティションキーの指定不不要
•  送信成功時にはレコード  ID  が返却される
•  複数レコードの⼀一括送信には  PutRecordBatch  API  を利利⽤用
# Python の例例
import boto3
client = boto3.client('firehose')
data = "myDatan"
response = client.put_record(
DeliveryStreamName='my-stream',
Record={
'Data': data
}
)
print(response)
{
"RecordId": "..."
}
Kinesis  Agent  による
Kinesis  Streams/Firehose  へのレコード送信
•  エージェントにてモニタリングするファイルのパターンと送信先ストリームを指定
•  CloudWatch  へのメトリクス送信やファイル⾏行行の変換、送信前のバッファリングが可能
•  Kinesis  Streams  と  Kinesis  Firehose  へ同時送信可能
/etc/aws-kinesis/agent.json
{
"kinesis.endpoint": "https://your/kinesis/endpoint",
"firehose.endpoint": "https://your/firehose/endpoint",
"flows": [
{
"filePattern": "/tmp/app1.log*",
"kinesisStream": "yourkinesisstream"
},
{
"filePattern": "/tmp/app2.log*",
"deliveryStream": "yourfirehosedeliverystream"
}
]
}
GetRecords  API  による
Kinesis  Streams  からのレコード取得
•  ストリーム名・シャード  ID  を指定してシャードイテレーターを取得
•  シャードイテレーターを指定してデータレコードを取得
•  データレコードはシーケンス番号順に返却される
•  返却された  NextShardIterator  を利利⽤用して後続のレコードセットを取得
# AWS CLI の例例
$ aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name Foo
{
"ShardIterator": "AAAAAAAAAAHS..."
}
$ aws kinesis get-records –shard-iterator AAAAAAAAAAHS...
{
"Records":[ {
"Data":"dGVzdGRhdGE=",
"PartitionKey":"123”,
"ApproximateArrivalTimestamp": 1.441215410867E9,
"SequenceNumber":"49544985256907370027570885864065577703022652638596431874"
} ],
"MillisBehindLatest":24000,
"NextShardIterator":"AAAAAAAAAAED..."
}
シャードイテレーターの
種類
•  AT_SEQUENCE_NUMBER  –  指定したシーケンス番号のデータレコードから読み取りを開始
•  AFTER_SEQUENCE_NUMBER  –  指定したシーケンス番号のデータレコードの直後から読み取りを開始
•  AT_TIMESTAMP  –  指定したタイムスタンプ以後のデータレコードから読み取りを開始
•  TRIM_HORIZON  –  シャード内に保持している最も古いデータレコードから読み取りを開始
•  LATEST  –  シャード内に保持している最も新しいデータレコードから読み取りを開始
Timestamp
T + 2
Timestamp
T
SequenceNumber
N
AT_SEQUENCE_NUMBER (of N)
AFTER_SEQUENCE_NUMBER (of N)
AT_TIMESTAMP (of T + 1)
TRIM_HORIZON
LATEST
Kinesis  Client  Library  による
Kinesis  Streams  のレコード処理理
•  IRecordProcessor  および  IRecordProcessorFactory  の実装クラスを作成
•  データレコードの処理理完了了後、チェックポイントを更更新
•  Kinesis  Client  Library  内部で  Kinesis  Streams  からレコードが取得される
// Java の例例
public class AmazonKinesisApplicationSampleRecordProcessor implements IRecordProcessor {
@Override
public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) {
... // レコードの処理理
checkpointer.checkpoint();
...
public class AmazonKinesisApplicationRecordProcessorFactory implements IRecordProcessorFactory {
@Override
public IRecordProcessor createProcessor() {
return new AmazonKinesisApplicationSampleRecordProcessor();
}
}
Kinesis  Client  Library  による
Kinesis  Streams  のレコード処理理
•  ワーカー  ID  を決定
•  コンフィギュレーションを作成し、レコード取得開始ポジションを指定
•  ワーカーインスタンスを作成し、実⾏行行
// Java の例例
String workerId = InetAddress.getLocalHost().getCanonicalHostName() + “:” + UUID.randomUUID();
KinesisClientLibConfiguration kinesisClientLibConfiguration =
new KinesisClientLibConfiguration(SAMPLE_APPLICATION_NAME,
SAMPLE_APPLICATION_STREAM_NAME,
credentialsProvider,
workerId);
kinesisClientLibConfiguration.withInitialPositionInStream(InitialPositionInStream.LATEST);
IRecordProcessorFactory recordProcessorFactory = new AmazonKinesisApplicationRecordProcessorFactory();
Worker worker = new Worker(recordProcessorFactory, kinesisClientLibConfiguration);
try {
worker.run();
Kinesis  Client  Library  の
ステート管理理
•  Amazon  DynamoDB  テーブルを利利⽤用してアプリケーションの状態を追跡
•  シャードとワーカーのマッピングを調整
•  処理理されたレコードのチェックポイントを作成
•  ワーカーインスタンスの増減やシャードの分割/結合に追従
shardId
Shard-0
Shard-1
check
point
TRIM
_HORIZON
4
lease
Owner
Worker-A
Worker-B
lease
Counter
2
16
...
...
...
Shard-06
Shard-1
3 1
8 7 5
Worker
-A
Worker
-B
Amazon  EMR  (Spark  Streaming)  による
Kinesis  Streams  からのレコード取得
•  KinesisUtils  を利利⽤用して  DStream  を作成
•  DStream  内部で  Kinesis  Client  Library  が実⾏行行される
// Scala の例例
import org.apache.spark.streaming.kinesis.KinesisUtils
val ssc = new StreamingContext(sparkConfig, batchInterval)
// シャードごとに  DStream を作成
val kinesisDStreams = (0 until numShards).map { i =>
KinesisUtils.createStream(ssc, appName, streamName, endpointUrl, regionName,
InitialPositionInStream.LATEST, kinesisCheckpointInterval, StorageLevel.MEMORY_AND_DISK_2)
}
// Dstream を統合
val unionDStreams = ssc.union(kinesisDStreams)
// Dstream に対する  Transformation
val words = unionDStreams.flatMap(byteArray => new String(byteArray).split(“ “))
...
AWS  Lambda  による
Kinesis  Streams  からのレコード取得
•  パラメータの  event  からデータレコードの配列列を取得
•  Base64  でデータをデコード(ランタイムが  Node.js  および  Python  の場合)
•  AWS  Lambda  サービス内部でチェックポイントが管理理される
•  レコード取得開始ポジションは  LATEST  もしくは  TRIM_HORIZON  のみ指定可能
# Node.js の例例
console.log('Loading function');
exports.handler = function(event, context, callback) {
event.Records.forEach(function(record) {
// Base64 でデータをデコード
var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
console.log('Decoded payload:', payload);
});
callback(null, "success");
};
Amazon  Kinesis  の運⽤用
シャード数の
算出例例  –  1
•  送信側キャパシティ  –  秒間  2  MB|1,000  PUT
•  処理理側キャパシティ  –  秒間  2  MB
•  最⼩小シャード数  –  2
2  つのプロデューサーがそれぞれ  2  KB  のレコードを秒間  500  回送信するケース
2  MB
1  MB|
500  PUT
1  MB|
500  PUT
シャード数の
算出例例  –  2
•  送信側キャパシティ  –  秒間  2  MB|1,000  PUT
•  処理理側キャパシティ  –  秒間  6  MB
•  最⼩小シャード数  –  3
2  つの異異なるコンシューマーアプリケーションを追加する場合
1  MB|
500  PUT
1  MB|
500  PUT
2  MB
2  MB
2  MB
シャード数の
算出例例  –  3
•  送信側キャパシティ  –  秒間  2.4  MB|1,200  PUT
•  処理理側キャパシティ  –  秒間  7.2  MB
•  最⼩小シャード数  –  4
2  つのプロデューサーそれぞれの送信レートが秒間  600  回に増加した場合
2.4  MB
2.4  MB
2.4  MB
1.2  MB|
600  PUT
1.2  MB|
600  PUT
SplitShard  API  による
シャードの分割
•  シャードの分割によりストリームのキャパシティを拡⼤大
•  親シャードの  HashKeyRange  から⼦子シャードの  StartingHashKey  を決定
•  1  オペレーションで隣隣接する  2  シャードのみへ分割可能
// Java の例例
SplitShardRequest splitShardRequest = new SplitShardRequest();
splitShardRequest.setStreamName(myStreamName);
splitShardRequest.setShardToSplit(shard.getShardId());
BigInteger startingHashKey = new BigInteger(shard.getHashKeyRange().getStartingHashKey());
BigInteger endingHashKey = new BigInteger(shard.getHashKeyRange().getEndingHashKey());
String newStartingHashKey = startingHashKey.add(endingHashKey)
.divide(new BigInteger("2")).toString();
splitShardRequest.setNewStartingHashKey(newStartingHashKey);
client.splitShard(splitShardRequest);
MergeShards  API  による
シャードの結合
•  シャードの結合によりストリームのキャパシティを縮⼩小
•  1  オペレーションで隣隣接する  2  シャードのみ結合可能
// Java の例例
MergeShardsRequest mergeShardsRequest = new MergeShardsRequest();
mergeShardsRequest.setStreamName(myStreamName);
mergeShardsRequest.setShardToMerge(shard1.getShardId());
mergeShardsRequest.setAdjacentShardToMerge(shard2.getShardId());
client.mergeShards(mergeShardsRequest);
Kinesis  Streams  の
推奨メトリクス
メトリクス 説明 ⽤用途
GetRecords.IteratorAgeMilliseconds
現在の時刻と  GetRecords 呼び出しの最後のレコード
がストリームに書き込まれた時間の差
値が⼤大きい場合、シャードの分割とコンシューマーのス
ケールアウトを検討
ReadProvisionedThroughputExceeded スロットリングされた  GetRecords 呼び出しの回数
断続的に発⽣生している場合、シャードの分割とコン
シューマーのスケールアウトを検討
WriteProvisionedThroughputExceeded
スロットリングされた  PutRecord および  
PutRecords 呼び出しの回数
断続的に発⽣生している場合、シャードの分割を検討
PutRecord.Success,
PutRecords.Success
成功した  PutRecord 呼び出しの回数および少なくと
も  1  レコードが成功した  PutRecords 呼び出しの回
数
ストリームへの送信失敗を検出
GetRecords.Success 成功した  GetRecords 呼び出しの回数 ストリームからの受信失敗を検出
Kinesis  Streams  の
基本ストリームレベルメトリクス
メトリクス 説明 ⽤用途
GetRecords.Bytes ストリームから取得したバイト数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
GetRecords.Records シャードから取得したレコード数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
IncomingBytes ストリームに正常に送信されたバイト数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
IncomingRecords ストリームに正常に送信されたレコード数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
PutRecord.Bytes
PutRecord オペレーションでストリームに送信された
バイト数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
Kinesis  Streams  の
基本ストリームレベルメトリクス
メトリクス 説明 ⽤用途
PutRecords.Bytes
PutRecords オペレーションでストリームに送信され
たバイト数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
PutRecords.Records
PutRecords オペレーションで正常に送信されたレ
コード数
連続して⼀一定値を上回った場合はシャードの分割を検討
し、連続して⼀一定値を下回った場合はシャードの結合を
検討
Kinesis  Streams  の
拡張シャードレベルメトリクス
メトリクス 説明 ⽤用途
IncomingBytes シャードに正常に送信されたバイト数
分割/結合対象シャードの決定。連続して⼀一定値を上
回った場合はシャードの分割を検討し、連続して⼀一定値
を下回った場合はシャードの結合を検討
IncomingRecords シャードに正常に送信されたレコード数
分割/結合対象シャードの決定。連続して⼀一定値を上
回った場合はシャードの分割を検討し、連続して⼀一定値
を下回った場合はシャードの結合を検討
IteratorAgeMilliseconds
現在の時刻と  GetRecords 呼び出しの最後のレコード
がシャードに書き込まれた時間の差
分割対象シャードの決定。値が⼤大きい場合、シャードの
追加とコンシューマーのスケールアウトを検討
OutgoingBytes シャードから取得したバイト数
分割/結合対象シャードの決定。連続して⼀一定値を上
回った場合はシャードの分割を検討し、連続して⼀一定値
を下回った場合はシャードの結合を検討
OutgoingRecords シャードから取得したレコード数
分割/結合対象シャードの決定。連続して⼀一定値を上
回った場合はシャードの分割を検討し、連続して⼀一定値
を下回った場合はシャードの結合を検討
Kinesis  Streams  の
拡張シャードレベルメトリクス
•  EnableEnhancedMonitoring  API  にて有効化
•  Amazon  CloudWatch  の追加料料⾦金金が必要
メトリクス 説明 ⽤用途
ReadProvisionedThroughputExceeded
シャードでスロットリングされた  GetRecords 呼び出
しの回数
分割対象シャードの決定。断続的に発⽣生している場合、
シャードの分割とコンシューマーのスケールアウトを検
討
WriteProvisionedThroughputExceeded
シャードでスロットリングされた  PutRecord および  
PutRecords 呼び出しの回数
分割対象シャードの決定。断続的に発⽣生している場合、
シャードの分割を検討
Kinesis  Firehose  の
メトリクス
メトリクス 説明 ⽤用途
DeliveryToElasticsearch.Success 正常にインデックスが作成されたレコード数 Amazon  ES  への配信失敗を検出
DeliveryToRedshift.Success 正常に実⾏行行された  Amazon  Redshift  COPY コマンド数 Amazon  Redshift  への配信失敗を検出
DeliveryToS3.Success 正常に実⾏行行された  Amazon  S3  put  コマンド数 Amazon  S3  への配信失敗を検出
オンラインセミナー資料料の配置場所
•  AWS  クラウドサービス活⽤用資料料集
–  http://aws.amazon.com/jp/aws-‐‑‒jp-‐‑‒introduction/
•  AWS  Solutions  Architect  ブログ
–  最新の情報、セミナー中のQ&A等が掲載されています
–  http://aws.typepad.com/sajp/
公式Twitter/Facebook
AWSの最新情報をお届けします
@awscloud_̲jp
検索索
最新技術情報、イベント情報、お役⽴立立ち情報、
お得なキャンペーン情報などを⽇日々更更新しています!
もしくは
http://on.fb.me/1vR8yWm
AWSの導⼊入、お問い合わせのご相談
•  AWSクラウド導⼊入に関するご質問、お⾒見見積り、資料料請
求をご希望のお客様は、以下のリンクよりお気軽にご相
談ください
https://aws.amazon.com/jp/contact-‐‑‒us/aws-‐‑‒sales/
※「AWS  問い合わせ」で検索索してください

Contenu connexe

Tendances

[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)
Amazon Web Services Japan
 
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 

Tendances (20)

20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
 
AWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorksAWS Black Belt Online Seminar 2017 AWS OpsWorks
AWS Black Belt Online Seminar 2017 AWS OpsWorks
 
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMailAWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
 
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon Kinesis
 
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
 
[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)[AWSマイスターシリーズ]Identity and Access Management (IAM)
[AWSマイスターシリーズ]Identity and Access Management (IAM)
 
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
 
AWS Black Belt Techシリーズ AWS Direct Connect
AWS Black Belt Techシリーズ AWS Direct ConnectAWS Black Belt Techシリーズ AWS Direct Connect
AWS Black Belt Techシリーズ AWS Direct Connect
 
Awsをオンプレドメコンに連携させる
Awsをオンプレドメコンに連携させるAwsをオンプレドメコンに連携させる
Awsをオンプレドメコンに連携させる
 
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data PipelineAWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
 
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
 
Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3
 
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
 
20170621 aws-black belt-ads-sms
20170621 aws-black belt-ads-sms20170621 aws-black belt-ads-sms
20170621 aws-black belt-ads-sms
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
 
20210119 AWS Black Belt Online Seminar AWS CloudTrail
20210119 AWS Black Belt Online Seminar AWS CloudTrail20210119 AWS Black Belt Online Seminar AWS CloudTrail
20210119 AWS Black Belt Online Seminar AWS CloudTrail
 
고객의 플랫폼/서비스를 개선한 국내 사례 살펴보기 – 장준성 AWS 솔루션즈 아키텍트, 강산아 NDREAM 팀장, 송영호 야놀자 매니저, ...
고객의 플랫폼/서비스를 개선한 국내 사례 살펴보기 – 장준성 AWS 솔루션즈 아키텍트, 강산아 NDREAM 팀장, 송영호 야놀자 매니저, ...고객의 플랫폼/서비스를 개선한 국내 사례 살펴보기 – 장준성 AWS 솔루션즈 아키텍트, 강산아 NDREAM 팀장, 송영호 야놀자 매니저, ...
고객의 플랫폼/서비스를 개선한 국내 사례 살펴보기 – 장준성 AWS 솔루션즈 아키텍트, 강산아 NDREAM 팀장, 송영호 야놀자 매니저, ...
 
20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray
 

En vedette

En vedette (7)

JAWS-UG CLI #22 Amazon Kinesis
JAWS-UG CLI #22 Amazon KinesisJAWS-UG CLI #22 Amazon Kinesis
JAWS-UG CLI #22 Amazon Kinesis
 
Amazon Cognito Deep Dive @ JAWS DAYS 2016
Amazon Cognito Deep Dive @ JAWS DAYS 2016Amazon Cognito Deep Dive @ JAWS DAYS 2016
Amazon Cognito Deep Dive @ JAWS DAYS 2016
 
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
 
AWS Black Belt Techシリーズ Amazon EMR
AWS Black Belt Techシリーズ  Amazon EMRAWS Black Belt Techシリーズ  Amazon EMR
AWS Black Belt Techシリーズ Amazon EMR
 
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームAWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
 
AWS Black Belt online seminar 2017 Snowball
AWS Black Belt online seminar 2017 SnowballAWS Black Belt online seminar 2017 Snowball
AWS Black Belt online seminar 2017 Snowball
 
AWS Blackbelt 2015シリーズ Amazon Storage Service (S3)
AWS Blackbelt 2015シリーズ Amazon Storage Service (S3)AWS Blackbelt 2015シリーズ Amazon Storage Service (S3)
AWS Blackbelt 2015シリーズ Amazon Storage Service (S3)
 

Similaire à AWS Black Belt Online Seminar 2016 Amazon Kinesis

AWSが誕生するまでの秘話
AWSが誕生するまでの秘話AWSが誕生するまでの秘話
AWSが誕生するまでの秘話
Yasuhiro Horiuchi
 

Similaire à AWS Black Belt Online Seminar 2016 Amazon Kinesis (20)

Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
 
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
 
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
 
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
AWS Black Belt Online Seminar 2016 Amazon ElastiCacheAWS Black Belt Online Seminar 2016 Amazon ElastiCache
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
 
20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
 
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
 
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
 
AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Online Seminar 2017 Amazon S3
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatype
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
 
Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理
 
AWSが誕生するまでの秘話
AWSが誕生するまでの秘話AWSが誕生するまでの秘話
AWSが誕生するまでの秘話
 
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront
 
第5回 cogbot勉強会!
第5回 cogbot勉強会!第5回 cogbot勉強会!
第5回 cogbot勉強会!
 
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
 
BMXUG女子部 ブロックチェーン
BMXUG女子部 ブロックチェーンBMXUG女子部 ブロックチェーン
BMXUG女子部 ブロックチェーン
 
Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用
 
AWSのセキュリティについて
AWSのセキュリティについてAWSのセキュリティについて
AWSのセキュリティについて
 

Plus de Amazon Web Services Japan

Plus de Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 

AWS Black Belt Online Seminar 2016 Amazon Kinesis

  • 1. 【AWS  Black  Belt  Online  Seminar】 Amazon  Kinesis アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト|内海英⼀一郎郎 2016.08.10
  • 2. ⾃自⼰己紹介 アマゾンウェブサービス ジャパン株式会社 ソリューションアーキテクト ❤  Amazon  Kinesis ❤  Java ❤  LMAX  Disruptor うちうみえいいちろう 内海英⼀一郎郎|@eiichirouchiumi
  • 3.   本資料料では2016年年8⽉月10⽇日時点のサービス内容および価格についてご説明しています。 最新の情報はAWS公式ウェブサイト(http://aws.amazon.com/  )にてご確認ください。   資料料作成には⼗十分注意しておりますが、資料料内の価格とAWS公式ウェブサイト記載の価 格に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 内容についての注意点 AWS  does  not  offer  binding  price  quotes.    AWS  pricing  is  publicly  available  and  is  subject  to  change  in   accordance  with  the  AWS  Customer  Agreement  available  at  http://aws.amazon.com/agreement/.    Any   pricing  information  included  in  this  document  is  provided  only  as  an  estimate  of  usage  charges  for  AWS   services  based  on  certain  information  that  you  have  provided.    Monthly  charges  will  be  based  on  your  actual   use  of  AWS  services,  and  may  vary  from  the  estimates  provided.   価格は税抜表記となっています。⽇日本居住者のお客様が東京リージョンを使⽤用する場合、 別途消費税をご請求させていただきます。
  • 4. Agenda •  Amazon  Kinesis  概要 •  Amazon  Kinesis  アプリケーション の開発 •  Amazon  Kinesis  の運⽤用
  • 6. Amazon  Kinesis ストリーミングデータを収集・処理理・配信するためのマネージドサービス群 Amazon  Kinesis   Streams ストリーミングデータを 処理理・分析するための アプリケーションを 独⾃自に構築 Amazon  Kinesis   Analytics  プレビュー ストリーミングデータを 標準的な  SQL  クエリーで 簡単に分析 Amazon  Kinesis   Firehose ストリーミングデータを   Amazon  S3,  Amazon   Redshift,  Amazon  ES  へ 簡単にロード
  • 7. ストリーミングデータの 利利⽤用シナリオ シナリオ データの収集と  ETL 継続的なメトリクス計算 リアルタイム分析と応答 データタイプ アプリケーションログ/コンピューターメトリクス/クリックストリーム /センサーデータ/マーケットデータ... 広告 /マーケティング 配信や⼊入札データの収集 コンバージョンレート/収益 /カバレージの計算 ユーザー⾏行行動に応じた 配信・⼊入札エンジンの最適化 IoT テレメトリーデータの収集 デバイスやサーバーの 稼働状態の計算 稼働状態予測や アラート・通知の発⾏行行 ゲーム 顧客⾏行行動データの収集 成功率率率/トランジションレート /クリックレートの計算 リーダーボードや マッチメイクの最適化 コンシューマー 向け 顧客⾏行行動データの収集 ページビュー /クリックレートの計算 レコメンデーションエンジンの 最適化
  • 9. Kinesis  Streams ストリーミングデータを処理理・分析するためのアプリケーションを独⾃自に構築 •  管理理が容易易 –  必要なキャパシティをセットしてストリームを作成するだけで利利⽤用可能。スループットやデータ量量 の変化に応じてスケール •  独⾃自のリアルタイムアプリケーション –  Amazon  Kinesis  Client  Library,  Apache  Spark/Storm,  AWS  Lambda  等を利利⽤用してストリーム 処理理を実装 •  低コスト –  あらゆるスケールのワークロードで⾼高いコスト効果
  • 10. Kinesis  Streams  の アーキテクチャ AZ AZ AZ Front end 認証・認可 3  アベイラビリティゾーンの 永続ストレージに強い整合性でデータを複製 数百万のソースが   1  時間あたり数百  TB  の データを⽣生成 集約して  S3  にアーカイブ End point 機械学習 /スライディングウィンドウ分析 リアルタイムダッシュボード /アラート データウェアハウスにロード 複数のアプリケーションから 同時アクセス可能な 順序つきイベントストリーム AWS  リージョン
  • 11. Kinesis  Streams  の 主要なコンセプト •  データの種類や処理理の⽤用途に応じて「ストリーム」を作成。ストリームは  1  つ以上の「シャード」で構成 •  保存されるデータの単位を「データレコード」と呼び、保持期間はデフォルトで  24  時間/最⻑⾧長で  7  ⽇日間 •  1  データレコードの最⼤大サイズは  1  MB •  データ送信側のキャパシティは  1  シャードあたり秒間  1  MB  もしくは  1,000  PUT  レコード •  データ処理理側のキャパシティは  1  シャードあたり秒間  2  MB  もしくは  5  回の読み取りトランザクション •  ストリーム内のシャード数を増減することでスループットをコントロール Kinesis  Streams   エ ン ド ポ イ ン ト シャード  0 シャード  1 シャード  ..N ストリーム データ送信側 データ処理理側 Amazon  S3 DynamoDB Amazon  Redshift Amazon  EMR データ レコード
  • 12. Kinesis  Streams  における データレコードの分散 •  データ⼊入⼒力力時に指定するパーティションキー(最⻑⾧長  256  ⽂文字)で 保存先のシャードが決定 –  MD5  ハッシュ関数でパーティションキーを  128  ビット整数値のハッシュキーに変換 –  ハッシュキーの範囲に対応したシャードにデータレコードをマップ シャード  0 "HashKeyRange" { "EndingHashKey": "170141183460469231731687303715884105727", "StartingHashKey": "0" } シャード  1 "HashKeyRange" { "EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "170141183460469231731687303715884105728" } ストリーム データ パーティションキー データレコード 2^128  -‐‑‒  1 0 ハッシュキーの 範囲 パーティションキーの ハッシュで分散* *  ハッシュキーを直接指定することも可能
  • 13. Kinesis  Streams  における データレコードの順序性 •  全てのデータレコードにはシーケンス番号がアサインされる –  ストリーム内の全シャード間でユニーク –  シャード内で時間の経過とともに単調増加(シャード間では単調増加しない) –  データ処理理時にシーケンス番号でレコード取得開始ポジションを指定可能 シャード  0 シャード  1 SequenceNumber 32 SequenceNumber 26 SequenceNumber 25 SequenceNumber 17 データレコード データレコード SequenceNumber 35 SequenceNumber 15 SequenceNumber 12 SequenceNumber 11 データレコード ストリーム
  • 14. Kinesis  Streams  をサポートする プロデューサー/コンシューマー プロデューサー  (データ送信側) コンシューマー  (データ処理理側) AWS  SDK Kinesis  Producer   Library Kinesis  Agent AWS  IoT Kinesis  Log4j   Appender Get*  API Kinesis  Client   Library Fluentd Kinesis  Analytics AWS  Lambda Amazon  EMR Apache  Storm
  • 15. Kinesis  Streams  の 料料⾦金金 項⽬目 料料⾦金金 (東京リージョン) シャード時間 (取得  1  MB/秒、送信  2  MB/秒) $0.0195 PUT  ペイロードユニット  (25  KB) 1,000,000  ユニットごと $0.0215 拡張データ保持期限  (最⼤大  7  ⽇日間)   シャード時間ごと $0.026
  • 16. Kinesis  Firehose ストリーミングデータを  Amazon  S3,  Amazon  Redshift,  Amazon  ES  へ 簡単にロード •  管理理不不要 –  アプリケーションの実装やインフラストラクチャーの管理理を⼀一切切⾏行行わずに  Amazon  S3  /  Amazon   Redshift  /  Amazon  ES  にデータを配信可能 •  データストアとダイレクトに統合 –  シンプルな設定でストリーミングデータのバッチ化・圧縮・暗号化が可能。最短  60  秒でデータを 配信 •  シームレスにスケール –  データのスループットに応じて⾃自動的にスケール
  • 17. Kinesis  Firehose  の 主要なコンセプト •  配信先に応じて「配信ストリーム」を作成 •  シャードの作成やパーティションキーの指定不不要 •  1  データレコードの最⼤大サイズは  1  MB •  制限なしにスケールするよう設計 •  ⽶米国東部(バージニア北北部)/⽶米国⻄西部(オレゴン)/欧州(アイルランド)リージョンで利利⽤用可能 Kinesis  Firehose   エ ン ド ポ イ ン ト データ レコード データ送信側 Amazon  S3 配信ストリーム Amazon  Redshift 配信ストリーム Amazon  ES 配信ストリーム Amazon  S3 Amazon  Redshift Amazon  ES
  • 18. Kinesis  Firehose  の 料料⾦金金 項⽬目 料料⾦金金 (バージニア北北部リージョン) PUT  ペイロードサイズ GB  ごと $0.035
  • 19. Kinesis  Analytics  プレビュー ストリーミングデータを標準的な  SQL  クエリーで簡単に分析 •  SQL  をストリームに適⽤用 –  簡単にデータストリームへ接続し、標準的な  SQL  を適⽤用可能 •  リアルタイムアプリケーションを構築 –  秒以下のレイテンシーでストリーミングデータを連続的に処理理 •  弾⼒力力的にスケール –  データのスループットに応じて弾⼒力力的にスケール。オペレーションの介⼊入不不要
  • 21. Kinesis  Streams  の セットアップ •  以下の情報を⼊入⼒力力 –  ストリーム名 –  シャード数
  • 22. PutRecord  API  による Kinesis  Streams  への単⼀一レコード送信 •  ストリーム名・データ・パーティションキーを指定して送信 •  送信成功時にはシャード  ID  とシーケンス番号が返却される # AWS CLI の例例 $ aws kinesis put-record --stream-name myStream –data ‘myData' --partition-key $RANDOM { "ShardId": "shardId-000000000013", "SequenceNumber": "49541296383533603670305612607160966548683674396982771921" }
  • 23. PutRecords  API  による Kinesis  Streams  への複数レコード⼀一括送信 •  1  リクエストとして設定できるデータレコードの合計件数は最⼤大  500  件 •  1  リクエストとして設定できるデータレコードの合計サイズは最⼤大  5  MB •  ⼀一部のデータレコードの送信のみが失敗する可能性あり // Java の例例 AmazonKinesisClient amazonKinesisClient = new AmazonKinesisClient(credentialsProvider); PutRecordsRequest putRecordsRequest = new PutRecordsRequest(); putRecordsRequest.setStreamName(“myStream"); List<PutRecordsRequestEntry> putRecordsRequestEntryList = new ArrayList<>(); for (int i = 0; i < 100; i++) { PutRecordsRequestEntry putRecordsRequestEntry = new PutRecordsRequestEntry(); putRecordsRequestEntry.setData(ByteBuffer.wrap(String.valueOf(i).getBytes())); putRecordsRequestEntry.setPartitionKey(String.format("partitionKey-%d", i)); putRecordsRequestEntryList.add(putRecordsRequestEntry); } putRecordsRequest.setRecords(putRecordsRequestEntryList); PutRecordsResult putRecordsResult = amazonKinesisClient.putRecords(putRecordsRequest); System.out.println("Put Result" + putRecordsResult);
  • 24. Kinesis  Producer  Library  による Kinesis  Streams  へのレコード送信 •  複数のレコードをバッファリングして送信し、キャパシティ超過時のリトライをサポート •  タイムアウト時間や送信時に利利⽤用するコネクション数を設定可能 •  複数件のデータを  1  データレコードに集約して送信可能 •  パフォーマンスメトリクスを  CloudWatch  に⾃自動送信 KinesisProducer kinesis = new KinesisProducer(); List<Future<UserRecordResult>> putFutures = new LinkedList<Future<UserRecordResult>>(); for (int i = 0; i < 100; i++) { ByteBuffer data = ByteBuffer.wrap("myData".getBytes("UTF-8")); putFutures.add( kinesis.addUserRecord("myStream", "myPartitionKey", data)); } // 応答を待機し、送信結果をチェック   for (Future<UserRecordResult> f : putFutures) { UserRecordResult result = f.get(); ... }
  • 25. Kinesis  Firehose  のセットアップ (Amazon  S3  配信) •  以下の情報を⼊入⼒力力 –  配信ストリーム名 –  S3  バケット •  バケット名 •  プレフィックス名
  • 26. Kinesis  Firehose  のセットアップ (Amazon  S3  配信) •  以下の情報を⼊入⼒力力 –  バッファサイズ –  バッファインターバル –  圧縮オプション –  暗号化オプション –  エラーログ出⼒力力の是⾮非 –  IAM  ロール
  • 27. Kinesis  Firehose  のセットアップ (Amazon  Redshift  配信) •  以下の情報を⼊入⼒力力 –  配信ストリーム名 –  S3  バケット •  バケット名 •  プレフィックス名 –  Redshift  クラスター •  データベース名 •  テーブル名 •  カラム名 •  ユーザー名 •  パスワード –  COPY  コマンドオプション –  リトライ許容時間
  • 28. Kinesis  Firehose  のセットアップ (Amazon  Redshift  配信) •  以下の情報を⼊入⼒力力 –  バッファサイズ –  バッファインターバル –  圧縮オプション –  暗号化オプション –  エラーログ出⼒力力の是⾮非 –  IAM  ロール
  • 29. Kinesis  Firehose  のセットアップ (Amazon  ES  配信) •  以下の情報を⼊入⼒力力 –  配信ストリーム名 –  Elasticsearch  ドメイン •  インデックス名 •  ローテーション間隔 •  タイプ名 –  リトライ許容時間 –  バックアップモード –  S3  バケット名 –  S3  プレフィックス名
  • 30. Kinesis  Firehose  のセットアップ (Amazon  ES  配信) •  以下の情報を⼊入⼒力力 –  バッファサイズ –  バッファインターバル –  圧縮オプション –  暗号化オプション –  エラーログ出⼒力力の是⾮非 –  IAM  ロール
  • 31. PutRecord  API  による Kinesis  Firehose  への単⼀一レコード送信 •  パーティションキーの指定不不要 •  送信成功時にはレコード  ID  が返却される •  複数レコードの⼀一括送信には  PutRecordBatch  API  を利利⽤用 # Python の例例 import boto3 client = boto3.client('firehose') data = "myDatan" response = client.put_record( DeliveryStreamName='my-stream', Record={ 'Data': data } ) print(response) { "RecordId": "..." }
  • 32. Kinesis  Agent  による Kinesis  Streams/Firehose  へのレコード送信 •  エージェントにてモニタリングするファイルのパターンと送信先ストリームを指定 •  CloudWatch  へのメトリクス送信やファイル⾏行行の変換、送信前のバッファリングが可能 •  Kinesis  Streams  と  Kinesis  Firehose  へ同時送信可能 /etc/aws-kinesis/agent.json { "kinesis.endpoint": "https://your/kinesis/endpoint", "firehose.endpoint": "https://your/firehose/endpoint", "flows": [ { "filePattern": "/tmp/app1.log*", "kinesisStream": "yourkinesisstream" }, { "filePattern": "/tmp/app2.log*", "deliveryStream": "yourfirehosedeliverystream" } ] }
  • 33. GetRecords  API  による Kinesis  Streams  からのレコード取得 •  ストリーム名・シャード  ID  を指定してシャードイテレーターを取得 •  シャードイテレーターを指定してデータレコードを取得 •  データレコードはシーケンス番号順に返却される •  返却された  NextShardIterator  を利利⽤用して後続のレコードセットを取得 # AWS CLI の例例 $ aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name Foo { "ShardIterator": "AAAAAAAAAAHS..." } $ aws kinesis get-records –shard-iterator AAAAAAAAAAHS... { "Records":[ { "Data":"dGVzdGRhdGE=", "PartitionKey":"123”, "ApproximateArrivalTimestamp": 1.441215410867E9, "SequenceNumber":"49544985256907370027570885864065577703022652638596431874" } ], "MillisBehindLatest":24000, "NextShardIterator":"AAAAAAAAAAED..." }
  • 34. シャードイテレーターの 種類 •  AT_SEQUENCE_NUMBER  –  指定したシーケンス番号のデータレコードから読み取りを開始 •  AFTER_SEQUENCE_NUMBER  –  指定したシーケンス番号のデータレコードの直後から読み取りを開始 •  AT_TIMESTAMP  –  指定したタイムスタンプ以後のデータレコードから読み取りを開始 •  TRIM_HORIZON  –  シャード内に保持している最も古いデータレコードから読み取りを開始 •  LATEST  –  シャード内に保持している最も新しいデータレコードから読み取りを開始 Timestamp T + 2 Timestamp T SequenceNumber N AT_SEQUENCE_NUMBER (of N) AFTER_SEQUENCE_NUMBER (of N) AT_TIMESTAMP (of T + 1) TRIM_HORIZON LATEST
  • 35. Kinesis  Client  Library  による Kinesis  Streams  のレコード処理理 •  IRecordProcessor  および  IRecordProcessorFactory  の実装クラスを作成 •  データレコードの処理理完了了後、チェックポイントを更更新 •  Kinesis  Client  Library  内部で  Kinesis  Streams  からレコードが取得される // Java の例例 public class AmazonKinesisApplicationSampleRecordProcessor implements IRecordProcessor { @Override public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) { ... // レコードの処理理 checkpointer.checkpoint(); ... public class AmazonKinesisApplicationRecordProcessorFactory implements IRecordProcessorFactory { @Override public IRecordProcessor createProcessor() { return new AmazonKinesisApplicationSampleRecordProcessor(); } }
  • 36. Kinesis  Client  Library  による Kinesis  Streams  のレコード処理理 •  ワーカー  ID  を決定 •  コンフィギュレーションを作成し、レコード取得開始ポジションを指定 •  ワーカーインスタンスを作成し、実⾏行行 // Java の例例 String workerId = InetAddress.getLocalHost().getCanonicalHostName() + “:” + UUID.randomUUID(); KinesisClientLibConfiguration kinesisClientLibConfiguration = new KinesisClientLibConfiguration(SAMPLE_APPLICATION_NAME, SAMPLE_APPLICATION_STREAM_NAME, credentialsProvider, workerId); kinesisClientLibConfiguration.withInitialPositionInStream(InitialPositionInStream.LATEST); IRecordProcessorFactory recordProcessorFactory = new AmazonKinesisApplicationRecordProcessorFactory(); Worker worker = new Worker(recordProcessorFactory, kinesisClientLibConfiguration); try { worker.run();
  • 37. Kinesis  Client  Library  の ステート管理理 •  Amazon  DynamoDB  テーブルを利利⽤用してアプリケーションの状態を追跡 •  シャードとワーカーのマッピングを調整 •  処理理されたレコードのチェックポイントを作成 •  ワーカーインスタンスの増減やシャードの分割/結合に追従 shardId Shard-0 Shard-1 check point TRIM _HORIZON 4 lease Owner Worker-A Worker-B lease Counter 2 16 ... ... ... Shard-06 Shard-1 3 1 8 7 5 Worker -A Worker -B
  • 38. Amazon  EMR  (Spark  Streaming)  による Kinesis  Streams  からのレコード取得 •  KinesisUtils  を利利⽤用して  DStream  を作成 •  DStream  内部で  Kinesis  Client  Library  が実⾏行行される // Scala の例例 import org.apache.spark.streaming.kinesis.KinesisUtils val ssc = new StreamingContext(sparkConfig, batchInterval) // シャードごとに  DStream を作成 val kinesisDStreams = (0 until numShards).map { i => KinesisUtils.createStream(ssc, appName, streamName, endpointUrl, regionName, InitialPositionInStream.LATEST, kinesisCheckpointInterval, StorageLevel.MEMORY_AND_DISK_2) } // Dstream を統合 val unionDStreams = ssc.union(kinesisDStreams) // Dstream に対する  Transformation val words = unionDStreams.flatMap(byteArray => new String(byteArray).split(“ “)) ...
  • 39. AWS  Lambda  による Kinesis  Streams  からのレコード取得 •  パラメータの  event  からデータレコードの配列列を取得 •  Base64  でデータをデコード(ランタイムが  Node.js  および  Python  の場合) •  AWS  Lambda  サービス内部でチェックポイントが管理理される •  レコード取得開始ポジションは  LATEST  もしくは  TRIM_HORIZON  のみ指定可能 # Node.js の例例 console.log('Loading function'); exports.handler = function(event, context, callback) { event.Records.forEach(function(record) { // Base64 でデータをデコード var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii'); console.log('Decoded payload:', payload); }); callback(null, "success"); };
  • 41. シャード数の 算出例例  –  1 •  送信側キャパシティ  –  秒間  2  MB|1,000  PUT •  処理理側キャパシティ  –  秒間  2  MB •  最⼩小シャード数  –  2 2  つのプロデューサーがそれぞれ  2  KB  のレコードを秒間  500  回送信するケース 2  MB 1  MB| 500  PUT 1  MB| 500  PUT
  • 42. シャード数の 算出例例  –  2 •  送信側キャパシティ  –  秒間  2  MB|1,000  PUT •  処理理側キャパシティ  –  秒間  6  MB •  最⼩小シャード数  –  3 2  つの異異なるコンシューマーアプリケーションを追加する場合 1  MB| 500  PUT 1  MB| 500  PUT 2  MB 2  MB 2  MB
  • 43. シャード数の 算出例例  –  3 •  送信側キャパシティ  –  秒間  2.4  MB|1,200  PUT •  処理理側キャパシティ  –  秒間  7.2  MB •  最⼩小シャード数  –  4 2  つのプロデューサーそれぞれの送信レートが秒間  600  回に増加した場合 2.4  MB 2.4  MB 2.4  MB 1.2  MB| 600  PUT 1.2  MB| 600  PUT
  • 44. SplitShard  API  による シャードの分割 •  シャードの分割によりストリームのキャパシティを拡⼤大 •  親シャードの  HashKeyRange  から⼦子シャードの  StartingHashKey  を決定 •  1  オペレーションで隣隣接する  2  シャードのみへ分割可能 // Java の例例 SplitShardRequest splitShardRequest = new SplitShardRequest(); splitShardRequest.setStreamName(myStreamName); splitShardRequest.setShardToSplit(shard.getShardId()); BigInteger startingHashKey = new BigInteger(shard.getHashKeyRange().getStartingHashKey()); BigInteger endingHashKey = new BigInteger(shard.getHashKeyRange().getEndingHashKey()); String newStartingHashKey = startingHashKey.add(endingHashKey) .divide(new BigInteger("2")).toString(); splitShardRequest.setNewStartingHashKey(newStartingHashKey); client.splitShard(splitShardRequest);
  • 45. MergeShards  API  による シャードの結合 •  シャードの結合によりストリームのキャパシティを縮⼩小 •  1  オペレーションで隣隣接する  2  シャードのみ結合可能 // Java の例例 MergeShardsRequest mergeShardsRequest = new MergeShardsRequest(); mergeShardsRequest.setStreamName(myStreamName); mergeShardsRequest.setShardToMerge(shard1.getShardId()); mergeShardsRequest.setAdjacentShardToMerge(shard2.getShardId()); client.mergeShards(mergeShardsRequest);
  • 46. Kinesis  Streams  の 推奨メトリクス メトリクス 説明 ⽤用途 GetRecords.IteratorAgeMilliseconds 現在の時刻と  GetRecords 呼び出しの最後のレコード がストリームに書き込まれた時間の差 値が⼤大きい場合、シャードの分割とコンシューマーのス ケールアウトを検討 ReadProvisionedThroughputExceeded スロットリングされた  GetRecords 呼び出しの回数 断続的に発⽣生している場合、シャードの分割とコン シューマーのスケールアウトを検討 WriteProvisionedThroughputExceeded スロットリングされた  PutRecord および   PutRecords 呼び出しの回数 断続的に発⽣生している場合、シャードの分割を検討 PutRecord.Success, PutRecords.Success 成功した  PutRecord 呼び出しの回数および少なくと も  1  レコードが成功した  PutRecords 呼び出しの回 数 ストリームへの送信失敗を検出 GetRecords.Success 成功した  GetRecords 呼び出しの回数 ストリームからの受信失敗を検出
  • 47. Kinesis  Streams  の 基本ストリームレベルメトリクス メトリクス 説明 ⽤用途 GetRecords.Bytes ストリームから取得したバイト数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討 GetRecords.Records シャードから取得したレコード数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討 IncomingBytes ストリームに正常に送信されたバイト数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討 IncomingRecords ストリームに正常に送信されたレコード数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討 PutRecord.Bytes PutRecord オペレーションでストリームに送信された バイト数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討
  • 48. Kinesis  Streams  の 基本ストリームレベルメトリクス メトリクス 説明 ⽤用途 PutRecords.Bytes PutRecords オペレーションでストリームに送信され たバイト数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討 PutRecords.Records PutRecords オペレーションで正常に送信されたレ コード数 連続して⼀一定値を上回った場合はシャードの分割を検討 し、連続して⼀一定値を下回った場合はシャードの結合を 検討
  • 49. Kinesis  Streams  の 拡張シャードレベルメトリクス メトリクス 説明 ⽤用途 IncomingBytes シャードに正常に送信されたバイト数 分割/結合対象シャードの決定。連続して⼀一定値を上 回った場合はシャードの分割を検討し、連続して⼀一定値 を下回った場合はシャードの結合を検討 IncomingRecords シャードに正常に送信されたレコード数 分割/結合対象シャードの決定。連続して⼀一定値を上 回った場合はシャードの分割を検討し、連続して⼀一定値 を下回った場合はシャードの結合を検討 IteratorAgeMilliseconds 現在の時刻と  GetRecords 呼び出しの最後のレコード がシャードに書き込まれた時間の差 分割対象シャードの決定。値が⼤大きい場合、シャードの 追加とコンシューマーのスケールアウトを検討 OutgoingBytes シャードから取得したバイト数 分割/結合対象シャードの決定。連続して⼀一定値を上 回った場合はシャードの分割を検討し、連続して⼀一定値 を下回った場合はシャードの結合を検討 OutgoingRecords シャードから取得したレコード数 分割/結合対象シャードの決定。連続して⼀一定値を上 回った場合はシャードの分割を検討し、連続して⼀一定値 を下回った場合はシャードの結合を検討
  • 50. Kinesis  Streams  の 拡張シャードレベルメトリクス •  EnableEnhancedMonitoring  API  にて有効化 •  Amazon  CloudWatch  の追加料料⾦金金が必要 メトリクス 説明 ⽤用途 ReadProvisionedThroughputExceeded シャードでスロットリングされた  GetRecords 呼び出 しの回数 分割対象シャードの決定。断続的に発⽣生している場合、 シャードの分割とコンシューマーのスケールアウトを検 討 WriteProvisionedThroughputExceeded シャードでスロットリングされた  PutRecord および   PutRecords 呼び出しの回数 分割対象シャードの決定。断続的に発⽣生している場合、 シャードの分割を検討
  • 51. Kinesis  Firehose  の メトリクス メトリクス 説明 ⽤用途 DeliveryToElasticsearch.Success 正常にインデックスが作成されたレコード数 Amazon  ES  への配信失敗を検出 DeliveryToRedshift.Success 正常に実⾏行行された  Amazon  Redshift  COPY コマンド数 Amazon  Redshift  への配信失敗を検出 DeliveryToS3.Success 正常に実⾏行行された  Amazon  S3  put  コマンド数 Amazon  S3  への配信失敗を検出
  • 52. オンラインセミナー資料料の配置場所 •  AWS  クラウドサービス活⽤用資料料集 –  http://aws.amazon.com/jp/aws-‐‑‒jp-‐‑‒introduction/ •  AWS  Solutions  Architect  ブログ –  最新の情報、セミナー中のQ&A等が掲載されています –  http://aws.typepad.com/sajp/