Date post: | 28-Jul-2015 |
Category: |
Software |
Upload: | jesus-rodriguez |
View: | 522 times |
Download: | 2 times |
Powering the Industrial Enterprise: The Emerge of the IOT
PaaS
Better Title: The NO BS Guide to IOT in the Real World
About Me
• Hackerpreneur• Founder of KidoZen• Founder of Tellago • Board member: Mobiquity,Electric Cloud• Advisor: Microsoft, Oracle• Angel Investor• Speaker, Author
http://jrodthoughts.comhttps://twitter.com/jrdothoughts
Agenda
• A quick look at the IOT market• A platform as a service for IOT• Centralized IOT capabilities• Decentralized IOT capabilities• Foundational models of an IOT PaaS:
Cloudfoundry, Block Chain• The current IOT solution landscape
Key Takeaways
• IOT PaaS models• How to implement IOT PaaS capabilities• State of the IOT platform market
IoT is destined to power the modern enterprise
We all know the real value of IOT
We Need Smarter Toasters
The Market?
Gartner calls IOT overhyped technology
Growth in venture funding has sustained in IoT over the last four years
~70% of IoT funding rounds from 2011-2013 were related to wearable technology
IoT company exits have grown ~36% YoY since 2010
Notable exits
$200M
$100M
$2B
$3.2B
$555M $175M
$170M $112M
$107M
~$500M IPO
$780M
Most of the Innovations has taken place in the wearables market but the enterprise is quickly catching up…..
Redefining Industries
The Opportunity is Huge… but so are the Challenges
Enterprise IoT Challenges
Connectivity
You Can Build Your Own Infrastructure
But It Will be Hard
There Must be a Better Way
IOT requires a new type of platform….
Introducing IOT Platform as a Service
Key Capabilities of an IOT Platform
Centralized vs. Decentralized IOT PaaS Models
Centralized IOT PaaS Model
• Smart devices talk to a central hub• The hub provides backend capabilities to smart devices• The hub manages and controls the IOT topology
Decentralized IOT Capabilities
• Capabilities that operate without a central authority• Smart devices host a version of the IOT PaaS• Smart devices communicate autonomously without a central
authority
Let’s explore….
Centralized IOT PaaS Capabilities…
Device Management Service
• Managing smart devices in an IOT topology
• Device monitoring• Device security • Device ping
Device Management Service: How To Implement it?
• Consul.io• XMPP discovery extensions • IBM IOT Foundation device
management API
REQUEST
POST org_id.internetofthings.ibmcloud.com/api/v0001/devices
{"type": "raspberrypi-sample",
"id": "1958138a4dfe",
"metadata": {
"address": { "number": 29, "street": "Acacia Road" } }}
RESPONSE
{"uuid": "d:ey67sp:raspberrypi-sample:1958138a4dfe",
"type": "raspberrypi-sample",
"id": "1958138a4dfe",
"metadata": { "address": {"number": 29, "street": "Acacia Road" }},
"password": "A?j8y_ueh*d(je34", "registration": {
"auth": {"id": "[email protected]",
"type": "person"
},
"date": "2014-08-21T18:25:43-05:00"}}
Protocol Hub
• Enabling devices to interact with the IOT platform using heterogenous protocols
• Provide consistent data/message exchange experiences across different devices
• Unify management, discovery and monitoring interfaces across different devices
Protocol Hub: How To Implement it?
• IOTivity protocol plugin model• IOTLab protocol manager• Apigee Zetta
PluginManager *m_pm = new PluginManager();std::vector<Plugin> plugins = m_pm->getPlugins();std::string name = plugins[0].getName();std::string id = plugins[0].getId();
<?xml version="1.0" encoding="UTF-8"?> <plugin id="oic.plugin.hue" version="0.1" name="hue plugin" resourcetype="oic.light" provider-name="wallace"> <runtime library="libplugin-hue-light" funcs="hue_light"/> </plugin>
Device Discovery
• Registering devices in an IOT topology
• Dynamically discovering smart devices in IOT network
Device Discovery: How To Implement it?
• UDP datagrams• Constrained application
protocol (CoAp)• IOTivity discovery APIs
platform.findResources("", "<span class="s1">coap://224.0.1.187</span>/oc/core?rt=alpha.light", findHandler)
Event Aggregation
• Execute queries over data streams• Compose event queries • Distribute query results to event
consumers
Event Aggregation: How To Implement it? • Apache Storm• AWS Kinesis • Azure Event Hubs• + Stream Analytics • Siddhi (WSO2)
KinesisSpoutConfig(streamName, zookeeperEndpoint). withZookeeperPrefix(zookeeperPrefix).withInitialPositionInStream(initialPositionInStream).withRegion(Regions.fromName(regionName));
builder.setSpout("Kinesis", spout, 2);builder.setBolt("Parse", new ParseReferrerBolt(),6).shuffleGrouping("Kinesis"); builder.setBolt("Count", new RollingCountBolt(5, 2,elasticCacheRedisEndpoint), 6).fieldsGrouping("Parse", new Fields("referrer"));..StormSubmitter.submitTopology(topologyName, topoConf, builder.createTopology());
Telemetry Data Storage
• Store data streams from smart devices in an IOT topology
• Store the output of the event aggregator service
• Optimize access to the data based on time stamps
• Offline data storage• Offline data syncing
Telemetry Data Storage: How To Implement it?
• Time Series: OpenTSDB, KairosDB, InfluxDB
• Offline: Couchbase + Couchbase lite
• IBM Bluemix Time Series API• InfluxDB
select percentile(value, 95) from response_times group by time(5m) into response_times.percentiles.5m.95
select mean(value), percentile(90, value) as percentile_90, percentile(99, value) as percentile_99 from /^stats.*/ group by time(10m) into 10m.:series_name
Event Simulation
• Replay streams of data in an IOT topology
• Store data streams that simulate real world conditions
• Detect and troubleshoot error conditions associated with specific data streams
Event Simulation: How To Implement it?
• Azure Event Hubs• AWS Kinesis• Apache Storm • PubNub
// retrieve last 100 messages pubnub.history({channel : 'my_channel',count : 100,callback : function(m){console.log(m)}});
Event Notifications
• Distribute events from a source to different devices in an IOT topology
• Devices can subscribe to data notification on specific topics
Event Notifications: How To Implement it?
• PubNub for IOT• Parse Notifications for IOT• MQTT
public class SubscribeCallback implements MqttCallback{ @Override public void connectionLost(Throwable cause) {} @Override public void messageArrived(MqttTopic topic, MqttMessage message) { System.out.println("Message arrived. Topic: " + topic.getName() + " Message: " + message.toString()); if ("home/LWT".equals(topic.getName())) { System.err.println("Sensor gone!"); } } @Override public void deliveryComplete(MqttDeliveryToken token) {} }
Real Time Data Visualizations
• Visualize IOT data streams real time
• Provide map visualizations in an IOT topology
• Integrate with big data platforms
• Integrate with machine and deep learning platforms
Real Time Data Visualizations: How To Implement it? • MetricsGraphicsJS• Graphite• Graphene• Cube• Plottly• D3JS
d3.json('data/ufo-sightings.json', function(data) { MG.data_graphic({ title: "UFO Sightings", description: "Yearly UFO sightings from the year 1945 to 2010.", data: data, width: 650, height: 150, target: '#ufo-sightings', x_accessor: 'year', y_accessor: 'sightings', markers: [{'year': 1964, 'label': '"The Creeping Terror" released'}] })})
Other Interesting Centralized IOT Capabilities• Device authentication• Access control • Integration with enterprise systems
Adopting Centralized IOT PaaS Capabilities
• Standard services, different implementations • Hosting environment agnostic • Incorporating third party services• Centralized management and governance
Cloudfoundry: A Foundational Model for a Centralized IOT PaaS
• Open PaaS architecture• Standard set of services• Broker model to incorporate
new services • CF web and infrastructure
services • CF mobile services (Pivotal CF
mobile)• CF IOT services??????????????
Decentralized IOT PaaS Capabilities…
Peer to Peer Secure Messaging
• Exchanging messages between smart devices in an IOT topology
• Eliminate the need of a central hub
• Secure, fully encrypted messaging protocol
Peer to Peer Secure Messaging: How To Implement it?
• Telehash var th = require("telehash");th.generate(function(err, endpoint){ if(err) return console.log("endpoint generation failed",err); // endpoint contains a `keys:{}`, `secrets:{}`, and `hashname:"..."` });…...var link = mesh.link(hashname);// will be called when link status changes, err is undefined when link is uplink.status(function(err){ if(err) { console.log('disconnected',err); return; } console.log('connected'); // can do any other link.* methods});
Contract Enforcement & Messaging Trust
• Express capabilities of a device• Enforce actions between
devices• Maintain a trusted ledger of
actions in an IOT network
Contract Enforcement: How To Implement it?
• Bitcoin Block Chain• Ethereum
File Sharing
• Efficiently sending files to smart devices (ex: firmware update)
• Exchange files in a decentralized model
• Secure and trusted file exchanges
File Sharng: How To Implement it?
• Bittorrent
Other Interesting Decentralized IOT Capabilities• Historical analytics • Device cooperation
Adopting Decentralized IOT PaaS Capabilities
• Smart devices will host an embedded version of the IOT PaaS• Interactions between devices need to be trusted without a
central authority • Standard way for devices to express capabilities
Block Chain: A Foundational Model for a Decentralized IOT PaaS
• Decentralized consensus • Trusted computing • Proof of work
The IOT Platform Market Is Incredibly Crowded…
Main Groups
IOT Platforms
Traditional Enterprise Software Vendors
Platform as a Service Solutions
API and Integration Platforms
Telecommunication Operators
Hardware & Networking Vendors
IOT Platform Startups
Enterprise Software Vendors
Vendors
• Oracle IOT Platform • IBM IOT Foundation• Citrix
Key Characteristics
• Closed source• On-premise • Proprietary technology• Hard to manage and deploy
Key Scenarios
• Vertical IOT solutions built on the platform• Integration with enterprise systems
Platforms as a Service
Vendors
• Azure Stream Analytics + Event Hubs• AWS Kinesis
Key Characteristics
• Cloud based• Standalone services for specific IOT capabilities • Easy to use and manage
Key Scenarios
• IOT products or solutions that require a specific service or capability
API and Integration Platforms
Vendors
• Apigee IOT Link (Zetta)• MuleSoft Anypoint• Parse IOT
Key Characteristics
• Integrating APIs with IOT telemetry data• Missing key elements of an IOT platform• Relatively simple to use and setup
Key Scenarios
• Integrating IOT solutions with backend APIs• Suppporting heterogeneous IOT transports and protocols
Integration PlatformsIntegration Platforms
Telecommunication Operators
Vendors
• Huawei Agile IOT Platform• <Insert your favorite telco name here…> IOT Platform
Key Characteristics
• Deep integration with operator network• Optimized for devices and solutions provided by the network operator • Complex to use, lack of mainstream adoption
Key Scenarios
• Industry solutions built on the platform• Network traffic optimization
Hardware and Networking Solutions
Vendors
• Cisco IOT solution suite• F5 IOT networking solutions
Key Characteristics
• Focus on networking and security• Integration with specific network hardware topology
Key Scenarios
• Enable an efficient network topology for IOT solutions
Mobile OS Vendors
Vendors
• Android Brillio • Blackberry IOT platform
Key Characteristics
• Tight integration with a specific mobile OS• Simple developer experience• Optimized for wearable’s
Key Scenarios
• Developing solutions for wearables• Interoperability between mobile apps and smart devices
IOT Platform Startups
Vendors
• LogmeIn Xively• ThingWorx • 2lemetry (AWS)
Key Characteristics
• Focus on enabling backend capabilities to IOT apps• Simple developer experience • Cross IOT platform capabilities
Key Scenarios
• Highly customizable IOT solutions• Advanced green field capabilities
Summary
• Industrial IOT will require a new type of platform• IOT PaaS models will be the foundation to the industrial enterprise• IOT PaaS models can be centralized or decentralized• Cloudfoundry architectures can be a great enabler of centralized IOT
capabilities• The block chain provides an incredible foundation for decetrnalized
IOT• The IOT PaaS is evolving on different segments of the market
THANKSJesus Rodriguez
https://twitter.com/jrdothoughts http://jrodthoughts.com/