paint-brush
AWS でリアルタイム分析をマスターする方法: Timestream とその先@ravilaudya
512 測定値
512 測定値

AWS でリアルタイム分析をマスターする方法: Timestream とその先

Ravi Laudya6m2024/12/04
Read on Terminal Reader

長すぎる; 読むには

この記事では、スケーラブルで信頼性の高いリアルタイム分析プラットフォームの構築方法について説明します。AWS プラットフォームコンポーネントの SQS、Lambda、Timestream を使用して、イベントデータを実用的な洞察に変換するためのデータの取り込み、処理、視覚化、クエリについて説明します。
featured image - AWS でリアルタイム分析をマスターする方法: Timestream とその先
Ravi Laudya HackerNoon profile picture

前回の記事では、今日のデータ駆動型の世界におけるイベントの急激な増加について説明しました。私たちの周りには数多くのアプリ、スマート デバイス、マシンがあり、作成されるデータの量は膨大です。また、オーケストレーション プラットフォームがこれらのイベントを適切なアプリケーションに配信するのにどのように役立つかについても説明しました。ただし、イベントを配信するだけでは、企業が影響を与えるのに十分ではない可能性があります。


これらのイベントを分析してユーザーの行動を理解することで、企業はより賢明な意思決定を行い、顧客により良いサービスを提供できるようになります。リアルタイム分析プラットフォームは、イベントのデータを意味のある情報に変換するのに役立ちます。


この記事では、AWS を使用してリアルタイム分析プラットフォームを構築する方法、考えられるソリューションの評価、スケーラブルで信頼性の高いプラットフォームを実装するためのステップバイステップのガイドについて説明します。このプラットフォームの構築には、データの取り込み、処理、クエリという 3 つのステップが含まれます。リアルタイム分析では、ユーザーの行動やシステムのパフォーマンスなど、時間の経過に伴う傾向やパターンに重点が置かれることがよくあります。


時系列データは、イベントを自然に順番に整理するため、瞬間ごとにデータを簡単に分析できます。時系列ストレージはこのニーズに完全に適合し、アプリケーションでメトリックを計算できます。AWS は、このプラットフォームを構築するためにシームレスに連携する SQS、Lambda、Timestream、Quicksight などのツールを提供しています。


リアルタイム分析プラットフォームの構築には3つの主要な部分があります

  • データ取り込み: アプリケーションから公開されたイベントは、Amazon Kinesis 経由で AWS に流入するか、直接 SQS に流入します。


  • データ処理: AWS Lambda はデータを処理して Timesream に書き込むことができます。


  • 視覚化とクエリ: カスタムダッシュボードまたはQuicksightをTimestreamと統合して視覚化と分析を実現


    下の図は分析プラットフォームのアーキテクチャを示しています。


AWS Timestream による分析


タイムストリーム

AWS の時系列データベースである Amazon Timestreamは、膨大な量のデータを効率的に処理および分析するという課題に対応するように設計されています。Timestream はサーバーレスでスケーラブルであり、リアルタイムのデータ分析を必要とするアプリケーションに最適です。主な機能は次のとおりです。


  • 自動スケーリング: 1 日に数兆件のイベントを処理し、需要に応じて自動的にスケーリングできます。
  • パフォーマンス: リレーショナル データベースと比較して、最大 1000 倍高速なクエリ パフォーマンスを提供します。
  • サーバーレス: AWS によって完全に管理されるため、オーバーヘッドが削減されます。
  • スマート ストレージ ティア: 最近のデータ (メモリ内) と履歴データ (磁気ストレージ) 用に最適化されたストレージ ティア。
  • SQL クエリのサポート: 複雑なクエリ、集計、時系列分析を実行するための SQS クエリをサポートします。
  • 統合: 他の AWS サービスとのシームレスな統合をサポートします。

実装

必要なすべてのリソースのクラウド フォーメーション (CFN) テンプレートは、 Github リポジトリにあります。


  • データの取り込み

    サービスは、システムのメッセージ キューとして機能する SQS キューに関連イベントを発行できます。信頼性を高めるために、プライマリ SQS キューの横にデッドレター キュー (DLQ) が構成されています。処理に失敗したイベントは、再試行しきい値を超えると DLQ に送られます。これらのイベントは、デバッグ、障害処理、調査にも使用できます。


    以下は、SQS キューとそれに関連する DLQ を作成するための CFN テンプレートのスニペットです。


     EventQueueDLQ: Description: 'An DLQ queue that receives failed events' Type: AWS::SQS::Queue Properties: FifoQueue: true ContentBasedDeduplication: true QueueName: !Ref DLQQueueName SqsManagedSseEnabled: true VisibilityTimeout: 240 EventQueue: Description: 'An SQS queue that receives events' Type: 'AWS::SQS::Queue' Properties: QueueName: !Ref SQSQueueName FifoQueue: true ContentBasedDeduplication: true KmsMasterKeyId: alias/aws/sqs VisibilityTimeout: 240 RedrivePolicy: deadLetterTargetArn: !Sub ${EventQueueDLQ.Arn} maxReceiveCount: 5


  • データ処理

    AWS Lambda 関数はデータプロセッサとして設定され、SQS キューに公開されたイベントの処理を担当します。処理後、イベントをメトリックとして Timestream データベースにプッシュします。


    以下は、Lambda の CFN テンプレートと SQS へのマッピングのスニペットです。


     EventProcessorLambda: Type: 'AWS::Lambda::Function' Description: 'Lambda function that processes events from the SQS queue and writes to Timestream.' Properties: FunctionName: !Ref LambdaFunctionName Handler: 'index.lambda_handler' Role: !GetAtt LambdaExecutionRole.Arn Runtime: 'python3.12' MemorySize: 1024 Timeout: 120 Environment: Variables: TIMESTREAM_DATABASE_NAME: !Ref EventsDatabaseName TIMESTREAM_TABLE_NAME: !Ref EventsTableName Code: ZipFile: | # Lambda function code goes here SQSToLambdaEventSourceMapping: Type: 'AWS::Lambda::EventSourceMapping' Description: 'Maps the SQS queue as the event source for the Lambda function.' Properties: BatchSize: 10 EventSourceArn: !GetAtt EventQueue.Arn FunctionName: !GetAtt EventProcessorLambda.Arn Enabled: 'True'


  • データストア

    Amazon Timestream は、さまざまなサービスで生成されたすべてのイベントのプライマリ データ ストアとして機能します。セットアップには以下が含まれます。

    • データベース: 1つ以上のテーブルの論理コンテナとして機能します
    • テーブル: データベース内では、テーブルに実際のメトリックデータが格納されます。


以下は、Timestream データベースとテーブルを作成するための CFN テンプレートのスニペットです。

 EventsDatabase: Description: 'Timestream database to store event data' Type: 'AWS::Timestream::Database' Properties: DatabaseName: !Ref EventsDatabaseName KmsKeyId: alias/aws/timestream EventsTable: Description: 'Timestream table that stores event metrics' Type: 'AWS::Timestream::Table' DependsOn: EventsDatabase Properties: DatabaseName: !Ref EventsDatabase TableName: !Ref EventsTableName RetentionProperties: MemoryStoreRetentionPeriodInHours: 72 MagneticStoreRetentionPeriodInDays: 365


  • 視覚化とクエリ

    • クエリ

      Timestream は、ユーザーがテーブルに対してクエリを実行できるクエリ コンソールを提供します。例:

       -- Get the 10 most recent metrics in the past 15 minutes. SELECT * FROM "events-db"."events-metrics" WHERE time between ago(15m) and now() ORDER BY time DESC LIMIT 10


    • 視覚化

      AWS は、Timestream とのすぐに使用できる統合 ( QuickSightGrafanaなど) を多数提供しており、分析、視覚化、洞察の導出が容易になります。

テスト

サービスは、処理フロー全体をトリガーするイベントを次の形式で SQS に公開できます。

 { "order_id": "test-order-1", "customer_id": "test-customer-1", "event_type": "order_success", "metric_value": 1 }


結論

このアーキテクチャは、スケーラブルで信頼性の高い分析プラットフォームをシンプルかつ効率的に構築する方法を提供します。イベント処理用の AWS Kinesis Streams、データストア用の Prometheus、バッチ処理と分析用の S3+Athena など、特定のニーズに応じて他の選択肢もあります。