サーバーレスアプリケーションでは、サーバーのプロビジョニング、スケーリング、および管理が必要ありません。サーバーレスアプリケーションは、ほぼすべてのタイプのアプリケーションまたはバックエンドサービス用に構築でき、高可用性を実現しながら、アプリケーションの実行およびスケーリングに必要なことをすべて行います。

サーバーレス アーキテクチャは、さまざまなタイプのアプリケーションに使用することができます。例えば、取引注文の処理、クリックストリームの分析、データのクリーニング、メトリクスの生成、ログのフィルタリング、ソーシャルメディアの分析、IoT デバイスデータの収集や計測などが可能です。

このプロジェクトでは、リアルタイムデータストリームを処理するサーバーレスアプリケーションを構築する方法を学習します。架空のライドシェア企業向けにインフラストラクチャを構築します。ここでは、架空の企業である Wild Rydes の本社で、運用担当者がユニコーン車両群の状態とステータスを監視できるようにします。各ユニコーンには、位置情報やバイタルサインを報告するセンサーが設けられています。

AWS を使用して、このデータをリアルタイムで処理および視覚化するアプリケーションを構築します。リアルタイムストリームの処理に AWS Lambda、NoSQL データベースのレコード保持に Amazon DynamoDB、データの集約に Amazon Kinesis Data AnalyticsAmazon S3 への未加工データのアーカイブに Amazon Kinesis Data Firehose、未加工データに対するアドホッククエリの実行に Amazon Athena をそれぞれ使用します。

このワークショップは 4 つのモジュールに分かれています。各モジュールを完了してから次のモジュールに進む必要があります。

1.データストリームの構築
Kinesis でストリームを作成し、そのストリームに対して書き込みや読み取りを行うことで、
    Wild Rydes のユニコーンをライブマップで追跡します。さらに、この モジュール では、
    Amazon Cognito の ID プール を作成し、ストリームにライブマップへのアクセス権を付与します。

2.データの集約
Kinesis Data Analytics アプリケーションを構築し、ストリームからの読み取り、 そして
ユニコーンの状態や毎分の移動距離などのメトリクスの 集約 を行います。

3.ストリーミングデータの処理
アプリケーションから集約されたデータを、バックエンドデータベースの DynamoDB に 保存 されるまで保持し、
それらのデータに対してクエリを実行します。

4.データの保存とクエリの実行
アーカイブ用に、Kinesis Data Firehose を使用て S3 バケット にセンサーの raw データを
書き込みます。Athena を使用して
raw データに対して SQL クエリを実行し、アドホック分析を行います。

AWS の使用経験: 初級~中級

所要時間: 110 分

完了までの コスト : このアーキテクチャで使用される各サービスは、AWS 無料利用枠の対象となります。 無料利用枠を利用できない場合、このプロジェクトを完了するための費用は 0.5 USD* 未満です (すべてのサービスを 2 時間稼動すると仮定)。

このチュートリアルを完了するために使用するものは、以下のとおりです。

• アクティブな AWS アカウント**
• ブラウザ (Chrome を推奨)
• AWS Lambda
• Amazon Kinesis
• Amazon S3
• Amazon DynamoDB
• Amazon Cognito
• Amazon Athena
• AWS IAM

*この見積もりでは、ユーザーがチュートリアル全体で推奨される構成に従い、2 時間以内にすべてのリソースを終了することを前提としています。

**過去 24 時間以内に作成されたアカウントは、このプロジェクトに必要なリソースへのアクセス権がまだ付与されていない可能性があります。

serverless-real-time-data-processing-arch

このワークショップを完了するには、AWS アカウントと、アカウントに AWS Identity and Access Management (IAM)、Amazon Cognito、Amazon Kinesis、Amazon S3、Amazon Athena、Amazon DynamoDB、AWS Cloud9 リソースを作成するためのアクセス権が必要です。以下のステップバイステップガイドで、すべての前提条件を整える方法を説明します。

  • ステップ 1:AWS アカウントを今すぐ無料で作成

    このワークショップにおけるコードと説明は、1 人の参加者が一度に 1 つの AWS アカウントを使用することを想定しています。アカウントを別の参加者と共有すると、特定のリソースで名前の競合が発生します。リソース名にサフィックスを使用するか、別のリージョンを使用することでこの問題を回避できますが、詳細な方法についてここで扱うことはしません。

    このワークショップには会社アカウントではなく個人アカウントを使用するか新しい AWS アカウントを作成して、必要なサービスに完全にアクセスし、ワークショップのリソースを使いきれないことのないようにします。

    AWS アカウントの設定方法については、こちらをご覧ください

  • ステップ 2:リージョンを選択する

    このワークショップでは、米国東部 (バージニア北部)米国西部 (オレゴン)欧州 (アイルランド) を使用します。これらのリージョンは、このチュートリアルで扱うサービス一式をサポートしています。それぞれのリージョンで利用可能なサービスについては、リージョン表を確認してください。

  • ステップ 3:AWS Cloud9 IDE を設定する

    AWS Cloud9 は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。これには、コードエディタ、デバッガー、ターミナルが含まれています。Cloud9 には、一般的なプログラム言語に不可欠なツールがあらかじめパッケージになっています。AWS コマンドラインインターフェイス (CLI) も事前にインストールされているため、このワークショップのためにファイルをインストールしたり、ノートパソコンを設定したりする必要はありません。Cloud9 環境には、AWS マネジメントコンソールにログインしたユーザーと同じ AWS リソースへのアクセス権があります。

    それでは Cloud9 開発環境を 設定しましょう


    a.AWS マネジメントコンソールに移動して、[サービス] を選択します。次に、[開発者ツール] から [Cloud9] を選択します。

    b.[環境を作成する] を選択します。

    c.[名前] に「Development」と入力し、必要に応じて [説明] を追加します。

    d.[次のステップ] を選択します。

    e.[環境設定] は、新しい t2.micro EC2 インスタンスを起動したときのデフォルトのままにしておきます。このインスタンスは非アクティブ状態で 30 分過ぎると停止します。

    f.[次のステップ] を選択します。

    g.環境設定を確認してから [環境を作成する] を選択します。環境がプロビジョニングされて用意が整うまで数分かかります。

    h.用意が整うと、IDE の Welcome 画面が開きます。

    i.この段階で、ローカルコンピュータのように AWS CLI コマンドを実行できます。 aws sts get-caller identiy を実行し、ユーザーがログインしていることを確認します。

    j.アカウントとユーザー情報を示す出力が表示されます。

    k.このワークショップの間、AWS Cloud9 IDE はタブで開いたままにしておいてください。Docker コンテナでのサンプルアプリケーションの構築や実行、AWS CLI の使用といったアクティビティで、AWS Cloud9 IDE を使用します。

    Admin:~/environment $ aws sts get-caller-identity
    
    {
        "Account": "123456789012",
        "UserId": "AKIAI44QH8DHBEXAMPLE",
        "Arn": "arn:aws:iam::123456789012:user/Alice"
    }
  • ステップ 4:コマンドラインクライアントを設定する

    このモジュールでは、2 つのコマンドラインクライアントを利用して、車両群のユニコーンから得たセンサーデータをシミュレートおよび表示します。これらは Go プログラミング言語 で記述された小型のプログラムです。以下のインストールセクションでは、ビルド済みバイナリのダウンロードについて順を追って説明していますが、ソースをダウンロードして手動で構築することもできます。

    • produce.go
    • consumer.go

    プロデューサーは、Wild Ryde の乗客を乗せているユニコーンからセンサーデータを生成します。経緯度で表されるユニコーンの位置情報、メートル単位で表される 1 秒前からの移動距離、ユニコーンの現在のマジックポイントおよびヘルスポイントの値が、プロデューサーによって毎秒出力されます。

    コンシューマーは、フォーマットされた JSON メッセージを Amazon Kinesis ストリームから読み取って表示します。これにより、ストリームに送信されているデータをリアルタイムで監視できます。コンシューマーを使用して、プロデューサーとアプリケーションが送信しているデータを監視できます。

    1. Cloud9 環境を開いているタブに切り替えます。
    2. Cloud9 ターミナルで次のコマンドを実行して、コマンドラインクライアントをダウンロードし、解凍します。
    curl -s https://dataprocessing.wildrydes.com/client/client.tar | tar -xv
    
    これで、 コンシューマープロデューサーファイルが Cloud9 環境に解凍されます。
  • ヒントとまとめ

    💡 メモを取るために、Cloud9 のオープンスクラッチパッドやローカルコンピュータのテキストエディタを開いておきましょう。ステップバイステップで ID や Amazon Resource Name (ARN) などをメモするよう指示された場合は、コピーしてスクラッチパッドに貼り付けておきましょう。

    🔑 一意の個人用または開発用 AWS アカウントを使用する

    🔑 米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) のうち、いずれか 1 つのリージョンを使用する

    🔑 AWS Cloud9 IDE のタブを開いたままにしておく

サーバーレスのリアルタイムデータ処理を開始するための準備はすべて整いました。続くモジュールでは、データストリームを設定してリアルタイムデータの収集と処理を行います。