Kinesis Data Analytics概要

# 背景・目的
仕事で触る機会があるので、Kinesis Data Analytics（以降、KDAと呼ぶ。）とFlinkを学ぶ。
本ページでは、KDAについて学ぶ。


# 内容
## 概要

- AWSのページを見ると「サーバーレスでフルマネージドな Apache Flink でストリーミングデータから実用的なインサイトを取得」とある。
- ユースケースは、以下の通り。
    - ストリーミングデータを数秒で配信。OpenSearchやS3などに配信
    - インタラクティブにクエリを実行し分析する。
    - 長時間実行されるステートフルな計算を使用して、過去のデータトレンドに基づく異常検出などのリアルタイムアクションをトリガーする。

## 特徴
### サーバレス
- 継続処理するためのインフラの自動プロビジョニング

### 自律的な伸縮性と従量課金
- 着信データストリームに含まれる任意の量のデータに対応するために、アプリケーションを伸縮自在にスケールする。
- ストリーミングアプリケーションの実行に使用されるリソースに対してのみ料金が発生する。

### ミリ秒単位の処理速度
- アラート、ダッシュボード、および実用的なインサイトをリアルタイムで生成可能。

### Apache Flink を使用したストリーム処理アプリケーション
#### OSS
- KDAには、Apache Flink、Apache Beam、Apache Zeppelin、AWS SDK、AWS のサービス統合などのオープンソースライブラリが含まれている。
- Apache Flink は、高可用性で正確なストリーミングアプリケーションを構築するためのオープンソースのフレームワークおよびエンジンである。
- Apache Beam は、複数の実行エンジンで実行できるストリーミングおよびバッチデータ処理アプリケーションを定義するためのオープンソースの統合モデルである。
- AWS SDK は、好みの言語で API を提供することで多くの AWS のサービスでのコーディングの複雑さを解消する。

#### 柔軟な API
- ステートフルなイベント処理、ストリーミング ETL、リアルタイム分析など、さまざまなユースケースに特化した柔軟な API が Java、Scala、Python、SQL で提供される。
- 事前に構築された演算子と分析機能を使用して、数時間で Apache Flink ストリーミングアプリケーションを構築可能。

#### AWSのサービスとの統合
- KDAライブラリを使用して、以下のサービスと統合可能
    - S3
    - Amazon Managed Streaming for Apache Kafka (Amazon MSK)
    - Amazon OpenSearch Service
    - Amazon DynamoDB(DDB)
    - Amazon Kinesis Data Streams（KDS）
    - Amazon Kinesis Data Firehose（KFH）
    - Amazon CloudWatch
    - AWS Glue Schema Registry 

#### アドバンスト統合機能
- KDAライブラリには、 Apache Flink からの 10 以上のコネクタと、カスタム統合の構築機能が含まれる。

#### AWS Glue スキーマレジストリとの互換性
- Flink向けKDAは、AWS Glue スキーマレジストリと互換性がある。
- 登録済みの Apache Avro スキーマを使用してストリーミングデータの進化を検証および制御する。
- スキーマレジストリは、Apache Kafka に接続するための Apache Flink ワークロード向け KDA、MSK、KDSのスキーマをソースまたはシンクとして管理するのに役立つ。
- データストリーミングアプリケーションがスキーマレジストリと統合している場合、スキーマの進化を管理する互換性チェックを利用して、データ品質を向上し、予期しない変更から保護する事が可能。

#### 正確に 1 回の処理
- Exactly Once.
- サービスはすべてのデータが処理され、重複するデータが存在しないことを保証可能。

#### ステートフル処理
- 実行中のアプリケーションストレージに、以前のまたは実行中の計算や状態を保存する。
- リアルタイムおよび過去の結果を任意の期間にわたって比較することができ、アプリケーション中断時に迅速なリカバリが可能。
- 状態は常に暗号化され、実行中のアプリケーションストレージに増分として保存可能。

#### 耐久性のあるアプリケーションのバックアップ
- 簡単な API コールを使用して、耐久性のあるアプリケーションのバックアップを作成および削除可能。
- 中断後すぐに最新のバックアップからアプリケーションの復元や、以前のバージョンにアプリケーションを復元も可能。

### Amazon Kinesis Data Analytics Studio
#### ストリームの検査と可視化
- KDA Studioを使えば、組み込み可視化機能を備えている。
- 1秒未満のクエリをサポート。
- アドホックなクエリを実行して、データ ストリームをすばやく検査し、数秒で結果を表示することが可能。

#### シンプルなビルドと実行の環境
- コードの開発、デバッグ、およびストリーム処理アプリケーションの実行のための単一インターフェイスによる開発エクスペリエンス体験を提供する。

#### SQL、Python、Scala を使用した処理
- KDA Studioは、同じ開発環境で SQL、Python、Scala をサポートしている。

#### サーバーレスの、ストリーム処理アプリケーションの迅速な開発
- プロビジョニング、管理、スケーリングするサーバーはなく、コードを書くだけ
- アプリケーションが消費するリソースについて料金を支払うのみ。
- ノートブック内のコードを、自動スケーリングと永続的な状態で継続的に実行されるストリーム処理アプリケーションに簡単にデプロイ可能。

#### OSS
- KDA Studioは、本番環境で使用される Apache Flink アプリケーション上で実行および生成される。
- Apache Zeppelin ノートブックは、選択した言語でストリーミング アプリケーションを作成するための使い慣れた使いやすいエクスペリエンスを提供.

#### AWS Glue データカタログの使用開始
- KDA Studio は、ソーステーブルと宛先テーブルのスキーマを定義できる AWS Glue データカタログと互換性がある。

### Kinesis Data Analytics SQL アプリケーション
- 新しいプロジェクトでは、SQL アプリケーション用の KDA ではなく、新しい KDA Studio の使用をお勧め。
- KDA Studio は使いやすさと高度な分析機能を組み合わせており、洗練されたストリーム処理アプリケーションでも数分で構築可能。

#### 標準 SQL のサポート
- 標準 ANSI SQL がサポート

#### 統合された入力および出力
- KDAは、KDSとKFHと統合されているので、ストリーミングデータをかんたんに取り込むことが可能。

#### コンソールベースの SQL エディタ
- コンソールベースのエディタを利用することで、ストリーミングデータを使用して、スライディング時間枠平均のように SQL クエリを構築可能。
- ライブデータを使用してストリーミングの結果やエラーを表示することで、デバッグしたり、インタラクティブにスクリプトを改良したりすることが可能.

#### 簡単に使用できるスキーマエディタ
- KDAが提供する使いやすいスキーマエディタを利用することにより、入力データの構造を把握して編集可能。


#### 事前構築 SQL テンプレート
- インタラクティブな SQL エディタには、集計、イベントごとの変換、フィルタリングなど、最も一般的な操作のベースライン SQL コードを提供する SQL テンプレートのコレクションが付属。
- 分析タスクに適切なテンプレートを選択して、SQL エディタを使用して提供されているコードを編集し、特定のユースケースに合わせてカスタマイズするだけで済む。


#### 高度なストリーム処理機能
- KDA にはストリーム処理向けに最適化された機能が備わっているため、ストリーミングデータの異常検出や top-K 分析といった高度な分析を簡単に実施可能。

# 参考

https://aws.amazon.com/jp/kinesis/data-analytics/?nc=sn&loc=1