IoTプラットフォームとは
IoTプラットフォームとは、IoTに必要な機能を提供するための基盤(プラットフォーム)の総称です。IoTは、Internet of Thingsの略で、モノのインターネットを意味しています。IoTでは、ホーム家電(スマート家電)から工場の装置まで、様々な「モノ」がネットワークに接続されます。そして、ネットワークにつながる「モノ」から収集されたデータによって、新たなサービスや価値が生まれています。IoTプラットフォームには、「モノ」からデータを収集する設備に始まり、ユーザがその情報を使って何かのアクションや意思決定をするための設備まで、非常に幅広い領域が含まれています。
様々なベンダーが、IoTビジネスの市場に参入し、IoTプラットフォームを提供しています。そして、各ベンダーの提供範囲は様々です。例えば、「モノ」から情報を収集するネットワークをIoTプラットフォームと呼んでいるベンダーもあれば、「モノ」から収集したデータを解析する基盤をIoTプラットフォームと呼んでいるベンダーもあります。つまり、特定の領域だけを扱うベンダーもあるのです。
さらに、IoTプラットフォームの規模もベンダーによって様々です。世界中からデータを収集するのに適したプラットフォームもあれば、工場の機械のセンサーからデータを収集するローカルなプラットフォームまであります。対象となる業種や業界も、自動車などの製造業から、医療や農業、物流まで様々です。
このような理由から、私たちはやりたいことにあったIoTプラットフォームを選定する必要があります。ここでは、IoTプラットフォームの選択における注意点と、IoTプラットフォームの構成要素について解説し、IoTプラットフォームで使われる様々なテクノロジーについて紹介します。
IoTプラットフォームの選び方
ユーザが持つ課題はさまざまなため、クラウド事業者やメーカーが提供するIoTプラットフォームも多種多様です。実際に、世界の主要なITメーカーやAWS、Google Cloud Platform、Microsoft AzureなどのクラウドベンダーがIoTプラットフォームを提供しています。日本の国内のベンダーでも、日立のLumada、NECネッツエスアイのSymphonict、NTTコミュニケーションズ株式会社のThings Cloud、ソフトバンクIoTプラットフォームなど、メーカー系ベンダー、通信系ベンダーが特徴あるIoTプラットフォームのサービスを展開しています。しかし、こうしたサービスに契約すれば、すべての課題が解決されるというほど簡単ではありません。
そのため、自社の課題に対応したインフラを独自に構築することが必要になる場合も少なくありません。むしろ、世界的には、無料で利用可能なオープンソースソフトウェアなどの汎用的なソリューションを連携してコストを制御し、独自のIoTプラットフォームの環境を実現しているケースも多いようです。
「IoTプラットフォームで使われるOSS 20選」では、IoTプラットフォームでよく使われているOSSと選び方を紹介しています。
IoTプラットフォーム構成のポイントと要素
IoTプラットフォームは、図のような7つのパートからできています。それぞれのパートで使われている技術はIoT用の特別なものというわけではありません。そのため、汎用的な技術を選択することもできます。一方、様々なベンダーからは、こうした技術をパッケージングした製品やサービスが提供されています。
IoTエンドポイント
IoTエンドポイントとは、情報を取得する端末や機器のことで、IoTデバイスとも呼ばれます。センサー、カメラ、ホーム・ターミナル、スマート・メーター、家電、モバイル機器など、様々な種類のデバイスやソフトウェアがIoTエンドポイントの役割を果たします。
IoTエンドポイントに必要な要件は、何らかの方法で取得した情報をデジタル化し、IoTインフラを介して受け渡しできることです。汎用的なデバイスの場合も、特別なデバイスの場合もあります。
多数のエンドポイントの状態を正確に把握するために、IoTエンドポイントの稼働状況を監視する設備も必要になります。監視システムでは、多数の対象を監視するための分散構成や一括での登録などの機能を搭載したIcinga2や、監視対象を自動で登録できるPrometheusなどが利用されています。
IoTインフラ
IoTインフラとは、センサー等のIoTエンドポイントをインターネットに接続するための設備で、「エッジ」とも呼ばれます。遠隔にあるIoTインフラからデータを収集するために、携帯ネットワークや無線ネットワークなどを利用することが多いようです。例えば、携帯キャリアやMVMOの各社は、IoT向けの通信サービスを提供しています。センサーからのデータを送る場合には、データ量が非常に少ないため、通信速度が低速で低料金の契約が利用できます。逆に、カメラのようにデータ量が多いデバイス向けには、適切なデータ量で制限される定額サービスを利用することができます。
IoTネットワークインフラ
IoTネットワークインフラは、インターネットを構成する、ルータ、セキュリティデバイスなどのインフラです。一般的なインターネットの接続設備と何ら変わりはありません。ただし、多数のセンサーなど、大規模なIoTエンドポイントからリアルタイムにデータが集める場合には、高速なネットワークインフラが必要になる場合があります。
IoTネットワークインフラでは、セキュリティ的なリスクも指摘されています。外部からの不正アクセスに対する対策が不十分だと、IoTエンドポイントを勝手に操作されたりすることで大きな被害が出ることが懸念されています。IoTエンドポイントの種類によっては、人の命に関わる事故につながったりする危険もあります。さらに、個人情報保護についても配慮する必要があります。
IoTネットワークインフラのセキュリティは、IoTプラットフォーム全体をセキュアに保つために非常に重要な要素です。通信経路の暗号化、IoTエンドポイントに対するアクセス制御や認証の仕組みが必須です。認証では、単純なログイン認証だけでなく、認証局と証明書を使った高度な認証が使われる場合があります。
IoTデータ収集プラットフォーム
データ収集基盤は、エンドポイントから取得し収集したデータを蓄積し管理するための設備です。データ量がそれほど多くない場合には、汎用的なストレージ、オブジェクトストレージをそのまま利用することが可能です。膨大なデータ量を扱う場合には、NoSQL、負荷分散型のデータベース、高速な全文検索エンジンなどに、データを保管する必要があります。そのため、IoT向けに様々なソフトウェアが登場しています。
なお、データ量に関わらず、IoTでは次のような理由からリレーショナルデータベースはあまり利用されません。
- 収集したデータには相関関係(リレーション)がないこと
- リレーショナルデータベースは、スケーラビリティに問題がある
- リレーショナルデータベースは、コンテナ型仮想化などでは使いにくい
代わりに、IoTデータ収集プラットフォームでは、MongoDBやGridDBなどNoSQL型のデータベースやKVS(key Value Store)などが利用されます。
こうしたデータベースには、コンテナ環境でデータの冗長性を確保するための仕組みや、負荷分散を行うための仕組みも実装されています。
MongoDB
MongoDBは、AWSなどでも採用されているドキュメント指向のデータベースです。データ型を豊富にサポートし、任意のフィールドを好きな時にクエリでき、結果にカーソルが使えることが特徴です。RDBではありませんが、SQLのGROUP BYに似たデータ集約のためのツールもサポートしています。また、サーバサイドでJavaScriptを実行できる仕組みがあり、クエリや集約関数で使用することができます。MongDBの商用版ではインメモリーでのデータ管理をサポートしていて、大量のデータを高速に処理する必要のあるIoTプラットフォームに適しています。
Redis
Redisは、インメモリで高速にデータ管理ができるNoSQL型のデータベースです。ハッシュ、リスト、セット、ソートされたセットなど、いくつかの種類のデータ型をサポートし、構造化されたデータを扱う事ができます。また、トランザクションをサポートしているのも特徴です。データの冗長性を確保するために、マスタ・スレーブ型の非同期型の分散構成をサポートしていて、大量のデータを分散して処理する必要のあるIoTプラットフォームに適しています。Luaスクリプトのインタプリタが組み込まれていて、任意の処理を組み合わせた操作ができます。
GridDB
GridDBは、スケールアウト型NoSQLデータベースです。高い性能、拡張性、そして高い信頼性と可用性を備えています。ビックデータに最適なデータベースとして、日本の東芝デジタルソリューションズ株式会社が開発しました。もともと電力関連の産業で利用されていたこともあり非常に堅牢な作りになっています。
GridDBでは、OSS版であるGriDB Community Edition(GridDB CE)でも、インメモリでのデータ管理を利用することができます。インメモリで処理をしつつ、ディスクへデータ更新情報を書き込むことでデータの永続化を行うことができます。また、一般の型のキーを持つデータを管理するコレクションコンテナ、時刻型のキーを持つデータを管理するための時系列コンテナをサポートし、大量の時系列データを処理するIoTプラットフォームに適しています。
「GridDB〜MongoDBに代わる高速なNoSQLデータベース〜」へ
Elasticsearch
Elasticsearchは、ビックデータ解析などで利用されている全文検索エンジンです。大量のテキストファイルから特定のキーワードを検索したり集計するといった目的に適しています。特に、テキストの部分一致検索や近似値の検索を得意としています。分散処理に対応していて、高可用性を考慮し設計されています。また、HadoopやSPARKなどの並列コンピューティングのソフトウェアとも組み合わせて利用することができ、大規模なIoTデータ収集プラットフォームとして利用できます。
「Elasticsearch〜OSSの全文検索エンジン〜」へ
IoTデータ処理プラットフォーム
収集したIoTデータを加工・分析したり、統計処理するための処理基盤です。データ処理基盤としては、次のような要素を考慮する必要があります。
データ分析プラットフォーム
データの量に応じたデータの分析基盤を用意する必要があります。データ量がそれほど多くない場合には、PCや仮想サーバ1台でも充分かもしれません。しかし、分析するデータの量が多い場合には、データを処理するCPUの数を増やす必要があり、複数のコンピュータを使った並列コンピューティングの仕組みや、クラウド上の高速な計算機資源の利用なども考慮する必要があります。
「GridDBとGrafanaを利用したIoTデータ収集システム事例」へ
データの可視化
収集したデータを可視化するツールです。ダッシュボードにグラフィカルに表示したり、レポートを作成したりするツールが利用されています。このようなツールでデータを可視化することで、データのトレンドを調査したり、様々な検討をすることが容易になり、業務の効率を改善することができます。収集するデータに応じて、プログラムを自作することも少なくありません。汎用的なBIツールを使うこともできますが、BIツールは比較的使い方にくせのあるものもすくなくありません。
スケーラビリティ
各種のクラウドサービス、仮想化技術などを使って、データが増加した時にも拡張できるような処理基盤を構築する必要があります。次のような処理基盤がよく使われます。
CloudFormation
AWSで利用可能なサービスで、システム構成をJSON形式のフォーマットで記述し、テンプレート化することができます。これにより、同じ構成のサーバを簡単に作成することが可能になります。また、修正や再利用がしやすくなります。
OpenStack
OpenStackはオープンソースの仮想基盤で、AWSのような環境をオンプレミスで構築することができます。機能ごとにモジュール化されているため、必要に応じてソフトウェアを追加していくことで、様々な機能が利用できるようになります。
oVirt
RedHat社が主に開発を行っているオープンソースの仮想基盤です。仮想サーバの追加を容易に行うことができるのが特長です。OpenStackよりも機能的には劣りますが、導入はそれほど難しくないのが特長です。
コンテナ型仮想化
IoTの分野では、最近になってコンテナ型仮想化の利用が増えています。コンテナ型仮想化は従来の仮想化に比べて、次のようなメリットがあります。
- 少ないリソースで動作する
従来の仮想化技術では、物理マシンをエミュレートします。そのため、物理マシンの動作にOS、アプリケーションなどの環境をすべてインストールする必要がありました。コンテナ型仮想化では、アプリケーションの動作に必要なライブラリやプログラムだけを、独立したコンテナに収容します。少ないリソースで動作できます。
- ポータビリティが高い
コンテナは、様々なLinuxディストリビューションやWindowsなどの環境で動作します。コンテナ内には、動作に必要なすべての情報が含まれているため、どのような環境に移動しても、すぐに動作させることができます。IoTプラットフォームでは、開発環境で作成したアプリケーションを本番環境にポーティングしますが、このプロセスを容易に行うことができます。
- 構成管理がしやすい
コンテナは、YAMLやJSONなどの形式で構成を管理することができます。そのため、サービスをテンプレート化することが容易にできます。また、変更管理がしやすいという特徴があります。
コンテナ型仮想化のインプリメンテーションとしては、Dockerがよく知られています。
Kubernetes
Kubernetesとは、コンテナ型仮想化を使って大規模なシステムを構築するための基盤です。次のような特徴があります。
- オンプレミスで構築できるコンテナプラットフォーム
Kubernetesは、オープンソースソフトウェアであり、オンプレミスの環境に独自のコンテナ仮想基盤を構築することができます。
- 多数のクラウドサービスで利用可能
Kubernetesは、GoogleのGoogle Platoformで提供されるGKE(Google Kubernetes Engine)、AmazonのAWSで提供されるEKS(Amazon Elastic Container Service for Kubernetes)、MicrosoftのAzureで提供されるAKS(Azure Kubernetes Service)など、世界中のさまざまなクラウドベンダーに採用されています。これらのサービスは、オンプレミスのKubernetesと互換性があり、用途に応じて様々な環境でコンテナを利用することができます。
- 多数のホスト上でコンテナを管理(拡張性が高い)
一般的なコンテナ型仮想化では、1台のホストを超えるような拡張をすることは容易ではありません。Kubernetesでは、複数のホストを統合して、1つのコンテナ仮想基盤として利用することができます。ノードの追加も簡単で、システムの性能に併せて柔軟に拡張することができます。
- Pod
複数のコンテナをまとめて、1つのPodという単位で管理することができます。コンテナは、マイクロサービスとも呼ばれていて、多数の小さなコンテナで1つのサービスを構成するのが普通です。Podを使うと、複数のコンテナをまとめて1つのサービスとすることができ、管理性が向上します。
- レプリカセット
レプリカセットは、Podの数を自動的に制御します。そのため、Podに障害があり停止した場合にも、必要な数のPodを自動的に起動し、Pod数を維持します。セルフヒーリング機能とも呼ばれています。
- デプロイメント
デプロイメンとは、Podやレプリカセットの履歴を管理するための仕組みです。ソフトウェアのバージョンアップを安全に行うことができます。
- オートスケール
コンテナへのアクセスの状況に併せて、自動的にコンテナ数を増やしたり、減らしたりする機能です。突発的なデータ量の変化にも柔軟に対応ができます。
機械学習プラットフォーム
収集したデータを何らかの機械学習アルゴリズムで処理するための基盤です。収集したデータを活用して、機械学習モデルを構築したり、ソフトウェア開発を行なうために利用します。この分野では、コンテナ型仮想化の技術が注目されています。
なお、機械学習の分野では、Googleが開発したディープラーニングを始めとして、人工知能の技術を活用した様々なツールをオープンソースソフトウェアとして入手することが可能です。
IoTクライアント
エンドポイントから収集したデータを分析した結果を表示したり、データを元にアクションを起こしたりするのに必要なクライアントです。一般的な、PCの場合もあれば、スマートフォンやタブレットなどが使われることもあります。また、専用のPCアプリケーション、スマホのアプリ、ハードウェアが用意される場合も少なくありません。
デージーネットの取り組み
デージーネットでは、IoTプラットフォームを汎用的なオープンソースソフトウェアを利用して構築しています。「IoTプラットフォームで使われるOSS 20選」で紹介しているソフトウェアのほとんどは、デージーネットで構築や運用の実績のあるソフトウェアです。
また機械学習基盤でよく使われているdocker/Kubernetesの導入や、導入に関するコンサルティングにも力を入れています。
なお、無料資料ダウンロードのページでは、GridDB、Kubernetesなどの資料を公開しています。
【カテゴリ】:IoT  
【追加日程】【Webセミナー】LinuxOS 最新情報 2022版
日程: | 7月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | 今回は、数あるLinuxOSの中から弊社で調査した『LinuxOS最新情報2022年版』をお届けします。 |
ご興味のあるかたはぜひご参加ください。 |