

# シナリオ 4: デバイスセンサーのリアルタイム異常検出と通知
<a name="scenario-4"></a>

*ABC4Logistics* 社は、ガソリン、液体プロパン (LPG)、ナフサなどの可燃性の高い石油製品を港から各都市に輸送しています。位置、エンジン温度、コンテナ内の温度、走行速度、駐車場所、道路状況などをモニタリングするために複数のセンサーが搭載された車両が数百台あります。*ABC4Logistics* の要件の 1 つは、エンジンとコンテナの温度をリアルタイムでモニタリングし、異常が発生した場合にドライバーとフリートモニタリングチームに警告することです。このような状況を検出し、リアルタイムでアラートを生成するために、*ABC4Logistics* は次のアーキテクチャを AWS に実装しました。

![ABC4Logistics のデバイスセンサーのリアルタイム異常検出および通知アーキテクチャ](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/streaming-data-solutions-amazon-kinesis/images/SDS-image-5.png)


*ABC4Logistics のデバイスセンサーのリアルタイム異常検出および通知アーキテクチャ*

デバイスセンサーからのデータは AWS IoT Gateway によって取り込まれ、[AWS IoT ルール](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)エンジンによってストリーミングデータが Amazon Kinesis Data Streams で利用可能になります。*ABC4Logistics* は、Kinesis Data Analytics を使用して、Kinesis Data Streams 内のストリーミングデータに対してリアルタイム分析を実行できます。

*ABC4Logistics* は、Kinesis Data Analytics を使用して、センサーからの温度測定値が 10 秒間にわたって通常の測定値から逸脱しているかどうかを検出し、そのレコードを別の Kinesis Data Streams インスタンスに取り込み、異常なレコードを特定できます。Amazon Kinesis Data Streams は Lambda 関数を呼び出し、Amazon SNS を介してドライバーとフリートモニタリングチームにアラートを送信できます。

Kinesis Data Streams 内のデータも Amazon Kinesis Data Firehose にプッシュダウンされます。Amazon Kinesis Data Firehose はこのデータを Simple Storage Service (Amazon S3) に保持するため、ABC4Logistics はセンサーデータに対してバッチまたはほぼリアルタイムの分析を実行できます。*ABC4Logistics* では、[Amazon Athena](https://aws.amazon.com/athena/) を使用して S3 内のデータをクエリし、[Amazon QuickSight](https://aws.amazon.com/quicksight/) を使用して可視化を行います。データを長期間保持するには、[S3 ライフサイクル](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)ポリシーを使用して [Amazon S3 Glacier](https://aws.amazon.com/s3/glacier/) にデータをアーカイブします。

次に、このアーキテクチャの重要なコンポーネントについて詳しく説明します。

## Amazon Kinesis Data Analytics
<a name="amazon-kinesis-data-analytics"></a>

[Amazon Kinesis Data Analytics](https://aws.amazon.com/kinesis/data-analytics/) を使用すると、ストリーミングデータを変換および分析し、異常値にリアルタイムで対応できます。これは AWS 上のサーバーレスサービスです。つまり、Kinesis Data Analytics がプロビジョニングを処理し、あらゆるデータスループットを処理できるようにインフラストラクチャを伸縮自在にスケールします。これにより、ストリーミングインフラストラクチャのセットアップと管理という差別化されていない重労働が排除され、より多くの時間をストリーミングアプリケーションの作成に費やすことができます。

Amazon Kinesis Data Analytics を使用すると、複数のオプション (スタンダード SQL、Java、Python、Scala の Apache Flink アプリケーションを含む) を使用してインタラクティブにストリーミングデータをクエリしたり、Java を使用して Apache Beam アプリケーションを構築してデータストリームを分析したりできます。

これらのオプションにより、ストリーミングアプリケーションとソース/ターゲットのサポートの複雑度に応じて、特定のアプローチを柔軟に使用できます。次のセクションでは、Flink アプリケーション用 Kinesis Data Analytics オプションについて説明します。

## Amazon Kinesis Data Analytics for Apache Flink アプリケーション
<a name="kinesis-data-analytics-for-apache-flink"></a>

[Apache Flink](https://flink.apache.org/) は人気の高いオープンソースフレームワークであり、[無制限および制限付きデータストリーム](https://ci.apache.org/projects/flink/flink-docs-release-1.11/concepts/flink-architecture.html)に対するステートフルな計算を行う分散処理エンジンです。Apache Flink は、exactly-one セマンティクスをサポートし、インメモリ速度とスケールで計算を実行するように設計されています。Apache Flink ベースのアプリケーションは、耐障害性の高い方法で、高スループットで低レイテンシーを実現するのに役立ちます。

[Amazon Kinesis Data Analytics for Apache Flink](https://docs.aws.amazon.com/kinesisanalytics/latest/java/what-is.html) を使用すると、複雑な分散型 Apache Flink 環境を管理しなくても、ストリーミングソースに対してコードを作成して実行し、時系列分析の実行、リアルタイムダッシュボードのフィード、リアルタイムのメトリクスの作成を行うことができます。高レベルの Flink プログラミング機能は、自分で Flink インフラストラクチャをホストする場合と同じ方法で使用できます。

Apache Flink 用 Kinesis Data Analytics を使用すると、Java、Scala、Python、または SQL でアプリケーションを作成して、ストリーミングデータを処理および分析できます。典型的な Flink アプリケーションは、入力ストリームまたはデータロケーションまたは*ソース*からデータを読み取り、演算子または関数を使用してデータを変換/フィルターまたは結合し、データを出力ストリームまたはデータロケーション、または*シンク*に保存します。

以下のアーキテクチャ図表は、Kinesis Data Analytics Flink アプリケーションでサポートされているソースとシンクの一部を示しています。ソース/シンク用にあらかじめバンドルされたコネクタに加えて、Kinesis Data Analytics の Flink アプリケーション用のさまざまなソース/シンクにカスタムコネクタを取り込むこともできます。

![リアルタイムストリーミング処理のための Kinesis Data Analytics 上の Apache Flink アプリケーション](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/streaming-data-solutions-amazon-kinesis/images/SDS-image-6.png)


*リアルタイムストリーミング処理のための Kinesis Data Analytics 上の Apache Flink アプリケーション*

デベロッパーは、お好みの IDE を使用して Flink アプリケーションを開発し、[AWS マネジメントコンソール](https://aws.amazon.com/console/) または DevOps ツールから Kinesis Data Analytics にデプロイできます。

### Amazon Kinesis Data Analytics Studio
<a name="amazon-kinesis-data-analytics-studio"></a>

[Kinesis Data Analytics Studio](https://docs.amazonaws.cn/en_us/kinesisanalytics/latest/java/how-notebook.html) は、Kinesis Data Analytics サービスの一部として、リアルタイムでデータストリームをインタラクティブにクエリしたり、SQL、Python、および Scala を使用してストリーム処理アプリケーションを簡単に構築して実行したりできます。Studio ノートブックは [Apache Zeppelin](https://zeppelin.apache.org/) を搭載しています。

[Studio ノートブック](https://docs.aws.amazon.com/kinesisanalytics/latest/java/how-notebook.html)を使用すると、ノートブック環境で Flink アプリケーションコードを開発し、コードの結果をリアルタイムで表示して、ノートブック内で可視化できます。Apache Zeppelin と Apache Flink を搭載した Studio ノートブックは、Kinesis Data Streams と Amazon MSK コンソールからワンクリックで作成することも、Kinesis Data Analytics コンソールから起動することもできます。

Kinesis Data Analytics Studio の一部としてコードを反復的に開発したら、ノートブックを Kinesis Data Analytics アプリケーションとしてデプロイし、ストリーミングモードでの継続的な実行、ソースからのデータの読み取り、送信先への書き込み、長時間実行されるアプリケーションの状態の維持、ソースストリームのスループットに基づいて自動的なスケーリングを行うことができます。以前、お客様は AWS でのリアルタイムストリーミングデータのインタラクティブな分析に [Kinesis Data Analytics for SQL アプリケーション](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/what-is.html)を使用していました。

Kinesis Data Analytics for SQL アプリケーションは引き続き使用できますが、新しいプロジェクトでは、新しい [Kinesis Data Analytics Studio](https://aws.amazon.com/blogs/aws/introducing-amazon-kinesis-data-analytics-studio-quickly-interact-with-streaming-data-using-sql-python-or-scala/) を使用することをお勧めします。Kinesis Data Analytics Studio は使いやすさと高度な分析機能を組み合わせており、洗練されたストリーム処理アプリケーションでも数分で構築できます。

Kinesis Data Analytics Flink アプリケーションに耐障害性を備えるには、「[Kinesis Data Analytics for Apache Flink での耐障害性の実装](https://docs.aws.amazon.com/kinesisanalytics/latest/java/how-fault.html)」で説明されているように、チェックポイントとスナップショットを利用できます。

Kinesis Data Analytics Flink アプリケーションは、データ処理で[exactly-one セマンティクス](https://ci.apache.org/projects/flink/flink-docs-master/docs/concepts/stateful-stream-processing/)のアプリケーション、チェックポイント機能、Kinesis Data Streams、Kinesis Data Firehose、Amazon MSK、Rabbit MQ、Apache Cassandra (カスタムコネクタを含む) などのデータソースからのデータ処理など、複雑なストリーミング分析アプリケーションを作成するのに便利です。

Flink アプリケーションでストリーミングデータを処理した後、Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose、Amazon DynamoDB、Amazon OpenSearch Service、Amazon Timestream、Simple Storage Service (Amazon S3) など、さまざまなシンクまたは送信先にデータを永続化できます。Kinesis Data Analytics Flink アプリケーションでは、1 秒未満のパフォーマンス保証も提供されます。

### Kinesis Data Analytics 向け Apache Beam アプリケーション
<a name="apache-beam-applications-for-kinesis-data-analytics"></a>

[Apache Beam](https://beam.apache.org/) は、ストリーミングデータを処理するためのプログラミングモデルです。Apache Beam は、さまざまなエンジン、または Flink、Spark ストリーミング、Apache Samza などのランナーで実行できる高度なデータ並列処理パイプラインを構築するためのポータブル API レイヤーを提供します。

Kinesis Data Analytics アプリケーションで Apache Beam フレームワークを使用して、ストリーミングデータを処理できます。Apache Beam を使用する Kinesis Data Analytics アプリケーションは、[ Apache Flink ランナー](https://beam.apache.org/documentation/runners/flink/)を使用して Beam パイプラインを実行します。

### 概要
<a name="summary-5"></a>

 AWS ストリーミングサービスである Amazon Kinesis Data Streams、Amazon Kinesis Data Analytics、および Amazon Kinesis Data Firehose を利用することで、

*ABC4Logistics* は、温度測定値の異常なパターンを検出し、ドライバーと車両管理チームにリアルタイムで通知して、車両の完全な故障や火災などの重大な事故を防止できます。