Reactive Programming Models for IoT - GOTO...

48
Reactive Programming Models for IoT Todd L. Montgomery @toddlmontgomery

Transcript of Reactive Programming Models for IoT - GOTO...

Page 1: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Reactive Programming Models for IoT

Todd L. Montgomery @toddlmontgomery

Page 2: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Internet of Things?

Just a Silicon Valley buzzword?

Already Here! Not New!

Page 3: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Reactive Programming?

Just another buzzword?

Also Not New!

Page 4: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Connecting “Things” …Reactively…

Page 5: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

What most of us think happens

Request

Response

Page 6: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Request

Response

What really happens

And if not, we’ll make it!

Page 7: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Request

Response

What also really happens

But… Who does this?

Page 8: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Request

Response

Support (UI/Device)

Security (Challenge)

Keep-Alive or Watchdog

User State Query

Page 9: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Stream

What also really happens

News, Stocks, Texts/SMS, Video, Audio, Social, …

Page 10: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Ingest

What also really happens

Temperature, Heart Rate, Web Logs, Sensor Data, Seismic Readings, Steps, Stairs, Gyro

Data, GPS, Acceleration, Breathing, EKG, EEG, …

Page 11: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Request

Response

What also really happens

Stream & Ingest

Pretty much how everything actually works…

Page 12: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

What also REALLY happens

Page 13: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Message

Message

The Break Down

Request, Response, Stream, and Ingest are really types

Message-Driven

Message-Driven

Page 14: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Reactive Applications

Message Driven

Responsive Resilient

Elastic

http://www.reactivemanifesto.org/

Page 15: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

REST

RPC

Function Call

Message-Driven

LISP

Distributed Systems Evolution

?

Page 16: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

IoT…

Page 17: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over
Page 18: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

HTCPCP RFC 2324, Extended by RFC 7168

http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol

"there is a strong, dark, rich requirement for a protocol designed espressoly [sic] for the brewing of coffee"

Page 19: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Page 20: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over
Page 21: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

courtesy of

Page 22: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Sometimes it is good to reinvent the wheel

Page 23: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

What History Has Taught Us

Page 24: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

THE IoT Language!

Page 25: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

THE IoT Protocol!

Page 26: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

THE IoT Runtime!

Page 27: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

THE IoT ______!

Page 28: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Internet of Things

Multi-Lingual (and Polyglot)

Multi-Protocol & Multi-Standard

Multi-“Platform” Huge Scale Highly Integrated

Page 29: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Connected. Integrated.

Great time to be a protocol geek!

Page 30: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Connected. Services. Tools.Nuklei

Multi-Lingual (and Polyglot)

Location Transparency

Multi-Protocol & Data Format

Basic Low-Level API

Page 31: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Protocols

Nuklei

Deployment Container

LogicReactive

Message Stream

Depends on language, runtime, platform, etc. Asynchronous

Binary “Loose” Ordering

Page 32: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Protocols

NukleiLogic

Reactive Message Stream

Asynchronous Binary Boundary

Basic read/write

API

Various Protocol Options

Choice of protocols becomes deployment concern

Deployment Container

Simple, consistent usage allows functional

composition of protocols

Page 33: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Protocols?

Shared Memory IPC

WebSocket

JMS

WebRTC

Not just in the traditional sense…

HTTP/1.1MQTT

HTTP/2

AMQPCoAP

TCP/UDP/IP

Aeron 0MQ

Page 34: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

pro·to·col noun \ˈprō-tə-ˌko ̇l, -ˌkōl, -ˌkäl, -kəl\ !

... !3 b : a set of conventions governing the treatment and especially the formatting of data in an electronic communications system <network protocols>

...

3 a : a code prescribing strict adherence to correct etiquette and precedence (as in diplomatic exchange and in the military services) <a breach of protocol> !

Page 35: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Protocols are the key to Integration

REST has demonstrated this!

Page 36: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Functional Protocol Composition

e.g. HTTP over TCP looks same as HTTP over IPC or HTTP over WebSocket or

HTTP over JMS

e.g. Streams over Messages is a form of Fragmentation/

Reassembly

Packet/Frame is common building block (Ethernet,

ATM, etc.)

Layering becomes natural & trivial. Also forces

boundaries & decoupling

Not New

Page 37: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

TCP

HTTP

Shared Memory WebSocket JMS…

Everything below the boundary can change even

at runtime

Everything above the boundary can assume a

constant interface

… ……

Boundary might be asynchonrous

Page 38: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Data Format

JSON

FIX / SBE CBOR

YAML

XML JMS Message

Divorced from Data Association

Map<> and other native associations are better than

format specific APIs

HPACK

Page 39: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

AddressingURIs - Just, but not only Strings

https://www.ietf.org Think about how much context this contains!

Define an Endpoint for Connectivity

Simple, Natural, & Familiar

Page 40: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Location Transparency

Bind Address to “Proxy”

“Proxy” Object Migration

Endpoint can be anywhere

More Forced Decoupling

Page 41: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Isolation & Deployment Containment

OS level isolation, don’t duplicate at the application layer

VM

AMI

App Server

Page 42: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Basic Low-Level API

“Common”Message/Packet/Frame -based

BSD Sockets has it right

Read/Write BLOBs

read(buffer, offset, length) write(buffer, offset, length)

Page 43: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

/mikro1

Nuklei

Proxy

/mikro2

Proxy

https://localhost:80

https://example.com

https://localhost:80/mikro2

https://example.com

In Process or Out

Page 44: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Flyweights

Struct Overlays Semi-Stateful Parsers

Know how to access fields efficientlyPrefer to access via dead reckoning (stateless)

Page 45: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Additionally…

Flow Control… Security…

Schedulers…Polyglot?…

Java, then JavaScript, C, iOS, …

Page 46: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

Message

Message

To Sum Up

Page 47: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

https://github.com/kaazing/nuklei

Very Early & Still Evolving

Connected. Services. Tools.

Page 48: Reactive Programming Models for IoT - GOTO …gotocon.com/dl/...ReactiveProgrammingModelsForInternetOfThings.pdf · @toddlmontgomery Functional Protocol Composition e.g. HTTP over

@toddlmontgomery

Questions?

• Kaazing http://www.kaazing.com • GitHub https://github.com/kaazing • Slideshare http://www.slideshare.com/toddleemontgomery • Twitter @toddlmontgomery

Thank You!