-IoTシステム構築におけるAWS活用の勘所-(佐藤瞬) クラウドを活用したIoTシステム設計

sato-ec

IoT(Internet of Things)ビジネスへの注目度が高まっている。どのようにIoTビジネスをデザインするかと同様に、どのようにIoTシステムをデザインするかも重要である。本稿では、IoTシステムの設計思想とクラウドサービスの活用について考察する。
Webインテグレーション事業部 副主任システムエンジニア 佐藤瞬

500億もの「モノ」とつながるIoTシステム

IoTは「モノのインターネット」などと呼ばれ、情報通信機器に限らず、さまざまな「モノ」(例えば家の冷蔵庫や自動車など)がインターネットにつながる状態、またはその仕組みを指し、これにより私たちの生活やビジネスにおいて利便性の向上やコスト削減が期待されている。

ITU(国際電気通信連合)によると、世界のインターネット人口は30億人を超えたと言われている。それに対してIoTは近年の発展により、2020年には500億のデバイス(モノ)がネットワークに接続されると予測されている(米国Cisco Systems社より。http://www.cisco.com/web/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf)。そして、IoT システムが対象とするのはこの500億のモノであり、人が見たり、操作したりすることを前提に作られたWebシステムと同じ設計思想で対応することは難しい。モノ向けには、それに適したシステムの設計思想がある。本稿では、IoTシステムの最適な設計はどうあるべきかを考察する。

IoTシステムの全体像

IoTの対象となる分野は、ヘルスケアから家電、自動車、産業機械など多岐にわたる。その多くはセンサーを利用して何らかの情報を収集し、インターネットを通じてサーバーサイド(インターネット上にあるWebサーバー)にデータを蓄積するものである。本稿では、このようなセンサーデータの収集・蓄積を行うIoTシステムのサーバーサイドを対象として話を進めたい。

IoTシステムに求められる機能は、大きく分けて「収集」「蓄積」「分析」の3つだ。つまり、モノのセンサーからのデータを受け取る「収集」、受け取ったデータをデータストアに保存する「蓄積」、保存・蓄積されたデータにさまざまな手法で行う「分析」である。もう少し詳細に見ていこう。

まずは「収集」だ。1つのIoTシステムに接続されるモノのセンサーの数は数万~数百万ともなり、それぞれが収集したデータを1秒や1分といった間隔で定期的に送信するケースが多い。

通常のWeb サイトであれば、サーバーサイドで行う処理はほとんどがデータの参照である。しかし、IoTシステムの場合は、1つ1つのデータ量自体は非常に小さいが、それらのデータを全て保存しなければならない。これは大量の書き込み処理を、短時間で行う必要があるということだ。加えて、通常のWebサイトであれば、ピーク時と平常時である程度アクセスに波があるが、IoT システムの場合は、モノの数だけ24 時間365 日、常に同じ量のアクセスがある。これは、見方を変えれば常に最大量のアクセスをさばき続けなければならないということになる。従って、サーバーサイドでは大量の書き込み処理を継続的に行える処理能力と安定性が求められる。

次にデータストアでの「蓄積」だ。収集したデータは、さまざまな分析を行うため、リアルタイムから年単位の過去データまで、柔軟にアクセスできる必要がある。さらに、データの内容だが、モノは1 種類とは限らない。1つのシステムの中で数種類のモノが使われるのであれば、収集されるデータの種類やデータ構造も異なってくる。そのため、サーバーサイドのデータストアでは、データに柔軟にアクセスができるとともに、さまざまなデータ構造に対応できることも求められる。

そして、「分析」だ。分析にはリアルタイム性の高いものと、数ヶ月~数年単位の期間をまとめてバッチで行うものがある。さらに、目的に応じたアドホック(特定条件)分析が求められる場合もある。分析手法に関しては、アプリケーションの設計やどのようなツールを使うかの問題であるため、IoTシステムの構造に大きく依存することはないが、どのような期間で分析を行いたいかは考慮する必要があるだろう。

RDBの限界とクラウドの活用

(1) IoTとリレーショナルデータベースの相性

データストアの選択は、IoT システムを考える上で非常に重要性が高い。Oracle Database を始めとするリレーショナルデータベース(以下RDB)は、高い対応力と信頼性を持つため、IoTシステムにおいても、まずは従来通りRDBを中心に考えるのが一般的だろう。しかし、RDBはデータの整合性を保つことを目的としており、大量かつ頻繁にデータを更新する処理には向いていない。さらに、IoTシステムでモノが収集するデータはほとんどが時系列で蓄積されるが、RDBはこのような履歴データの扱いは苦手としている。また、IoTシステムに求められる要件は実に多様であり、RDBに向いていない多くの処理を行う必要があるため、大量のコンピュータリソースと繊細な設計が必要になる。

RDBにこだわり過ぎると、RDBがボトルネックとなり、システム全体の柔軟性が失われる。IoTシステム構築を考える上では、RDBにとらわれずに柔軟にデータストアを選択し、設計していくことが肝要である。

(2) クラウドサービスの活用

ここで選択肢となるのが、Amazon WebServices( 米国Amazon.com社により提供されているクラウドサービス。以下AWS)をはじめとするクラウドサービスの活用だ。クラウドサービスでは、さまざまな技術が提供されており、これらを利用することで、多くの選択肢の中から最適なシステム構築が可能となる。具体的な例を見てみよう。

AWSを利用したIoTシステム構築

主要なパブリッククラウドでは、IoT に必要な技術がサービスとして既に提供されている。ここでは、NRI がプレミアムパートナーとなっているAWS を紹介する。

(1) データを収集するクラウドサービス

まずは、モノからの大量のデータをいかにして受け取るかというところだ。これには、Amazon Kinesis Stream( 図1 参照。以下Kinesis Stream)、またはAWS IoT(図2 参照)が利用できる。

Kinesis Stream はストリーミングデータの処理を行うためのサービスであり、簡単に言えば、送信されたデータを一時的に保存してくれる。Kinesis Stream に保存されたデータは、一定期間いつでも取り出すことができる。Kinesis Streamでデータを受け取った後、別のアプリケーション(図1中のConsumer部分)でKinesis Stream からデータを取得し、リアルタイム分析やデータストアへの保存といった処理をすることができる。アプリケーションが自らデータを取得するため、処理量を調整でき、アプリケーション自身やデータストアに過度な負荷を与えることなく処理することが可能だ。

AWS IoTは、その名の通りIoTのためのサービスである。モノからのリクエストを受け、リクエストの内容に応じてさまざまなアクションを起こすことができる。また、AWS IoT はMQTTという双方向の通信を可能とするプロトコルを利用することができ、これによりモノ側へサーバーサイドから指令を出すことができる。さらに、モノが現在接続されているかといった状態の参照や識別など、モノの状態を可視化する機能もある。

モノから一方的にデータを送るだけであればKinesis Stream を利用し、サーバーサイドからモノ側へも通信を行いたい場合はMQTTを扱えるAWS IoT を利用する。この2 つのサービスはモノの数が数億あっても対応できるよう設計されており、非常に伸縮性・順応性が高い。大量のリクエストをいかにさばくかという問題は、これらのサービスを利用するだけで解決できてしまう。

また、AWS IoT とKinesis Stream を両方同時に使うことも可能だ。その場合はAWS IoTでリクエストを受け、AWS IoT からKinesisStream にデータを流す。Kinesis Stream にデータを送信する前に何らかの処理を行いたい場合は、このような構成も考えられるだろう。ただし、AWS IoT はKinesis Stream を単体で使う場合に比べ、コストが高くつく傾向にある。コストとのバランスを見つつ選択する必要がある。

(2) データを蓄積・分析するデータストアの選択

次にデータストアの選択だ。目的に応じて適したデータストアは異なる。大容量データであればオブジェクトストレージ(記憶装置の管理・利用方式の1 つで大容量データの保存に適している)、高速な読み書きが必要であればNoSQL(Not only SQL)、分析であればデータウェアハウス(膨大な量のデータを時系列に蓄積可能でデータ分析に最適化されている)、マスターデータなど整合性が重要であれば、従来通りRDBが適しており、これらを使い分けることが必要になる。AWSにおいては、それぞれのデータストアが以下の通りサービスとして提供されている。

  • Amazon S3(オブジェクトストレージ)
  • DynamoDB(NoSQL)
  • Redshift(データウェアハウス)
  • RDS(RDB) など

クラウドサービスが単なる仮想マシンやストレージであった時代は終わり、現在はさまざまなサービスを内包した巨大なプラットフォームと化している。クラウドサービスを利用することはシステム開発の効率化やコストの削減だけではなく、今までは実現できなかったことが、実現可能になるということでもある。

最新の技術動向の把握がIoTビジネスのカギ

IoTのような新しいビジネスが生まれるとき、同時にシステムの設計思想や実現方式も変化しなければならない。ビジネスとシステムには密接な関わりがあり、ビジネスの目的・規模によって最適なシステム設計も変化する。ビジネスをデザインすることと同様に、ビジネスに適したシステムをデザインすることが重要である。だからこそ、ビジネスを理解した上で、最新の技術動向をつかみ、それを使って設計・構築・運用できるシステムアーキテクト(システムの要件定義や設計の知識や技能を持った上級エンジニア)や、そのような人材を擁するパートナー企業の存在が不可欠となるだろう。

野村総合研究所(NRI)グループは、実際にAWSを利用したIoTシステムの設計・構築を行い、実運用に耐えうることを検証してきた。その知見を生かし、企業のIoT システム設計をサポートしている。

佐藤瞬

執筆者 佐藤瞬

AWSをはじめとするクラウドサービスを活用したシステムアーキテクトを専門に行っています。
(Webインテグレーション事業部 副主任システムエンジニア)

本稿は、野村総合研究所発行の「ITソリューションフロンティア」2016年9月号に掲載されました。

お問い合わせ

当社のサービス・製品に関するご相談やご質問、お見積りのご依頼など、こちらからお問い合わせください。