provisioning the iot - jfokus · 1. put iot provisioning into context 2. demo: modular provisioning...

38
Paul Bakker Sander Mak Luminis Technologies - @pbakker - @sander_mak Provisioning the IoT

Upload: others

Post on 17-Oct-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Paul Bakker Sander Mak

Luminis Technologies

- @pbakker - @sander_mak

Provisioning the IoT

Page 2: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

1. Put IoT provisioning into context

2. Demo: modular provisioning

3. Apache ACE

Today's goals

Page 3: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Provisioning spectrum

Page 4: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Provisioning spectrum

servers

Cloud/SaaS:

‣ full control ‣ reliable network ‣ VM/Containers

Page 5: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Provisioning spectrum

servers

Cloud/SaaS:

‣ full control ‣ reliable network ‣ VM/Containers

mobile

App stores:

‣ walled garden ‣ semi-reliable

network ‣ full binaries

Page 6: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Provisioning spectrum

IoT

?

Page 7: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Provisioning?

'Just download latest binaries over FTP at system startup'

Page 8: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

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

Page 9: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

IoT != IoT

We are not talking about millions of devices:

Page 10: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

IoT != IoT

We are not talking about millions of devices:

This talk is not about device management

Page 11: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

IoT Provisioning standards

Mostly about device management

Device

OS

Firmware

ApplicationVendors

OperatorsOMA-DM (cellular) LWM2M (ip-based)

?

Page 12: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals
Page 13: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Demo time!

Page 14: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Provisioning demo

Target: Car 1

ACE Car Entertainment

Target: Car 2

NUC 1

NUC 2

LaptopACE

Provisioning Server

Budget Edition

Deluxe Edition

All modules & configuration

Us

Page 15: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systems

Feature Y

Monolithic deployment: installation

Feature X

Deployment package

Target

Page 16: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systems

Feature Y

Monolithic deployment: update

Feature X

Deployment package

Target

Limited connectivity Bandwidth inefficient

Feature W

Page 17: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systems

Feature Y

Modular deployment: installation

Feature X

Deployment package

Target

Page 18: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systems

Feature Y

Modular deployment: update

Feature X

Deployment package

Target

Feature W

Page 19: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systems

Feature Y

Differentiate with ease

Feature X

Target 2

Feature W

Target 1

Feature Y

Feature X

Page 20: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systemsHow?

De facto standard for Java modularity

Small footprint

Dynamic service model

Page 21: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

phonev1.0.0

OSGi runtime (it's just Java!)

JVM

music v1.0.0

dashboard v1.0.0

Page 22: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

phonev2.0.0

OSGi runtime (it's just Java!)

JVM

music v1.0.0

dashboard v1.0.0

Hot-swap bundles

Page 23: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Dependencies explicit in bundle metadata

phonev2.0.0

OSGi runtime (it's just Java!)

JVM

music v1.0.0

dashboard v1.0.0

Page 24: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Service registryApp? PhoneApp

phonev2.0.0

OSGi runtime (it's just Java!)

JVM

music v1.0.0

dashboard v1.0.0

Page 25: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Modular systemsDemo code

Code @ bit.ly/carprov

Page 26: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals
Page 27: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Ace client

Ace Server

Artifact Repository

Device 1

Device 2

Device n

Build server

Architecture

Page 28: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Model

Bundle A

Bundle B

Bundle C

Feature A

Feature B

Distribution A

Page 29: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

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

Page 30: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

‣ 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

Page 31: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

ScriptingREST

Java API

scriptable OSGi shell, calls (low-level) Java API

Gogo script

GET /work/{id}/feature

workspaceMgr.cw().lf()

Page 32: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Deployment packagesStructure

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

Page 33: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Deployment packagesInstallation on target

‣ Transactional: retries and rollback

‣ Installation status in audit log

‣ Unreliable networks: ‣ Download instead of stream ‣ Resumable downloads ‣ Custom update strategies

Page 34: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

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

Page 35: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

ACE ExtensibilityResourceProcessor

‣ Recognizes your artifact type

‣ Handles installation on target

‣ Upload ResourceProcessor to ACE

Page 36: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

ACE ExtensibilityConfiguration ResourceProcessor

‣ Handles XML (MetaType) configs

‣ Placeholders replaced with target tags

... <Value>${context.mySpecificProperty}</Value> ...

On server:

... <Value>mySpecificValue</Value> ...

On target:

Page 37: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

In summary

Modular applications rock!

Modular deployment is worth your while

Apache ACE simplifies IoT deployments

Page 38: Provisioning the IoT - Jfokus · 1. Put IoT provisioning into context 2. Demo: modular provisioning 3. Apache ACE Today's goals

Thank you!

Paul Bakker Sander Mak

- @pbakker - @sander_mak

Code @ bit.ly/carprov