Amazon Managed Service for Apache Flink のアイコン

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・オンプレミスとの比較

Azure の対応サービス Azure Stream Analytics
オンプレミスでの対応手段 Apache Flink (セルフホスト)、Apache Spark Structured Streaming

AWS の優位点

  • Flink クラスターの構築・運用が不要で、アプリケーションのデプロイとスケーリングを AWS が管理
  • Flink SQL と Studio ノートブックでインタラクティブにストリーム処理を開発・テスト可能
  • exactly-once セマンティクスとチェックポイントによる障害復旧で、データの正確性を保証

注意点

  • KPU (Kinesis Processing Unit) の時間課金。常時稼働するため、バッチ処理には Glue の方がコスト効率が良い
  • シンプルなストリーム処理なら Kinesis Data Streams + Lambda の方が構成がシンプル。Flink は複雑なステートフル処理に適する

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。