Amazon Managed Service for Apache Flink
Apache Flink アプリケーションをマネージドに実行するストリーム処理サービス
何ができるか
Amazon Managed Service for Apache Flink は、Apache Flink アプリケーションをフルマネージドで実行するサービスです。Kinesis Data Streams、MSK (Kafka)、S3 などからリアルタイムにデータを取り込み、SQL または Java/Python で変換・集計・分析を行います。ステートフルなストリーム処理とイベント時間ベースのウィンドウ処理に対応しています。
どのような場面で使うか
リアルタイムのログ分析、IoT センサーデータのストリーム処理、クリックストリーム分析、不正検知のリアルタイムパターンマッチング、ETL パイプラインのリアルタイム化に利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
ベルトコンベアの検品ラインに例えられます。流れてくる製品 (データ) を止めることなく、リアルタイムに検査 (変換・集計) し、不良品 (異常データ) を検出して仕分けます。
Managed Flink とは
この記事は約 2 分で読めます。 Amazon Managed Service for Apache Flink は、ストリーム処理のマネージドサービスです。Apache Flink はステートフルなストリーム処理フレームワークで、イベント時間ベースのウィンドウ処理、exactly-once セマンティクス、チェックポイントによる障害復旧を提供します。Managed Flink は Flink クラスターの構築・運用・スケーリングを AWS が管理します。
Flink SQL とアプリケーション
Flink SQL を使えば、SQL でストリーム処理を記述できます。ストリームデータに対する SELECT、JOIN、GROUP BY、ウィンドウ関数などを SQL で表現し、リアルタイムの集計やフィルタリングを実行します。より複雑な処理には Java または Python の Flink API を使用します。アプリケーションの JAR ファイルを S3 にアップロードして実行します。
はじめかた
Managed Flink コンソールでアプリケーションを作成し、ランタイム (SQL、Java、Python) を選択します。入力ソース (Kinesis Data Streams、MSK) と出力先 (S3、Kinesis、OpenSearch) を設定します。Flink SQL の場合は Studio ノートブックでインタラクティブにクエリを開発・テストできます。
Azure・オンプレミスとの比較
AWS の優位点
- Flink クラスターの構築・運用が不要で、アプリケーションのデプロイとスケーリングを AWS が管理
- Flink SQL と Studio ノートブックでインタラクティブにストリーム処理を開発・テスト可能
- exactly-once セマンティクスとチェックポイントによる障害復旧で、データの正確性を保証
注意点
- KPU (Kinesis Processing Unit) の時間課金。常時稼働するため、バッチ処理には Glue の方がコスト効率が良い
- シンプルなストリーム処理なら Kinesis Data Streams + Lambda の方が構成がシンプル。Flink は複雑なステートフル処理に適する
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。