IoT on Cloud
Infrastructure, Server side and more
Social
Twitter: marcy_terui
Facebook: marcy.terui
Github: marcy-terui
Work
R&D (Automation, IoT?)
Dev for Ops
Cloud Architecting
Cloud, Infrastructure
AWS認定SA, SysOps, Developer (Associate)
Chefの周辺ツール(OSS)作ってみたり
なんか出るみたいです https://enq.itmedia.co.jp/on24/form/986545
Server Side
元PHPer
Work: Python, PostgreSQL
Like: Ruby, MySQL
誰ですか?
Masashi Terui
照井 将士
所属
ジグソー株式会社
サービスユニット技術開発グループ リーダー
アラサー2児の父
IoTデータマネジメントパートナー
月面探査チーム「HAKUTO」(株式会社ispace)

国際宇宙開発レース「Google Lunar XPRIZE」中間賞
Kudan Limited

欧州における拡張現実(AR)技術のリーディングカンパニー
IoTと弊社
※具体的にはまだこれから
Agenda
クラウド #とは
クラウドの特徴
IoTサーバサイドをクラウドでやるべき理由
WebサーバサイドとIoTサーバサイドの違い
余談
クラウドコンピューティングとは、ネットワーク、サー
バー、ストレージ、アプリケーション、サービスなどの構
成可能なコンピューティングリソースの共用プールに対し
て、便利かつオンデマンドにアクセスでき、最小の管理労
力またはサービスプロバイダ間の相互動作によって迅速に
提供され利用できるという、モデルのひとつである。
http://ja.wikipedia.org/wiki/クラウドコンピューティング より引用
クラウド #とは
IaaS (Infrastructure as a Servce)
PasS (Platform as a Servce)
SaaS (Software as a Servce)
And more…
クラウドの特徴(IaaS)
初期投資不要
従量課金
調達スピード(ポチッとするだけ、API叩くだけ)
サーバ費用だけを考えると決して安くはない
リスクが少ない
圧倒的に人的コストが安くできる
新しいこと(IoT)を始めるのに適している

※人的コストをちゃんと見つめればほとんどのケースでクラウドに適していることになるんですがw
IaaSを機能面で捉えると基本的にただの仮想NWや仮想サーバ
じゃあ、何が違うのか?
IoTサーバサイドをクラウドでやるべき理由

新しい市場で戦うためには、
スピードとトライ&エラーできる環境が大事
クラウドの特徴(PaaS)
アプリケーションサーバ

Heroku, Azure Website, Engine Yard etc…
RDB

RDS, SQL Database, Cloud SQL
NoSQL

DynamoDB, BigTable etc…
BigData

Redshift, SQL Data Warehouse

EMR, HD Insight, Treasure Data

BigQuery
データストリーム

Kinesis, Event Hubs, Cloud Dataflow
機械学習

(Amazon|Azure) Machine Learning, Prediction API
※PaaSの基準をかなり広めにしてますので、異論を認めます
IoTサーバサイドをクラウドでやるべき理由
こんなに部品が揃ってる
双方向通信とか考えると、
手前に何か置いたりする必要も
MQTT対応サービスまだですか…
図にすると
規模によっては、
多重にすることも
価値が生まれるのは
大体このへん
クライアントに戻すこともあれば、
人に見せる・伝えることも
WebサーバサイドとIoTサーバサイドの違い
相手が機械である(当たり前だけど大事)
具体的にどう違う?
項目 Web IoT
通信 広帯域 低帯域
同時接続数 少ない(場合による) 多い(場合による)
データ RDBが向いていることが多い
RDBに向かないデータが多い

時系列等
品質
低くてもなんとかなる

相手が人間だから

柔軟に対応できる

(極論です)
絶対に高くないとダメ

機械は失敗しても

決められたようにしか動けない
価値を生む場所

(主に)
オンライン処理(UX) バックエンド処理(分析等)
具体的にどう変わる?
項目 Web IoT
言語 Ruby, Python, PHP etc… Java, Scala, C#, Golang etc…
データベース RDBメイン NoSQLメイン
通信プロトコル HTTP MQTT, AMQP, HTTP2
分析 場合による ほぼ必須
大量のセッションや高品質に対応するためにコンパイル型言語がメインになる
RDBメインから、用途に合わせたNoSQLの選定が必要になる

→PaaSを使おう
Hadoop等の分析基盤が求められる可能性が高い

→PaaSを使おう
通信プロトコルは要件に依る(現状の雰囲気↓)

極めて低帯域だったり、通信頻度が多い場合「MQTT」

そこまでではなければ「HTTP2」場合によって「HTTP」
余談
クライアントサイド(≒組み込み)の人は凄いと思う
サーバサイドはクラウドの恩恵もあってかなり環境は良くなった
実質無限のリソースや再現性のあるインフラ等
でも、クライアントサイドはリソースが有限だし凄い少ない
サーバサイドは手元からリカバリできる
クライアントサイドはほぼできない
ぶっちゃけ、僕もよく分かってない所も多いので、
一緒に勉強していきましょう!
間違ってる所があったら教えて下さい。
ツッコミ歓迎です:-)

IoTにおけるクラウドインフラからサーバサイドまでの概要的な話