2/6 収集・蓄積:S/4HANA, Vora & Spark on AWSから生まれる価値

 2016.07.29  リアルテックジャパン

iPhone盗難とクラウド

先日、ブログで「盗まれたiPhoneから自分のiCloudに、平和そうな家族の写真が次々送られてくる件」という記事を見ました。iPhoneが盗まれるという悲しさの反面、カンボジアの赤ちゃん達の微笑ましい写真が次々とiCloudへ追加されている様を見て笑ってしまいました。これもクラウドによる自動情報収集・蓄積のメリット?ですかね。

今回はAWSサービスを使った現実世界の情報収集から蓄積までを解説します。

なお本記事は、下記シリーズ記事の一部で、他記事も参照されることをお勧めします。

1/6 概要編:S/4HANA, Vora & Spark on AWSから生まれる価値

2/6 収集・蓄積:S/4HANA, Vora & Spark on AWSから生まれる価値【本記事】

3/6 抽出・統合:S/4HANA, Vora & Spark on AWSから生まれる価値

4/6 機械学習:S/4HANA, Vora & Spark on AWSから生まれる価値

5/6 見える化:S/4HANA, Vora & Spark on AWSから生まれる価値

6/6 SNS連携:S/4HANA, Vora & Spark on AWSから生まれる価値

昔と異なる検討方針

現実世界の情報の代表であるIoTに対応したシステムを検討する時に、検討方針が昔と異なります。代表的な事項を下図で示しました。

IoT Consideration.jpg

ひと昔前であれば、必要最低限の情報をシステムに蓄積し、将来的なピークの姿に耐えられるように基盤設計をすることが標準的でした。しかし、データストレージコストが低下し、クラウドのような拡張可能なアーキテクチャが登場しました。情報増加は費用に与える影響が少なくなり、その一方でSparkや機械学習などの処理技術の進化により新しい価値を生み出す手段が増えました。そのための基盤として従量課金のクラウドサービスを使うことで概念検証を小さく早く進め、稼働後に段階的なスケールアウトが容易にできます。このあたりの検討方法は、クラウドアーキテクティング原則が非常に参考になります。

収集から蓄積までの処理

今回のシナリオにおける当記事の内容は、情報収集から蓄積までの処理です(下図赤枠部分)。

Process1 Collect and Store.jpg

AWS IoT:さまざまなデバイスに対応したIoTデータ取込・収集

AWS IoTを使うことで、さまざまなデバイスとセキュアに接続し、デバイスデータに対する処理やアクションを実行することが可能になります。従量課金なので、スモールスタートに適しており、スケーラビリティも文句なしです。今回は紹介しませんが、SDKを使うことで複数の言語を使ってデバイス/Gateway側での実装が容易に行なえます。ソリューション概要はこちらの スライドがわかりやすいです。

Amazon Kinesis Firehose:柔軟なストリーミング処理

Amazon Kinesis は、様々なストリーミングデータのロードおよび分析を行います。Amazon Kinesis Streaming、Amazon Kinesis FirehoseとAmazon Kinesis Analyticsの3サービスから構成されており、今回はAmazon Kinesis Firehoseを使っています。ソリューション概要はこちらの スライドがわかりやすいです。

AWS IoTから直接Amazon S3へ連携してもいいのですが、Amazon Kinesis Firehoseを使うことで複数デバイスから来る一定期間のデータをまとめてファイル化することができます。仮に10秒間隔で100デバイスからリクエストを受け取ると、Amazon Kinesis Firehoseがない場合ではAmazon S3に1000ファイルが生成されてしまいますが、Amazon Kinesis Firehoseを使うことで1ファイルに統合することができます。

Amazon S3:安価で安定したストレージサービス

Amazon S3はAmazon Simple Storage Serviceの略でストレージサービスです。ウェブスケールのコンピューティングを開発者が簡単に利用できるよう設計されています。SparkやHadoopに組み込まれている標準APIを使って連携することもできます。今回はHANA Voraから直接読み込んでいます。ソリューション概要はこちらのスライドがわかりやすいです。

AWSサービス設定手順

AWSサービス設定手順を紹介していきます。データの保存先であるAmazon S3から順に設定します。

Amazon S3でバケット作成

Amazon S3のバケットを作成します。ここに心臓ペースメーカーからの情報を保存します。

手順は非常に簡単で、バケット名とリージョンを選択するだけです。

01.S3 Create Backet.jpg

02.S3 Input Backet Data.jpg

Amazon Kinesis FirehoseでDelivery Stream定義

次にAmazon S3へデータを保存するためのDelivery StreamをKinesis Firehoseで定義します。次ステップで定義するAWS IoTからデータを受け取り、一定期間のデータを蓄積してまとめたデータをAmazon S3に書き込みます。

まずは「Create Delivery Stream」ボタンを押します。

11.Kinesis Create Delivery Stream.jpg

次に保存先として先のステップで作成したAmazon S3の情報を入力していきます。

12.Kinesis Destination.jpg

ConfigurationのステップではAmazon S3に保存する設定をします。シンプルに圧縮や暗号化はせず、60秒ごとに書き込む設定にしました。スクリーンショットは載せませんが、Amazon S3に書き込む権限を持つIAM Roleを登録しています。最後に定義内容を確認して登録です。

13.Kinesis Configuration.jpg

AWS IoTでThingとRuleの定義

心臓ペースメーカーからデータを受け取る入り口としてAWS IoTの定義をします。

まずは、個別デバイスを認識するThingを登録します。

21. IoT Create a thing.jpg

次に収集した情報をKinesis Firehoseへ渡すRuleを定義します。スクリーンショットは載せませんが、Kinesis Firehoseに渡す権限を持つIAM Roleを登録しています。

22. IoT Create a rule.jpg

最後にAWS IoTからAmazon S3まで繋がるかを疎通確認します。テストツールのMQTT Clientを使います。

23. IoT Publish a Message.jpg

Amazon S3のバケットにファイルが書き込まれていることを確認できました。今回は実際に心臓ペースメーカーのようなThingの実物からの接続は割愛します。24. IoT Stored S3.jpg

マイクロサービスの魅力

今回の記事は、SAPから離れたAWSの世界の話でした。SAPの世界に慣れた筆者からすると、いろいろな意味で「これだけ!?」と感じます。最初は「いろいろなサービスを使っていて理解するのが時間かかりそう」と不安に感じていましたが、意外とすんなり出来て拍子抜けしました(調査から実装まで2日程度で終えています)。このシンプルさとスピード感は、まさにマイクロサービスとしての魅力ですね。
SAPユーザのための 『S/4HANA』データ移行

RECENT POST「S/4HANA」の最新記事


この記事が気に入ったらいいねしよう!
Archive Migration Service (アーカイブ移行リモートサービス)

RANKING人気資料ランキング

RECENT POST 最新記事

RANKING人気記事ランキング

ブログ購読のお申込み