Skip to content
arao edited this page May 21, 2016 · 14 revisions

##IoTとSDNが抱える共通の課題

SDNをやっている人達中には、自分が何の為にSDNをつくっているか知らない人達がいる。SDN研究開発者と言いつつ、ネットワーク技術も知らなければ、現場に出た事ない人達がけっこう多い。

IOTも同じ問題が起こって来ている。自分の妄想でIoTを語っていて、センサーをいじった事もなければ、現場でアジャイル開発した事もない人達が多い。

両者とも、上記の問題を抱えたままだと、フレームワークとかプラットフォームばかりつくって、実用化に至らない。

あと、頭でっかちで、開発やSIの手法論とかツールばかり語っている人達も多い。

これだと、実用になるものが出てこない。

こういう人達は、一度、全部一人でつくってみると良い。最小構成だけど一通り実用になるシステムをつくってからアーキテクチャを考えると良い。

ユースケース毎にアーキテクチャーを考える。ソフトウエア開発の基本。

しかし、全部一人でつくるところの敷居が高いのかもしれない。IoTデバイスもネットワーク技術もサーバ技術もデータベース技術も全部使いこなせなければならない。しかし、ここが、これから求められるSIスキル。

これからの社会を背負う子供たちには、IoTのおもちゃをつくらせてみると良い。こっちの方が、本当に実用になるIoTが出て来そう。

#モデリング

「頭でっかちな人達がググった情報から妄想で考えたIoTだとうまく動かない。パワポ上のペーパーマシンで終わる」。コードを書いていて、確かにそうだと思った。

まずは、MVP(Minimum Valuable Product)をつくることからやらないといけない。モデルも、作りながら試行錯誤し、ベストなものを探さなければならない。

とにかく手さぐりでつくるもの。さっさと動くコードを書け!先に手足を動かせ!の世界なんだろーなー。IoTは少数精鋭のハッカーと現場主義データアナリストでチームを組んだ方が良さそう。

少数精鋭でユースケースの数をさっさとこなした方が勝てる。

##データベースはどれが良いか?

センサーデータ収集にはCassandraの方が使い勝手が良いと思った。

cqlshの使い勝手が良い。センサーデータを時系列にソートして、分かりやすく表示してくれる。

mongoはnodeベースのCLIを提供するが、どうも、使い勝手が悪い。私とは相性悪し。

APIまわりはSQLライクな方が良さそう。CassandraはSQLライクなCQLを提供。

クラウドにデータベースを配備する場合には、性能面とスケーラビリティーの面でもCassandraの方が良さそう。

AWSだってセンサーデータ集種用にはDynamoDBを提供している。

[参考] http://dev.classmethod.jp/cloud/apache-cassandra-and-amazon-dynamodb-compare/

DynamoDBに比べCassandraはTTL機能ありのところが良い。TTL機能は必須!

MongoDBもTTL機能を提供するが、Cassandraの方がTTL機能の取扱容易。

Cassandraの難点は、これをうまく運用できるエンジニアが少ない事。

##突然ビデオカメラが動作しなくなった(5/17)

Cassandraを起動すると動作しなくなる。Rapsberry Pi 3からのUSBの電力供給量が足りないと想定。

ACアダプタ給電型のUSB 3.0 ハブを買ったが、チップにバグがあるらしく問題解決せず(Raspberry Pi 3がUSB webcam認識せず)。結局 RPi専用 camera moduleを買った。

こういうのもさー、実際ににつくってみて分かる事。IoTでは安定した電力供給が重要だってこと。

##最適な機能配備

これも、実際に作ってみて分かる事かも。

IoTの教科書だと、やたらとビッグデータとかHadoopとかSpark/Stormの話が書いてあるんだけどさー。自分みたいなネットワーク屋だと、大昔から並列分散処理が普通なんだよね。IPTVのSTBとかIP電話のTAとか、専用チップで信号処理をリアルタイム処理してるじゃない。ルータだってリアルタイムで転送処理とかNAT処理してるじゃない?小型ルータとIoTゲートウェーって、中身のチップはほぼ同じ作りだし、IoTゲートウェー側で処理出来る事も多いんじゃないの?

そうすればさー、クラウドレスでもスケールアウト出来るIoTシステムを組める場合があるよ。一定の負荷がかかり続けるユースケースの場合、クラウドレスでつくった方が安くあがると思うよ。

Clone this wiki locally