View a markdown version of this page

シナリオ 3: データインサイトプロセスのためのクリックストリームデータの準備 - Amazon Kinesis を使用した AWS でのストリーミングデータソリューション

シナリオ 3: データインサイトプロセスのためのクリックストリームデータの準備

Fast Sneakers は、トレンディなスニーカーを中心としたファッションブティックです。在庫や、昨夜テレビでそのブランドのスニーカーを身に着けた有名人や有名選手が映ったなどのトレンドに応じて、特定の靴の価格が上下する可能性があります。Fast Sneakers では、収益を最大化するために、このようなトレンドを追跡および分析することが重要です。

Fast Sneakers は、保守が必要な新しいインフラストラクチャを伴う追加のオーバーヘッドをプロジェクトに導入することを望んでいません。同社は、データエンジニアがデータ変換に集中し、データサイエンティストが独自に機械学習機能に取り組めるような、適切なグループに開発を分割したいと考えています。

需要に応じて迅速に対応し、自動的に価格を調整するために、Fast Sneakers は、重要なイベント (クリックインタレストや購入データなど) をストリーミングし、イベントデータを変換および拡張して ML モデルにフィードしています。機械学習モデルは、価格調整が必要かどうかを判断できます。これにより、 Fast Sneakers は、自社製品の利益を最大化するために、価格を自動的に変更できます。

Fast Sneakers のリアルタイムの価格調整

Fast Sneakers のリアルタイムの価格調整

このアーキテクチャ図表は、Fast Sneakers が Kinesis Data Streams、AWS Glue、および DynamoDB Streams を使用して作成したリアルタイムストリーミングソリューションを示しています。これらのサービスを活用することで、同社はサポートインフラストラクチャのセットアップや保守に時間を費やすことなく、伸縮性と信頼性に優れたソリューションを得ることができました。ストリーミングの抽出、変換、ロード (ETL) ジョブと機械学習モデルに集中することで、会社に価値をもたらすものに時間を費やすことができます。

ワークロードで使用されるアーキテクチャとテクノロジーをよりよく理解するために、使用するサービスの詳細を以下に示します。

AWS Glue および AWS Glue ストリーミング

AWS Glue は、データのカタログ化、クリーニング、エンリッチ化、データストア間での確実な移動に使用できるフルマネージド型 ETL サービスです。AWS Glue を使用すると、ETL ジョブの作成にかかるコスト、複雑さ、時間を大幅に削減できます。AWS Glue はサーバーレスであるため、インフラストラクチャをセットアップまたは管理する必要はありません。ジョブの実行中に使用するリソースに対してのみ支払いが発生します。

AWS Glue を使用すると、AWS Glue ストリーミング ETL ジョブを使用してコンシューマーアプリケーションを作成できます。これにより、Apache Spark やその他の Spark ベースのモジュール書き込みを利用して、イベントデータを消費および処理できます。このドキュメントの次のセクションでは、このシナリオについてさらに詳しく説明します。

AWS Glue Data Catalog

AWS Glue Data Catalog には、AWS Glue で ETL ジョブのソースおよびターゲットとして使用されるデータへの参照が含まれています。AWS Glue Data Catalog は、データの場所、スキーマ、およびランタイムメトリクスへのインデックスです。データカタログ内の情報は、ETL ジョブの作成とモニターに使用できます。Data Catalog の情報はメタデータテーブルとして保存され、各テーブルが 1 つのデータストアを指定します。クローラを設定すると、DynamoDB、S3、Java Database Connectivity (JDBC) 接続ストアなど、さまざまな種類のデータストアを自動的に評価し、メタデータとスキーマを抽出して、AWS Glue Data Catalog でテーブル定義を作成できます。

AWS Glue ストリーミング ETL ジョブで Amazon Kinesis Data Streams を操作するには、AWS Glue Data Catalog データベースのテーブルにストリーミングを定義するのがベストプラクティスです。サポートされている多くの形式 (CSV、JSON、ORC、Parquet、Avro、または Grok を使用したお客様の形式) の 1 つである Kinesis のストリーミングを使用して、ストリームソーステーブルを定義します。スキーマを手動で入力することも、このステップを AWS Glue ジョブに任せてジョブの実行時に決定することもできます。

AWS Glue ストリーミング ETL ジョブ

AWS Glue は、Apache Spark サーバーレス環境で ETL ジョブを実行します。AWS Glue は、独自のサービスアカウントでプロビジョンして管理する仮想リソースでこれらのジョブを実行します。AWS Glue では、Apache Spark ベースのジョブを実行できることに加えて、DynamicFrames を使用した Spark の上に、追加レベルの機能が提供されます。

DynamicFrames は、構造体や配列などのネストされたデータをサポートする分散テーブルです。各レコードは自己記述型であり、半構造化データのスキーマの柔軟性を持つよう設計されています。DynamicFrame のレコードには、データと、そのデータを記述するスキーマの両方が含まれます。Apache Spark DataFramesDynamicFrames はどちらも ETL スクリプトでサポートされており、前後に変換できます。DynamicFrames は、データクリーニングと ETL のための高度な変換のセットを提供します。

AWS Glue ジョブで Spark ストリーミングを使用することで、継続的に実行されるストリーミング ETL ジョブを作成し、Amazon Kinesis Data Streams、Apache Kafka、Amazon MSK などのストリーミングソースからデータを消費できます。ジョブはデータのクリーニング、マージ、変換を行い、その結果を Simple Storage Service (Amazon S3)、Amazon DynamoDB、JDBC データストアなどのストアにロードできます。

デフォルトでは、AWS Glue によるデータ処理と書き出しは 100 秒ウィンドウ単位で行われます。これにより、データを効率的に処理しつつ、想定より遅く到着したデータに対する集計を実行できます。ウィンドウサイズは、応答速度と集計の精度に合わせて調整することで構成できます。AWS Glue ストリーミングジョブは、Kinesis Data Stream から読み取られたデータを追跡するためにチェックポイントを使用します。AWS Glue でのストリーミング ETL ジョブの作成に関するチュートリアルについては、AWS Glue の「ストリーミング ETL ジョブの追加」を参照してください。

Amazon DynamoDB

Amazon DynamoDB は、あらゆる規模で 10 ミリ秒未満のパフォーマンスを実現する key-value データベースおよびドキュメントデータベースです。これはフルマネージド型でマルチリージョン、マルチアクティブで耐久性があるデータベースであり、セキュリティ、バックアップと復元、インターネット規模のアプリケーション用のインメモリキャッシュが組み込まれています。DynamoDB では、1 日あたり 10 兆件を超えるリクエストを処理でき、ピーク時で 1 秒あたり 2,000 万件を超えるリクエストに対応できます。

DynamoDB ストリームのデータキャプチャの変更

DynamoDB ストリームは、DynamoDB テーブル内の項目に加えられた変更に関する情報の順序付けされた情報です。テーブルでストリーミングを有効にすると、DynamoDB はテーブル内のデータ項目に加えられた各変更に関する情報をキャプチャします。DynamoDB は AWS Lambda 上で実行されているため、トリガー (DynamoDB ストリーム内のイベントに自動的に応答するコード) を作成できます。トリガーを使用すると、DynamoDB テーブル内のデータ変更に対応するアプリケーションを構築できます。

テーブルでストリーミングを有効にすると、ストリーミングの Amazon リソースネーム (ARN) を、お客様が作成した Lambda 関数に関連付けることができます。テーブルの項目が変更されるとすぐに、新しいレコードがテーブルのストリームに表示されます。AWS Lambda はストリーミングをポーリングし、新しいストリームレコードを検出すると、Lambda 関数を同期的に呼び出します。

Amazon SageMaker および Amazon SageMaker サービスエンドポイント

Amazon SageMaker は、デベロッパーやデータサイエンティストが機械学習モデルを迅速かつあらゆる規模で構築、トレーニング、デプロイできるようにするフルマネージドプラットフォームです。SageMaker には、機械学習モデルを構築、トレーニング、デプロイするために、組み合わせと単体のどちらでも使用可能なモジュールが用意されています。Amazon SageMaker サービスエンドポイントを使用すると、Amazon SageMaker の内部または外部で開発したデプロイ済みモデルを使用して、リアルタイム推論用のマネージド型ホストエンドポイントを作成できます。

AWS SDK を利用することで、コンテンツとともにコンテンツタイプ情報を渡す SageMaker エンドポイントを呼び出し、渡されたデータに基づいてリアルタイムの予測を受け取ることができます。これにより、機械学習モデルの設計と開発を、推測された結果に対してアクションを実行するコードから分離しておくことができます。

これにより、データサイエンティストは機械学習に集中でき、機械学習モデルを使用しているデベロッパーは機械学習モデルをコードでどのように使用するかに集中できます。SageMaker でエンドポイントを呼び出す方法の詳細については、Amazon SageMaker API リファレンスの「InvokeEndpoint」を参照してください。

データインサイトをリアルタイムで推測する

前のアーキテクチャ図表は、Fast Sneakers の既存のウェブアプリケーションが、クリックストリームイベントを含む Kinesis Data Stream を追加したことを示しています。このデータストリームは、ウェブサイトからのトラフィックとイベントデータを提供します。分類、製品属性、価格などの情報を含む製品カタログと、注文された商品、請求、配送などのデータを含む注文テーブルは、別個の DynamoDB テーブルです。データストリームソースと該当する DynamoDB テーブルには、AWS Glue ストリーミング ETL ジョブで使用されるメタデータと AWS Glue Data Catalog で定義されたスキーマがあります。

Fast Sneakers は、Apache Spark、Spark ストリーミング、および AWS Glue ストリーミング ETL ジョブの DynamicFrames を利用することで、いずれかのデータストリームからデータを抽出し、それを変換し、商品テーブルと注文テーブルのデータをマージできます。変換からハイドレートされたデータを使用して、推論結果を取得するデータセットが DynamoDB テーブルに送信されます。

テーブルの DynamoDB ストリームは、新しいレコードが書き込まれるたびに Lambda 関数をトリガーします。Lambda 関数は、以前に変換されたレコードを、AWS SDK を使用して SageMaker エンドポイントに送信し、製品にどのような価格調整が必要かを推測します。機械学習モデルで価格の調整が必要であることが特定された場合、Lambda 関数は価格変更をカタログ DynamoDB テーブルに製品に書き込みます。

概要

Amazon Kinesis Data Streams を使用すると、リアルタイムのストリーミングデータを簡単に収集、処理、分析できるため、タイムリーなインサイトを得て、新しい情報にすばやく対応できます。AWS Glue サーバーレスデータ統合サービスと組み合わせることで、機械学習用にデータを準備および結合するリアルタイムのイベントストリーミングアプリケーションを作成できます。

Kinesis Data Streams と AWS Glue サービスはどちらもフルマネージド型であるため、AWS はビッグデータプラットフォームのインフラストラクチャ管理という差別化されていない重労働を排除し、お客様はデータに基づいたデータインサイトの生成に集中できます。

Fast Sneakers は、リアルタイムのイベント処理と機械学習を利用して、自社のウェブサイトでリアルタイムの価格調整を完全に自動化し、製品の在庫を最大化できます。これにより、ビッグデータプラットフォームの作成と保守の必要性を回避しながら、ビジネスに最大の価値がもたらされます。