AWSでのリアルタイムデータ処理:Kinesis、SQS、Step Functions
この記事は、AWSのデータ分析系サービスを紹介するシリーズの第4回です。今回は、IoTやログ処理などのリアルタイムデータ処理のユースケースについて紹介します。具体的には、Amazon Kinesisを使ったリアルタイムデータストリーミング、Amazon SQSによる非同期メッセージキューサービス、そしてAWS Step Functionsを用いた処理フローの設計方法について解説します。それぞれのサービスの概要を説明した後、AWSのデータエンジニアリングに関する問題を基にしたケーススタディを通じて、実践的な内容をご紹介します。
目次[非表示]
- 1.Amazon Kinesis
- 1.1.主な機能・特徴
- 1.2.Amazon Kinesisの各サービス紹介
- 1.2.1.Amazon Kinesis Video Streams
- 1.2.2.Amazon Data Firehose
- 1.2.3.Amazon Kinesis Data Streams
- 1.2.4.Amazon Kinesis Data Analytics
- 1.3.ケーススタディ
- 2.Amazon SQS
- 2.1.メッセージキューのタイプ
- 2.2.利用シーン
- 2.3.ケーススタディ
- 3.AWS Step Functions
シリーズその他の記事はこちら
Amazon Kinesis
Amazon Kinesisは、フルマネージドなリアルタイムデータストリーミングサービスです。このサービスを利用することで、大規模なストリーミングデータをリアルタイムで収集、処理、分析し、即時のインサイトを得ることが可能です。
主な機能・特徴
Amazon Kinesisは、リアルタイムのビデオストリームとデータストリームの収集、処理、分析を行うことができます。
主なユースケース
- リアルタイムアプリケーションの作成
- IoTデバイスデータの分析
- 動画分析アプリケーションの構築
Amazon Kinesisの各サービス紹介
各用途に特化したサービスを展開するAmazon Kinesis。ここからは、それぞれのサービスについて簡単にご紹介をしたいと思います。
Amazon Kinesis Video Streams
このサービスは、ストリーミング動画の分析と再生を行います。大規模な同時配信には適していませんが、映像を保存・分析する用途に最適です。また、配信のためのプロビジョニングは不要で、スケーラブルな設計となっています。動画の保存期間は最大で10年まで設定可能です。
Amazon Data Firehose
データをS3などに配信することができ、Lambdaを利用したデータ変換も可能です。データをストレージに送信することができますが、配信が秒単位で行われるため、収集スピードはKinesis Data Streamsよりも遅くなります。
Amazon Kinesis Data Streams
このサービスは、ストリームデータを処理するアプリケーションの構築を支援します。自動プロビジョニングおよびスケーリングが可能で、大量のデータをリアルタイムで収集することができます。
Amazon Kinesis Data Analytics
ストリーミングデータをリアルタイムで分析するためのフルマネージドサービスです。スループットに応じて処理能力を伸縮させることができ、収集されたデータを保存する前に分析することが可能です。このサービスには、SQLベースの「Kinesis Data Analytics for SQL Applications」と、Apache Flinkを基盤とした「Amazon Managed Service for Apache Flink」があります。
ケーススタディ
あるeコマース企業では、AWS上で複数のアプリケーションを実行しています。この企業は、一元的なストリーミングログ取り込みソリューションを設計したいと考えており、以下の要件を満たす必要があります。
-
ログファイルの形式変換
取り込むログファイルをApache Parquet形式に変換する必要があります。
-
データの保存
変換後のログファイルをAmazon S3に保存します。
-
ログファイルの変動
作成されるログファイルの数は1日を通して変化します。
-
リアルタイム性の確保
データエンジニアは、ログファイルがほぼリアルタイムで送信されるように設定する必要があります。
-
運用上のオーバーヘッドの最小化
ソリューションは運用上のオーバーヘッドを最小限に抑える必要があります。
eコマース企業のストリーミングログ取り込みソリューション
これらの要件を満たすために、以下のソリューションを提案します。
-
Amazon Kinesis Data Firehoseの活用
アプリケーションを設定して、ログファイルをAmazon Kinesis Data Firehoseに送信します。これにより、運用上のオーバーヘッドを最小限に抑えつつ、ログファイルをAmazon S3に効率的に送信することが可能です。
-
AWS Lambdaによるデータ変換
Kinesis Data Firehoseを設定して、ログファイルをApache Parquet形式に変換するAWS Lambda関数を呼び出すようにします。この変換処理は、ログファイルがAmazon S3に送信される前に行われます。
-
S3への保存
最終的に、変換されたParquetファイルを指定したS3バケットに送信します。これにより、データは効率的に保存され、後で分析や処理に利用することができます。
このように、Amazon Kinesis Data FirehoseとAWS Lambdaを組み合わせることで、eコマース企業は運用上のオーバーヘッドを最小限に抑えながら、ほぼリアルタイムでログファイルを取り込み、Apache Parquet形式に変換してAmazon S3に保存することができます。このソリューションにより、企業は効率的なデータ管理と分析基盤を構築することが可能となります。
Amazon SQS
Amazon SQS(Simple Queue Service)は、AWSが提供するフルマネージド型のメッセージキューイングサービスです。このサービスにより、アプリケーション間でメッセージを安全に送受信することができます。
メッセージキューのタイプ
Amazon SQSのメッセージキュータイプは、「標準キュー」「FIFOキュー」の2種類に分けられます。
<標準キュー>
高いスループットと柔軟性を重視したキュータイプ
無制限のスループット |
ほぼ無制限のメッセージ処理能力を提供します。 |
At Least Once 配信 |
メッセージは少なくとも1回は配信されますが、重複の可能性があります。 |
ベストエフォート型の順序付け |
メッセージの順序は保証されず、順序が入れ替わる可能性があります。 |
<FIFO(First-In-First-Out)キュー>
メッセージの順序と正確な処理を重視したキュータイプです。
高スループット(ハイスループットモード) |
大量のメッセージ処理に対応しています。 |
Exactly-Once 処理 |
メッセージは重複なく、正確に1回だけ配信されます。 |
First-In-First-Out 配信 |
メッセージは送信された順序通りに配信されます。 |
また、Amazon SQSのその他の機能としては、下記のものがあります。
- バッチ処理
- ロングポーリング
- メッセージ保持期間
- サーバー側の暗号化
- デッドレターキュー
利用シーン
-
アプリケーションの信頼性とスケール向上
Amazon SQSは、キューを使用してマイクロサービスを分離および接続するためのシンプルで信頼性の高い方法を提供します。これにより、マイクロサービスを分離し、イベント駆動型アプリケーションを効率的に処理することが可能です。
-
高い費用対効果
Amazon SQSは、複数のワーカーがワークロードと待機時間の要件に基づいて自動的にスケールアップおよびスケールダウンする単一のキューに作業を配置することで、高い費用対効果を実現し、時間通りに作業を完了させることができます。
-
重複排除とメッセージの順序維持
メッセージの順序を維持しながら大規模に処理することにより、メッセージの重複を排除することができます。
ケーススタディ
あるデータエンジニアは、Amazon Simple Queue Service (Amazon SQS) キューに変換用のデータを追加するアプリケーションを設計しています。このアプリケーションでは、キューからマイクロサービスがメッセージを受信し、データ処理を行います。データエンジニアは、メッセージの持続性を確保することを重視しています。
Amazon SQSを利用したデータ処理アプリケーションの設計
データエンジニアは、SQSキューからメッセージを削除できるイベントについて検討しています。具体的には、以下の3つの条件でメッセージが削除されることを理解しています。
-
DeleteMessage API コールの実行
アプリケーションがAmazon SQSに対してDeleteMessage APIコールを実行することが、キューからメッセージを削除する一般的な方法です。コンシューマーアプリケーションは、メッセージを受信し処理した後、キューに対して削除の指示を行います。
-
maxReceiveCountの達成
maxReceiveCountは、メッセージが削除されてデッドレターキューに追加されるまでに受信できる回数を示すキューのプロパティです。この回数に達すると、メッセージは削除され、デッドレターキューに移動します。
-
キューのパージ
キューをパージすると、キュー自体を削除するのではなく、キュー内のすべてのメッセージが削除されます。この操作は、アプリケーションをリセットするためのトラブルシューティングステップとして利用されることがあります。
これらのメッセージ削除イベントを考慮することで、データエンジニアはAmazon SQSを利用したデータ処理アプリケーションの設計において、メッセージの持続性を確保しつつ、効率的なデータフローを実現することができます。このような設計により、マイクロサービス間でのデータ処理がスムーズに行われ、システム全体の信頼性が向上します。
AWS Step Functions
Amazon Step Functionsは、複雑なアプリケーションやワークフローを簡単に構築、実行、管理することができるサーバーレスのオーケストレーションサービスです。
主な機能・特徴
-
分散アプリケーションのオーケストレーション
マイクロサービス全体を、ステートマシンと呼ばれる仕組みでオーケストレートすることが可能です。
-
可視化
定義したステートマシンは、AWSコンソールからワークフローとして見やすく可視化できます。
-
実行履歴の追跡
ステートマシンの各ステップの実行履歴をログから簡単に追跡することができます。
利用シーン
-
マイクロサービスオーケストレーション
数のAWS Lambda関数を連携させることで、複雑なWebアプリケーションのバックエンド処理を構築することができます。
-
メディア処理
動画や画像コンテンツのトランスコード、サムネイル生成、メタデータ抽出などのメディア処理ワークフローを簡単に構築できます。
-
セキュリティとITオートメーション
IAMポリシーの作成やインシデント対応などのセキュリティ対策を自動化することが可能です。また、手動承認ステップも組み込むことで、セキュリティレベルと運用効率を両立させることができます。Standardワークフローが特に適しています。
-
データ処理とETLオーケストレーション
大量のデータを効率的に処理し、データレイクやデータウェアハウスへのデータ統合を自動化することができます。これにより、ビジネスインテリジェンスを強化するデータ分析基盤を構築することができます。
-
機械学習オペレーション
機械学習モデルのトレーニング、評価、デプロイなどのMLパイプラインを自動化することができます。
ケーススタディ
ある企業では、社内の運用データベースからAmazon S3上のデータレイクへデータを取り込むために、複数のETL(抽出、変換、ロード)ワークフローを運用しています。これらのワークフローでは、AWS GlueやAmazon EMRを活用してデータ処理を行っていますが、現行のアーキテクチャにはいくつかの課題があります。
課題
- 複数のETLワークフローが独立して存在しているため、管理が複雑でリソースの非効率な利用やアーキテクチャの複雑性が問題となっている
- 手作業での介入が多く、運用負荷が高い状況
これらの要件を満たしつつ、運用の負荷を極力減らすための最適なソリューションが求められています。
社内運用データベースからのデータ取り込み
これらの課題を解決するために、AWS Step Functionsを選択しました。AWS Step Functionsは、複数のETLジョブやAWS Lambda関数を組み合わせて、複雑なワークフローを視覚的に設定することができるサービスです。この機能により、手作業でのジョブ実行や監視から解放され、自動化されたパイプラインを作成することが可能になります。
具体的には、社内データセンターにある運用データベースから、AWS Step Functionsを使用してETLワークフローを実行し、最終的にAmazon S3のデータレイクにデータを送る形になります。これにより、手作業の削減や運用負荷の軽減が実現され、効率的なデータ取り込みが可能となります。
おわりに
ここまで、AWSのデータ分析系サービスを紹介するシリーズの第4回として、リアルタイムデータ処理に関連するAmazon Kinesis、Amazon SQS、AWS Step Functionsの特徴と活用方法について詳しくご紹介しました。これらのサービスは、リアルタイムのデータストリーミング、メッセージキューイング、複雑なワークフローのオーケストレーションを通じて、データエンジニアが直面する課題を解決するための強力なツールです。今後もデータ分析の重要性が高まる中、これらのサービスを効果的に活用することで、企業は迅速かつ効率的なデータ処理を実現できるでしょう。
次回は、AIとML(機械学習)にフォーカスし、Amazon SageMakerや、Amazon EMRについて取り上げる予定です。ぜひお楽しみに!
Kyriosでは、データ分析プラットフォームの構築・運用を支援しています。詳細は、下記のページをご覧ください。