IoTを活用するためのリアルタイムかつスケーラブルなインメモリ・プロセッシング処理基盤
Fusion Middleware事業統轄本部 二條 智文氏
IoTの世界では機器同士がネットを通じてリアルタイムかつ有機的につながる。そこで欠かせないのがリアルタイム処理とスケーラブルであることだ。二條氏はデバイスから生成されるデータがサーバを通じてリアルタイムで多様なチャンネルへとつなげるためのアーキテクチャを示し、各部分に適応するオラクル製品とその仕組みを具体的に紹介した。
大まかにいうと、デバイスが生成するデータをサーバ側で最初に受け取るのはデータグリッドとなる「Oracle Coherence」となり、そこからミドルウェア(イベント処理)の「Oracle Event Processing」(OEP)を経由し、アプリケーションサーバの「Oracle Weblogic」へと到達し、多様なチャンネルへと渡る。
データグリッドとなるOracle Coherenceではインメモリでデータ分散するため高いスケーラビリティが実現できるほか、デバイスから送られるデータだけではなく連携するデータベースとシームレスにデータ同期することができる。
複合イベント処理基盤となるのがOracle Event Processingだ。SpringとOSGiをシームレスに扱うようにSpring Dynamic Moduleで統合されており、標準技術をベースとした運行効率が高いフレームワークとなっている。またイベント処理ネットワーク内にCQL(Continuous Query Language)によるクエリ処理を組み入れるという実装になっている。
Rasberry PIを使ったオラクルのIoTの実装とデモンストレーション
最後のセッションはこれまで解説してきた仕組みをRasberry PIを用いてデモンストレーションを実施した。センサとなるデバイスから送られたデータをゲートウェイとなるRasberry PIで処理し、上位のサーバに送るというシナリオだ。
まずはセットアップ。Oracle Java Embedded SuiteとOracle Event Processing for Oracle Java Embedded(OEP Embedded)をダウンロードし、Rasberry PIに展開すれば環境変数を設定すれば完了だ。次にRasberry PIでOEP Embeddedを起動する。
Rasberry PIではデバイスからの加速度センサや傾き角度といったデータがCQLのイベント判定を通じてJavaのロジックに渡されるのが大まかな流れとなる。センサから送られてくるデータはJavaのPOJOで定義し、ソケット経由で受信するアダプタをJavaで作成する。集計やフィルタリングのイベント判定はCQLを用いて記述する。上位サーバでは基本的にゲートウェイ上のOEP同様に処理フローを作成すればいい。
Javaという同一のプラットフォームを利用することでロジックの配置が柔軟になるというメリットがある。なお処理ロジックを考えるときはデバイスやゲートウェイのスペック、ネットワーク帯域、データ送受信の頻度に気をつけるのがポイントとなる。