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.

Provisioning the IoT

3,684 views

Published on

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.

Published in: Devices & Hardware
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Provisioning the IoT

  1. 1. Paul Bakker Sander Mak Luminis Technologies - @pbakker - @sander_mak Provisioning the IoT
  2. 2. 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals
  3. 3. Provisioning spectrum
  4. 4. Provisioning spectrum servers Cloud/SaaS: ‣ full control ‣ reliable network ‣ VM/Containers
  5. 5. Provisioning spectrum servers Cloud/SaaS: ‣ full control ‣ reliable network ‣ VM/Containers mobile App stores: ‣ walled garden ‣ semi-reliable network ‣ full binaries
  6. 6. Provisioning spectrum IoT ?
  7. 7. Provisioning? 'Just download latest binaries over FTP at system startup'
  8. 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. 9. IoT != IoT We are not talking about millions of devices:
  10. 10. IoT != IoT We are not talking about millions of devices: This talk is not about device management
  11. 11. IoT Provisioning standards Mostly about device management Device OS Firmware Application Vendors Operators OMA-DM (cellular) LWM2M (ip-based) ?
  12. 12. Demo time!
  13. 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. 14. Modular systems Feature Y Monolithic deployment: installation Feature X Deployment package Target
  15. 15. Modular systems Feature Y Monolithic deployment: update Feature X Deployment package Target Limited connectivity Bandwidth inefficient Feature W
  16. 16. Modular systems Feature Y Modular deployment: installation Feature X Deployment package Target
  17. 17. Modular systems Feature Y Modular deployment: update Feature X Deployment package Target Feature W
  18. 18. Modular systems Feature Y Differentiate with ease Feature X Target 2 Feature W Target 1 Feature Y Feature X
  19. 19. Modular systems How? De facto standard for Java modularity Small footprint Dynamic service model
  20. 20. phone v1.0.0 OSGi runtime (it's just Java!) JVM music v1.0.0 dashboard v1.0.0
  21. 21. phone v2.0.0 OSGi runtime (it's just Java!) JVM music v1.0.0 dashboard v1.0.0 Hot-swap bundles
  22. 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. 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. 24. Modular systems Demo code Code @ bit.ly/carprov
  25. 25. Ace client Ace Server Artifact Repository Device 1 Device 2 Device n Build server Architecture
  26. 26. Model Bundle A Bundle B Bundle C Feature A Feature B Distribution A
  27. 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
  28. 28. ‣ Explicit target registration ‣ HTTP auth or SSL Client Certificates Security: Process: ‣ Manual update approval ‣ Custom properties ‣ Audit logs ACE Server Target 1 Target 2 logs
  29. 29. Scripting REST Java API scriptable OSGi shell, calls (low- level) Java API Gogo script GET /work/{id}/feature workspaceMgr.cw().lf()
  30. 30. Deployment packages Structure GET /deployment/car1/versions/3.0.0 Manifest-Version: 1.0 DeploymentPackage-SymbolicName: car1 DeploymentPackage-Version: 3.0.0 Name: carprov.dashboard.impl-1.0.0.jar Bundle-SymbolicName: carprov.dashboard.impl Bundle-Version: 1.0.0 Name: org.apache.felix.dependencymanager-3.1.0.jar Bundle-SymbolicName: org.apache.felix.dependencymanager Bundle-Version: 3.1.0 … META-INF/MANIFEST.MF
  31. 31. Deployment packages Installation on target ‣ Transactional: retries and rollback ‣ Installation status in audit log ‣ Unreliable networks: ‣ Download instead of stream ‣ Resumable downloads ‣ Custom update strategies
  32. 32. ACE Extensibility ‣ Built on modular OSGi architecture ‣ Different repository implementations ‣ Custom update strategies on targets ‣ Multiple topologies (e.g. relay server) ‣ ResourceProcessors for new artifact types
  33. 33. ACE Extensibility ResourceProcessor ‣ Recognizes your artifact type ‣ Handles installation on target ‣ Upload ResourceProcessor to ACE
  34. 34. ACE Extensibility Configuration ResourceProcessor ‣ Handles XML (MetaType) configs ‣ Placeholders replaced with target tags ... <Value>${context.mySpecificProperty}</Value> ... On server: ... <Value>mySpecificValue</Value> ... On target:
  35. 35. In summary Modular applications rock! Modular deployment is worth your while Apache ACE simplifies IoT deployments
  36. 36. Thank you! Paul Bakker Sander Mak - @pbakker - @sander_mak Code @ bit.ly/carprov

×