Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
API でコントロール可能な
IoT 通信プラットフォーム
SORACOM
株式会社ソラコム
シニアソフトウェアエンジニア
小熊 崇
API meetup #12
2016.02.04
# whoami
• 名前:小熊 崇(おぐま たかし)
• 所属:株式会社ソラコム
– シニアソフトウェアエンジニア
• 2001年頃 IBM 東京基礎研究所 学生研究員
– WatchPad / CEO 玉川と出会う
• その後 家電メーカー...
•SORACOM ではフロントエンド担当
• ユーザーコンソール
• API Gateway
• soracom-sdk-go
•Web サイト
などなど
SORACOM での私の仕事
本当はバイナリ好き
好きなバイナリフォーマットは
MPEG...
《 本日の話題 》
• SORACOM とはどんなプラットフォームなのか
• API でどんなことができるのか
• なぜ API で制御可能としているのか
• API を提供しているシステムの技術的な仕組み
《 SORACOM の仕組み 》
SORACOM の仕組み
インターネットモノ 基地局 データセンター
ISP
パケット交換
帯域制御
顧客管理
課金・・・
通信キャリア
(NTT docomo)
クラウドネイティブ設計
→大量の接続数でも
スケーラブル/高可用性
ドコモとAW...
《 SORACOM API 》
SORACOM Air SIM
データ通信SIM
nano
micro
標準
データ通信SIM
(SMSあり)
nano
micro
標準
インターネット
SORACOM Air の使い方
NTTドコモ
の交換局
お客様
① SIMを購入して
モノに挿す
Webコンソール
②Webから
コントロール
インターネット
SORACOM Air
NTTドコモ
の交換局
API
Webコンソール
① SIMを購入して
モノに挿す
②Webから
コントロール
お客様
③APIで自動化
•通信回線自体の管理を自動化できる
• 多数の回線を保有する場合は単に通信できれば良いと
いうわけではなく、回線の監視や運用管理が必要
(従来の SIM では難しい)
初期設定、セキュリティ設定、条件に応じた処理、
配置後の設定変更 etc.
...
• グループ管理
- カスタム DNS設定
- メタデータ管理
- Endorse 設定
- Funnel 設定
• イベントハンドラー管理
• 統計情報取得
• 発注
• 課金情報取得
• 支払情報登録
• メタデータ利用
API でできるこ...
• グループ管理
- カスタム DNS設定
- メタデータ管理
- Endorse 設定
- Funnel 設定
• イベントハンドラー管理
• 統計情報取得
• 発注
• 課金情報取得
• 支払情報登録
• メタデータ利用
API でできるこ...
• グループ管理
- カスタム DNS設定
- メタデータ管理
- Endorse 設定
- Funnel 設定
• イベントハンドラー管理
• 統計情報取得
• 発注
• 課金情報取得
• 支払情報登録
• メタデータ利用
API でできるこ...
• グループ管理
- カスタム DNS設定
- メタデータ管理
- Endorse 設定
- Funnel 設定
• イベントハンドラー管理
• 統計情報取得
• 発注
• 課金情報取得
• 支払情報登録
• メタデータ利用
API でできるこ...
•JSON をやり取りする REST API
•リクエストヘッダーに API Key と API Token を入
れて呼び出す
•API Key:ユーザー識別
• API Token:JWT、権限のコントロール等
SORACOM API の特徴
1. イベントハンドラー
2. カスタム DNS
3. メタデータサービス
新・三大 個人的に好きな API
• グループ管理
- カスタム DNS設定
- メタデータ管理
- Endorse 設定
- Funnel 設定
• イベントハンドラー管理
• 統計情報取得
• 発注
• 課金情報取得
• 支払情報登録
• メタデータ利用
API でできるこ...
1. イベントハンドラー
できることの例)
• SIMの1日のデータ通信量が
一定のしきい値を超えたら
メールを送信
• 通算のデータ通信量が
一定のしきい値を超えたら
SIM を解約
一定の条件を満たした時にアクションを起こすことが
できる機...
eConnect Japan 様 Japan Prepaid SIM
• 1GB / 15days
• 3GB / 30days
• 5GB / 30days
データ通信容量を使い切るまで、
速度クラス s1.fast での高速通信
帯域制限は...
通信速度
POST: /subscribers/{imsi}/update_speed_class
=> 速度クラスを s1.fast に変更
有効期限
POST: /subscribers/{imsi}/set_expiry_time
=> ...
e.g. 3GB プランのイベントハンドラー
1.出荷時に、自社システムに SIM を登録
=> 累積 3000MB で Lambda を呼び出す
イベントハンドラーを登録
2. ユーザーのデータ通信量が 3000MB を超える
=> プラン終...
Before
一般的な SIM カードは面倒なアクティベートが必要
=> ネット環境を求めて SIM を買うのに、利用開始するために
WiFi 環境が必要なのは本末転倒、クレームもあった
After
SORACOM SIM なら、利用開始してい...
オペレーターが用意した独自の DNS サーバー
を使うようにすることができる機能
2. カスタム DNS
カスタム DNS
独自 DNS サーバー
SORACOM DNS サーバー
• DNS の Query Log
• デバイスの正常稼働の確認
• 不正利用の検出
• アクセス履歴の収集
• DNS フィルタリング
• アクセス先を限定
• 悪質なサーバへのアクセスを回避
• DNS の応答を変えて接続先を切り替え
カス...
SORACOM Airでキャプティブポータル
インターネット
API
未認証ユーザのGroup
認証済みユーザのGroup
認証ポータルしか
返さないDNS
認証ポータル3. 認証
4. Group変更 5. 回線切断
メタデータとは
通信を行っている SIM 自身の情報
メタデータサービスを使うと、
自身の情報だけは認証なしで取得・更新可能
SIM 自体ですでに呼び出し元の確認は済んでいるので、
認証なしでも安全。他の SIM からはアクセスできない。
3....
$ curl -s http://metadata.soracom.io/v1/subscriber | jq .
{
"imsi": "44010xxxxxxxxxx",
"msisdn": "81xxxxxxxxxx",
"ipAddres...
# 現在の速度クラスを確認
$ curl -s http://metadata.soracom.io/v1/subscriber | jq .speedClass
"s1.standard”
# 速度クラスを変更
$ curl -sX POST...
http://metadata.soracom.io/v1/userdata
•任意のデータを事前に登録(グループ単位)
•SIM から認証なしでユーザーデータを取得可能
ユーザーデータもあります
•デバイスの自動構成
コンフィグファイルや起動スクリプトを入れておく
•ポータルコンテンツの配信
HTML ファイルを入れておき、起動時にブラウザでアクセス
ユーザーデータのユースケース
《 SORACOM の想い》
• AWS はコンピューティングリソースを API で
コントロール可能とした
→ さまざまなスタートアップやサービスの出現に
つながった
• ソラコムも通信リソースを API でコントロール可能とする
→ IoT の世界でイノベーションを起こ...
• IoTにおいて通信は非常に重要
→ しかし通信そのもので差異化を図るのは困難
• SORACOM が泥臭い通信部分 (Heavy lifting work) を提供
→ IoT プレイヤーは SORACOM を通信のための部品として簡単・便...
《 SORACOM API Gateway》
SORACOM API Gateway (通称 Ogu Proxy)
•CORS 対応
•有効な API Key か簡易チェック
•スロットリング
•バックエンドサーバ群への振り分け
Go で書きました
Ogu Proxy
Ogu Proxy の構成(イメージ)
•単純なトークンバケット方式
API Key ごとに単位時間あたりのリクエスト数を
Redis にキャッシュ
Redis の TTL 機能で定期的にクリア
スロットリング方式
Ogu Proxy
Ogu Proxy
SORACOM Blog
《 新発表!!》
https://api-sandbox.soracom.io
API の実験を思う存分していただけます!
SIM の解約とか
SDK 開発者の皆様の強いご要望にお応えして
開発しています
使い方とかは開発者サイトにて公開予定
近日公開:SORA...
•Facebook
https://www.facebook.com/soracom.jp
•Twitter
@SORACOM_PR
•ブログ
https://blog.soracom.jp
Follow us
《 最後に 》
2月のソラコムイベントのご案内
http://www.kokuchpro.com/event/soracom7/http://www.kokuchpro.com/event/soracom6/
•電子書籍
Amazon.co.jp にて発売中
•Web サイト
SORACOM Developers
(開発者サイト)
https://dev.soracom.io/jp/
参考資料
API meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOM
Upcoming SlideShare
Loading in …5
×

API meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOM

1,443 views

Published on

「APIでコントロール可能なIoT通信プラットフォームSORACOM」
株式会社ソラコム シニアソフトウェアエンジニア
小熊崇

2/4 API meetup Tokyo #12
http://eventdots.jp/event/578063

Published in: Technology
  • Be the first to comment

API meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOM

  1. 1. API でコントロール可能な IoT 通信プラットフォーム SORACOM 株式会社ソラコム シニアソフトウェアエンジニア 小熊 崇 API meetup #12 2016.02.04
  2. 2. # whoami • 名前:小熊 崇(おぐま たかし) • 所属:株式会社ソラコム – シニアソフトウェアエンジニア • 2001年頃 IBM 東京基礎研究所 学生研究員 – WatchPad / CEO 玉川と出会う • その後 家電メーカー、ネットワーク機器 メーカー、セキュリティベンダーを経て SORACOM に Join • 5人の子を持つ父
  3. 3. •SORACOM ではフロントエンド担当 • ユーザーコンソール • API Gateway • soracom-sdk-go •Web サイト などなど SORACOM での私の仕事 本当はバイナリ好き 好きなバイナリフォーマットは MPEG 1,2,4 Video
  4. 4. 《 本日の話題 》 • SORACOM とはどんなプラットフォームなのか • API でどんなことができるのか • なぜ API で制御可能としているのか • API を提供しているシステムの技術的な仕組み
  5. 5. 《 SORACOM の仕組み 》
  6. 6. SORACOM の仕組み インターネットモノ 基地局 データセンター ISP パケット交換 帯域制御 顧客管理 課金・・・ 通信キャリア (NTT docomo) クラウドネイティブ設計 →大量の接続数でも スケーラブル/高可用性 ドコモとAWSを 専用線で直結
  7. 7. 《 SORACOM API 》
  8. 8. SORACOM Air SIM データ通信SIM nano micro 標準 データ通信SIM (SMSあり) nano micro 標準
  9. 9. インターネット SORACOM Air の使い方 NTTドコモ の交換局 お客様 ① SIMを購入して モノに挿す Webコンソール ②Webから コントロール
  10. 10. インターネット SORACOM Air NTTドコモ の交換局 API Webコンソール ① SIMを購入して モノに挿す ②Webから コントロール お客様 ③APIで自動化
  11. 11. •通信回線自体の管理を自動化できる • 多数の回線を保有する場合は単に通信できれば良いと いうわけではなく、回線の監視や運用管理が必要 (従来の SIM では難しい) 初期設定、セキュリティ設定、条件に応じた処理、 配置後の設定変更 etc. API のメリット
  12. 12. • グループ管理 - カスタム DNS設定 - メタデータ管理 - Endorse 設定 - Funnel 設定 • イベントハンドラー管理 • 統計情報取得 • 発注 • 課金情報取得 • 支払情報登録 • メタデータ利用 API でできること • 認証 • オペレータ管理 - サインアップ - メールアドレス変更 - パスワード変更 - 認証キー生成・削除 • セキュリティ情報管理 - ユーザー管理 - ロール管理 - 連携外部サービスの 認証クレデンシャル 管理 • SIM管理 - 登録 - 通信速度変更 - アクティベート、休止 - 解約 - 有効期限管理 - タグ - 移管
  13. 13. • グループ管理 - カスタム DNS設定 - メタデータ管理 - Endorse 設定 - Funnel 設定 • イベントハンドラー管理 • 統計情報取得 • 発注 • 課金情報取得 • 支払情報登録 • メタデータ利用 API でできること • 認証 • オペレータ管理 - サインアップ - メールアドレス変更 - パスワード変更 - 認証キー生成・削除 • セキュリティ情報管理 - ユーザー管理 - ロール管理 - 連携外部サービスの 認証クレデンシャル 管理 • SIM管理 - 登録 - 通信速度変更 - アクティベート、休止 - 解約 - 有効期限管理 - タグ - 移管
  14. 14. • グループ管理 - カスタム DNS設定 - メタデータ管理 - Endorse 設定 - Funnel 設定 • イベントハンドラー管理 • 統計情報取得 • 発注 • 課金情報取得 • 支払情報登録 • メタデータ利用 API でできること • 認証 • オペレータ管理 - サインアップ - メールアドレス変更 - パスワード変更 - 認証キー生成・削除 • セキュリティ情報管理 - ユーザー管理 - ロール管理 - 連携外部サービスの 認証クレデンシャル 管理 • SIM管理 - 登録 - 通信速度変更 - アクティベート、休止 - 解約 - 有効期限管理 - タグ - 移管 解約
  15. 15. • グループ管理 - カスタム DNS設定 - メタデータ管理 - Endorse 設定 - Funnel 設定 • イベントハンドラー管理 • 統計情報取得 • 発注 • 課金情報取得 • 支払情報登録 • メタデータ利用 API でできること • 認証 • オペレータ管理 - サインアップ - メールアドレス変更 - パスワード変更 - 認証キー生成・削除 • セキュリティ情報管理 - ユーザー管理 - ロール管理 - 連携外部サービスの 認証クレデンシャル 管理 • SIM管理 - 登録 - 通信速度変更 - アクティベート、休止 - 解約 - 有効期限管理 - タグ - 移管 解約
  16. 16. •JSON をやり取りする REST API •リクエストヘッダーに API Key と API Token を入 れて呼び出す •API Key:ユーザー識別 • API Token:JWT、権限のコントロール等 SORACOM API の特徴
  17. 17. 1. イベントハンドラー 2. カスタム DNS 3. メタデータサービス 新・三大 個人的に好きな API
  18. 18. • グループ管理 - カスタム DNS設定 - メタデータ管理 - Endorse 設定 - Funnel 設定 • イベントハンドラー管理 • 統計情報取得 • 発注 • 課金情報取得 • 支払情報登録 • メタデータ利用 API でできること • 認証 • オペレータ管理 - サインアップ - メールアドレス変更 - パスワード変更 - 認証キー生成・削除 • セキュリティ情報管理 - ユーザー管理 - ロール管理 - 連携外部サービスの 認証クレデンシャル 管理 • SIM管理 - 登録 - 通信速度変更 - アクティベート、休止 - 解約 - 有効期限管理 - タグ - 移管
  19. 19. 1. イベントハンドラー できることの例) • SIMの1日のデータ通信量が 一定のしきい値を超えたら メールを送信 • 通算のデータ通信量が 一定のしきい値を超えたら SIM を解約 一定の条件を満たした時にアクションを起こすことが できる機能 AWS Lambda
  20. 20. eConnect Japan 様 Japan Prepaid SIM • 1GB / 15days • 3GB / 30days • 5GB / 30days データ通信容量を使い切るまで、 速度クラス s1.fast での高速通信 帯域制限は一切なし • 100MB/day (7days) • 100MB/day (15days) • 100MB/day (30days) 毎日 100MB まで速度クラス s1.fast で 高速通信 使い切っても s1.slow で使い放題
  21. 21. 通信速度 POST: /subscribers/{imsi}/update_speed_class => 速度クラスを s1.fast に変更 有効期限 POST: /subscribers/{imsi}/set_expiry_time => プランの利用可能日数に応じて、日付を unixtime で指定 データ通信容量 POST: /event_handlers => プランごとのデータ通信容量をしきい値に指定し、 累積通信量が超過すると Lambda を呼び出すイベントハンドラーを登録 各プラン共通の基本的な実装
  22. 22. e.g. 3GB プランのイベントハンドラー 1.出荷時に、自社システムに SIM を登録 => 累積 3000MB で Lambda を呼び出す イベントハンドラーを登録 2. ユーザーのデータ通信量が 3000MB を超える => プラン終了用の Lambda ファンクションを呼び出す 3. Lambda ファンクションが実行される => プラン終了用の eConnect API を呼び出す IMSI やプラン情報などのパラメータを渡す 4. Deactivate ユーザーのデバイス 5. メール / Push 通知
  23. 23. Before 一般的な SIM カードは面倒なアクティベートが必要 => ネット環境を求めて SIM を買うのに、利用開始するために WiFi 環境が必要なのは本末転倒、クレームもあった After SORACOM SIM なら、利用開始していないステータス「準備完了」でも通 信を開始できる => イベントハンドラーで、ユーザーの初回通信をトリガーに Lambda を 呼び出してプラン登録・開始のアクティベートを行う 自動アクティベート
  24. 24. オペレーターが用意した独自の DNS サーバー を使うようにすることができる機能 2. カスタム DNS カスタム DNS 独自 DNS サーバー SORACOM DNS サーバー
  25. 25. • DNS の Query Log • デバイスの正常稼働の確認 • 不正利用の検出 • アクセス履歴の収集 • DNS フィルタリング • アクセス先を限定 • 悪質なサーバへのアクセスを回避 • DNS の応答を変えて接続先を切り替え カスタム DNS の使用例
  26. 26. SORACOM Airでキャプティブポータル インターネット API 未認証ユーザのGroup 認証済みユーザのGroup 認証ポータルしか 返さないDNS 認証ポータル3. 認証 4. Group変更 5. 回線切断
  27. 27. メタデータとは 通信を行っている SIM 自身の情報 メタデータサービスを使うと、 自身の情報だけは認証なしで取得・更新可能 SIM 自体ですでに呼び出し元の確認は済んでいるので、 認証なしでも安全。他の SIM からはアクセスできない。 3. メタデータサービス
  28. 28. $ curl -s http://metadata.soracom.io/v1/subscriber | jq . { "imsi": "44010xxxxxxxxxx", "msisdn": "81xxxxxxxxxx", "ipAddress": "10.xxx.xxx.xxx", "apn": "soracom.io", "type": "s1.standard", "groupId": ”xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "createdAt": 1437119287341, : SIM の情報の取得
  29. 29. # 現在の速度クラスを確認 $ curl -s http://metadata.soracom.io/v1/subscriber | jq .speedClass "s1.standard” # 速度クラスを変更 $ curl -sX POST -d '{"speedClass":"s1.fast"}’ -H 'Content-Type: application/json' http://metadata.soracom.io/v1/subscriber/update_speed_class | jq .speedClass "s1.fast” # 変更後の速度クラスを確認 $ curl -s http://metadata.soracom.io/v1/subscriber | jq .speedClass "s1.fast" 自分自身の設定変更も可能
  30. 30. http://metadata.soracom.io/v1/userdata •任意のデータを事前に登録(グループ単位) •SIM から認証なしでユーザーデータを取得可能 ユーザーデータもあります
  31. 31. •デバイスの自動構成 コンフィグファイルや起動スクリプトを入れておく •ポータルコンテンツの配信 HTML ファイルを入れておき、起動時にブラウザでアクセス ユーザーデータのユースケース
  32. 32. 《 SORACOM の想い》
  33. 33. • AWS はコンピューティングリソースを API で コントロール可能とした → さまざまなスタートアップやサービスの出現に つながった • ソラコムも通信リソースを API でコントロール可能とする → IoT の世界でイノベーションを起こしたい なぜ API を公開しているか?
  34. 34. • IoTにおいて通信は非常に重要 → しかし通信そのもので差異化を図るのは困難 • SORACOM が泥臭い通信部分 (Heavy lifting work) を提供 → IoT プレイヤーは SORACOM を通信のための部品として簡単・便 利に使えるようにして、IoTビジネスに注力できる環境を整えたい • SORACOMを使えば誰でも通信を利用できて、企業規模に関わらず スモールスタートでき、必要に応じてスケールアウトできる ソラコムの想い
  35. 35. 《 SORACOM API Gateway》
  36. 36. SORACOM API Gateway (通称 Ogu Proxy) •CORS 対応 •有効な API Key か簡易チェック •スロットリング •バックエンドサーバ群への振り分け Go で書きました Ogu Proxy
  37. 37. Ogu Proxy の構成(イメージ)
  38. 38. •単純なトークンバケット方式 API Key ごとに単位時間あたりのリクエスト数を Redis にキャッシュ Redis の TTL 機能で定期的にクリア スロットリング方式
  39. 39. Ogu Proxy
  40. 40. Ogu Proxy
  41. 41. SORACOM Blog
  42. 42. 《 新発表!!》
  43. 43. https://api-sandbox.soracom.io API の実験を思う存分していただけます! SIM の解約とか SDK 開発者の皆様の強いご要望にお応えして 開発しています 使い方とかは開発者サイトにて公開予定 近日公開:SORACOM API Sandbox
  44. 44. •Facebook https://www.facebook.com/soracom.jp •Twitter @SORACOM_PR •ブログ https://blog.soracom.jp Follow us
  45. 45. 《 最後に 》
  46. 46. 2月のソラコムイベントのご案内 http://www.kokuchpro.com/event/soracom7/http://www.kokuchpro.com/event/soracom6/
  47. 47. •電子書籍 Amazon.co.jp にて発売中 •Web サイト SORACOM Developers (開発者サイト) https://dev.soracom.io/jp/ 参考資料

×