SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
How do we get our software out on the Internet of Things? Many assumptions in current deployment practices don't hold up. Devices can be occasionally connected, through low-bandwidth networks and are generally outside of direct control. Manually shuffling around binaries is not an option.
Apache ACE is an open-source Java provisioning tool tackling such challenges.You can manage Java apps and configs in a modular fashion. The foundations of ACE are OSGi, semantic versioning and reliable communication. Pushing out incremental updates and managing numerous devices becomes possible.
How do we get our software out on the Internet of Things? Many assumptions in current deployment practices don't hold up. Devices can be occasionally connected, through low-bandwidth networks and are generally outside of direct control. Manually shuffling around binaries is not an option.
Apache ACE is an open-source Java provisioning tool tackling such challenges.You can manage Java apps and configs in a modular fashion. The foundations of ACE are OSGi, semantic versioning and reliable communication. Pushing out incremental updates and managing numerous devices becomes possible.
7.
Provisioning?
'Just download latest binaries over
FTP at system startup'
8.
Provisioning wishlist
Modularity
Efficiency
Automation
Security
Feature composition
Remotely toggle features
Bandwidth efficient
Avoid unnecessary updates
Manage many devices
Insight: what runs where?
Not just any device
9.
IoT != IoT
We are not talking about millions of devices:
10.
IoT != IoT
We are not talking about millions of devices:
This talk is not about device management
11.
IoT Provisioning standards
Mostly about device management
Device
OS
Firmware
Application
Vendors
Operators
OMA-DM (cellular)
LWM2M (ip-based)
?
13.
Provisioning demo
Target:
Car 1
ACE Car Entertainment
Target:
Car 2
NUC 1
NUC 2
Laptop
ACE
Provisioning
Server
Budget
Edition
Deluxe
Edition
All modules &
configuration
Us
14.
Modular systems
Feature Y
Monolithic deployment: installation
Feature X
Deployment package
Target
15.
Modular systems
Feature Y
Monolithic deployment: update
Feature X
Deployment package
Target
Limited connectivity
Bandwidth inefficient
Feature W
16.
Modular systems
Feature Y
Modular deployment: installation
Feature X
Deployment package
Target
17.
Modular systems
Feature Y
Modular deployment: update
Feature X
Deployment package
Target
Feature W
18.
Modular systems
Feature Y
Differentiate with ease
Feature X
Target 2
Feature W
Target 1
Feature Y
Feature X
19.
Modular systems
How?
De facto standard for Java modularity
Small footprint
Dynamic service model
20.
phone
v1.0.0
OSGi runtime (it's just Java!)
JVM
music
v1.0.0
dashboard
v1.0.0
21.
phone
v2.0.0
OSGi runtime (it's just Java!)
JVM
music
v1.0.0
dashboard
v1.0.0
Hot-swap bundles
22.
Dependencies explicit
in bundle metadata
phone
v2.0.0
OSGi runtime (it's just Java!)
JVM
music
v1.0.0
dashboard
v1.0.0
23.
Service registry
App? PhoneApp
phone
v2.0.0
OSGi runtime (it's just Java!)
JVM
music
v1.0.0
dashboard
v1.0.0
24.
Modular systems
Demo code
Code @ bit.ly/carprov
25.
Ace
client
Ace
Server
Artifact
Repository
Device 1
Device 2
Device n
Build
server
Architecture
26.
Model
Bundle A
Bundle B
Bundle C
Feature A
Feature B
Distribution A
27.
Targets
Device/target
JVM/OSGi
framework
Operating
System
Management
agent bundle
Polls ACE server for updates
‣ Any JVM capable device
‣ Target has unique id
‣ Configure server location
Deployment packages sent back