Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
公開用_WebDBForum2018_テクノロジーショーケース_業務IoTストリーミング基盤.pdf
Search
Junki Mano
September 14, 2018
Programming
1
320
公開用_WebDBForum2018_テクノロジーショーケース_業務IoTストリーミング基盤.pdf
Junki Mano
September 14, 2018
Tweet
Share
More Decks by Junki Mano
See All by Junki Mano
ソフトウェアアーキテクトって何やるの? ~知っておくと役立つ考え方を共有します~ | 技育祭2022秋
laqiiz
3
2.2k
Goで工場を制御する要であるPLCにアクセスする / go-plc
laqiiz
0
2.5k
Abstract Sentinel
laqiiz
0
120
CNCF
laqiiz
1
120
Local_Kubernetes.pdf
laqiiz
1
110
Abstract Helmfile
laqiiz
1
110
Abstract GitOps
laqiiz
1
180
Other Decks in Programming
See All in Programming
クラシルリワードにおける iOSアプリ開発の取り組み
funzin
1
810
UPDATEがシステムを複雑にする? イミュータブルデータモデルのすすめ
shimomura
0
210
AI Coding Agent Enablement in TypeScript
yukukotani
17
7.2k
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
250
CQRS/ESのクラスとシステムフロー ~ RailsでフルスクラッチでCQRSESを組んで みたことから得た学び~
suzukimar
0
190
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
12
6.4k
Rethinking Data Access: The New httpResource in Angular
manfredsteyer
PRO
0
220
What Spring Developers Should Know About Jakarta EE
ivargrimstad
1
610
イベントストーミングから始めるドメイン駆動設計
jgeem
3
380
iOSアプリ開発もLLMで自動運転する
hiragram
6
2.1k
テスト分析入門/Test Analysis Tutorial
goyoki
11
2.7k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
39
1.8k
Adopting Sorbet at Scale
ufuk
76
9.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.3k
BBQ
matthewcrist
88
9.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
6
660
Transcript
フューチャー社における IoTシステム構築の 事例紹介 テクノロジーショーケース Future株式会社 Mano Junki ~ ファクトリーからモビリティへ ~
WebDB Forum 2018 9/14(金)
◦ フューチャーにおけるIoTシステムの事例紹介 ◦ 設計~実装を通して得た、IoTシステムの面白み、 ツラミ、そしてIoTシステムの魅力についてお話し ます ◦工場IoT、モビリティIoTの順に紹介します 本日お話すること
真野 隼記(まの じゅんき) * 2009年フューチャーアーキテクト入社 * 神戸大学 電気電子工学卒 * クラウド、IoT、Golangがメインのエンジニア
ポエマー目指して投 稿してます @laqiiz
フューチャー株式会社 設立 1989年11月28日 (創立30周年!) 社員数 1,493名 (2016年12月) 事業 内容 ・ITコンサルティング&サービス事業
・ビジネスイノベーション事業 指標 売上高:362.6億円 営業利益:44.5億円
None
IoTといえば 一般的に思い当たるのが…
IoTといえば 一般的に思い当たるのが… スマートゴミ箱 スマート時計 スマート鍵 スマートホーム 色々ありますが、生活をスマートにする製品群
モビリティ 店舗 工場 商品 消費者 従業員 漁業 その他 農業 漁業
馴染みが薄いであろう領域を中心に お話します
グローバルで100超の拠点 生産性を デジタルの力で30%アップ 工場IOT SMART FACTORY
工場IoT エッジサイド
スマートファクトリーIoT概観 収集 加工 蓄積 分析 通知 分析 Cloud ◦ 工場内の各センサーデータを収集・分析し、生産性や品質向上に役立てる仕組み
◦ 既存の製造設備をコネクテッド化するのが第一歩
収集 加工 蓄積 分析 通知 分析 Cloud データ粒度 小 大(サマリ)
データ発生源がもっとも複雑
よくあるWebアプリケーションと異なる点① ◦ 要求/応答でコンテンツを返すのではなく、データをとにかく受け付 け後で処理するという点 = サーバサイドで対応する必要があります クライアント =ブラウザなど サーバ クライアント
=IoTデバイス サーバ よくあるWebアプリケーションの簡易図 IoTシステムの簡易図 Request/Response Streaming Processing
よくあるWebアプリケーションと異なる点② ◦ 欲しいデータを効果的に取得する必要がある点 ◦ センシングが物理的に可能か、サンプリング間隔などの問題 クライアント =IoTデバイス サーバ センシング センシング
よくあるWebアプリケーションと異なる点③ ◦ 工場の設備はPLC( Programmable Logic Controller)と呼ばれる 制御装置で作成されていることが多いです ◦ ある程度オートメーション化された加工情報を取得≒PLCからデータ を取得するということ
PLCの例 PLC
PLCからデータを収集するとは.. ◦ PLC(Programmable Logic Controller) ◦ リレー回路の代替装置として開発された歴史 …まずは業務用のマイコンのような認識でいると良いのでは? ◦ PLCのレジスタに加工記録が残っている
値段はピンきりですが、1台5万円程度~
PLCからデータを収集するとは.. ◦長さ、厚み、ガス圧、バーナー温度etc. ◦センサーがPLCにシリアル接続されていて、その値がPLCのレジス タに格納される センサー カメラ
立ちはだかる壁~PLC編~ PLCからどうやってデー タ取れますかね? (HTTP、MQTTとか?) シリアル、Ethernet CC-Link、EtherCATなど がありますが、どうしま しょうか? わたし 工場エンジニアさん
CC-Link、EtherCAT調べた ◦ 工場用のフィールドNW規格である ◦CC-Link は10Mbpsの転送速度を選ぶと、100mまで対応できるといった規格 ◦正確には、CC-Linkにも種類があり、Ethernet上に構築するものもあるらしい ◦ 物理層・データリンク層のレベル
OSI参照レイヤーの 物理層から違う!
こぼれ話その② 汎用的なEthernetが 良いのでは?通常のLAN と併用できますし そもそも、PLCの中には Ethernetに接続できない ものがある わたし 工場エンジニアさん
接続できなかったら IoTができない…
古いPLCにはEthernetポートが無 いらしい ◦手段としては、Ethernetカートリッジを購 入するか ◦当然ながら素直に新しいものを買えという話も…
サーバへのデータ送信 PLC上ではどんな言語が 動かせますか?HTTPが 話せればよいのですが… わたし CとかJavaは動かせない FTPかSMTPで転送するか ベンダーさん
C言語、動かない? ※ラダーなら動く ラダーについての説明は割愛
PLCからのデータ取得は困難 ◦ いわゆる汎用型言語が動かせないため Web系のエンジニアリングがしにくい ◦FTP,SMTPは非常に制限された設定しかできず、 また、専用ツールからしか設定できない ≒Infrastructure as a Codeは夢のまた夢
【参考】標準化の流れ ◦ 独国のIndustory 4.0の流れを受けて加速 ◦ OPC-UA, ORiN, EdgeCrossなど、標準プロトコル、 標準仕様、標準化コンソーシアムが多数 ◦
TCP, シリアル上に通信プロトコルを重ねる場合と、 SOAP (*1) on HTTP で構成されていることが散見 ※ 簡単にいうと、RESTのXML版でAPI規格(OpenAPI-Specification)もXMLで記載できる
最終的には ◦PLCはEthernetに接続(IPを付与) ◦FTP転送機能でデータ収集
工場IoTの構成例 センター PLC PLC FTP HTTP ◦ FTPで直接、クラウドなどのサーバにデータを転送するのではなく、 中継サーバを設置 中継サーバ
PLCへのデータ書き込み ユースケース: 工場作業者が、自分でマニュアルを見ながら設備の設定 を入力する運用を無くして、入力の手間と間違えを無く したい 実現方法: 多くの設備では独自プロトコルが存在。 例として、業界標準の一つであるMCプロトコルがある
MCプロトコルについて ◇【例】要求伝文 500000FFFF03000C001000010400002C0100A80300 ◇ 【例】応答伝文 D00000FFFF03000800000001000A006400 Socketでこういう電文を 送ることでレジスタに かきこみでる ※TCP上に構築された、独自HTTPといった具合のプロトコル
工場IoT サーバサイド
IoTサーバサイド ◦ 3000設備が1[kb]程度のメッセージを毎秒3回送信 ◦ 高負荷に耐えられる仕組みが必須 ◦ 拠点側からのリトライなどは期待できない …あまり手を入れたくない
処理モデル ◦リクエスト・レスポンス型 ◦バッチ型 ◦ストリーミング型
処理モデル トレードオフ ◦ 応答性能(レイテンシ) ◦ コンピュータ資源 ◦ 正確性
IoTシステム ◦ 人間が待っているわけではないのでリクエスト・レス ポンスである必要はない ◦設備の故障検知など、なるべく早くデータは処理したい ので、バッチでは応答性能が厳しい場合がある → ストリーミング型の処理モデルの採用へ
キューイングシステムの導入 いったんキューで受け付け、そのあと順次処理する 加工や分析 永続化 通知・可視化 ストリーミング処理
例:OSSプロダクトによる構成 いったんキューで受け付け、そのあと順次処理する 加工や分析 永続化 通知・可視化 ストリーミング処理
データ処理パイプライン ◦ 生データをパースし “意味付け”、目的別に分類、品質 や稼働状況などを取得するといった多段処理へ 生 デ ー タ (
バ イ ナ リ ) 品 質 情 報 稼 働 状 況 受信 パース後 品質 元データ 稼働 元データ
キューイング後の流量 ◦ キューイングからの取得件数を調整することで下げる ことが可能(≒レイテンシが犠牲になる) ◦ 同一タイミングで送信されるデータが多いときはフリ ーランチな引き換えになる 入力データ 3件分一括で取得して処理 ≒必要なコンピュータ資源を下げ
られる→運用費用を下げられる
データの蓄積について ◦ 時系列データになる ◦ もともとより流量は下がっているとはいえ、 分散型のKVSなどに格納するのが基本
【参考】可視化・品質情報 ◦ 多くのメトリクスから洞察し生産現場へ フィードバック
工場IoTまとめ
まとめ ◦ 設備機器からの収集部分に壁があり …規格のオープン化・標準化により一層Webの世界との融合ができることを期待 ◦ サーバサイドに届いてしまえばいつもの世界 …公開されているプラクティスも多く、慣れた世界 ◦ 工場IoTのカバーする領域は広い!(面白いところ) …現実世界とデジタル空間をつなぐ楽しみ
現実の世界を1 秒以内にデジタル化 対象とする自動車は 数N万台 モビリティIOT DIGITAL TWIN
モビリティIoTとは? ◦ 移動体、多くは自動車などを指します ◦ 車をインターネットに繋ぎ様々なサービスへ展開 ◦ ◦ 都市交通・物流に対してよりよくしていきたい
工場IoTとの違い ◦ とにかく動く、しかも早い - 迷ったら安全側に倒すしかない。また、位置情報が宝 ◦ 接続数が多い - 物流業者のトラックだけでも桁違い -
家庭乗用車などを含めると、数千万台規模 ◦ 車種が多い - 自動車メーカ毎に対応が必要
一方、システム構成は ◦ 大枠のシステム構成は似通ってくる ◦ 接続先が工場から各モビリティに変わる 加工や分析 永続化 ストリーミング処理
要件が厳しくなりがちな点 ◦ モビリティに対する通知や制御をなるべく 早く行いたい 例)運転手への注意喚起などなど →200~300[ms] で実施”したい”など (*1) ※1) あくまで要望ですが、これを以下に早くするかで業界で競争が進んでいる領域
データの振り下ろし ◦ モビリティ側でグローバルIPを持ちたくない …IPv6ならという話もあるが、セキュリティやセンター側の保守管理的にも ◦ なるべくリアルタイムで処理したいので、ポーリングは避けたい ◦ サーバサイドでプッシュ通知したい →MQTT(AMQP)プロトコルの活用へ
MQTTを活用した通信 ◦ モビリティ側はMQTT のpublisherにもsubscriber にもなる ◦ 正直、まだまだ研究のしどころがある分野 MQTT publish MQTT
subscribe MQTT ブローカ 加工や 分析
検討テーマ ◦ MQTTブローカーのスケーラビリティの弱さ …そんなに簡単にスケールしない ◦ MQTT上で通信品質を管理するスタックの構築 …メッセージの信頼性(QoS)、順序性、データ欠損、遅延配信への対処などなど ◦ 移動や、Wifi, 3g/4g/5g
など回線の切り替えのときの再接続への考慮 …TCPハンドシェイク、TLSハンドシェイクをする必要 …QUIC(UDP上に構築されたGoogleが標準化を目指しているプロトコル)など?
位置情報を用いたサービス ◦ リアルタイムなトレーシング ◦ 指定のエリアに入ったら 広告をプッシュするなど
桁違いのデータ量 ◦ zip圧縮後、5[TB]/日 のデータが発生 ◦ もはや分散処理しなければどうしようもない ◦データ構造、アルゴリズム、コンピューティン グの総合格闘技
データのチャンク ◦ ひとかたまりで分析する粒度は、トラジェクト リーという粒度 移動開始~停止までの粒度。 ◦ 時間で単純に処理できないため、どの程度停止 したら1トラジェクトリーとしてみなすかは試行 錯誤中
モビリティIoT まとめ
モビリティIoTまとめ ◦ まさに国際競争の最前線 ◦ AIだけではなく、IoT領域への期待値がか つてなく高まっている ◦ モビリティという特殊性、大量のデータ処 理を行うには、広く深い知見が必要
全体まとめ
全体まとめ ◦ デバイス、通信、サーバサイドなど幅広い知識が必要 ◦ 対象はユーザではなく現実世界そのもの ◦ 知らない世界ばかり、楽しい
質疑応答