how to deliver rich, real-time apps - appsworld 2014

30
Dr Andy Piper Push Technology { DELIVERING RICH, REAL-TIME APPLICATIONS } Reappt, a Push Technology product offers enterprise grade Diffusion technology as a service.

Upload: andy-piper

Post on 15-Jul-2015

263 views

Category:

Software


1 download

TRANSCRIPT

Page 1: How to deliver rich, real-time apps - AppsWorld 2014

Dr Andy Piper

Push Technology

{DELIVERING RICH, REAL-TIME APPLICATIONS}

Reappt, a Push Technology product offers enterprise grade Diffusion technology as a service.

Page 2: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Delivering Rich, Real-Time Mobile User Experiences

• Dr Andy Piper

• CTO at Push Technology

• Ex-BEA/Oracle

• Architect for WebLogic Server Core

• Architect and then Engineering Director for Oracle Event Processing

• Spring contributor (Spring DM) and Author

• Contributed to many standards – OMG, JCP, OSGi Alliance

• PhD, Cambridge, Distributed Systems

• MBA, Warwick Business School

Page 3: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per {What we do}

Software that enables rich real-time user experiences,

where the Right Content is delivered to the Right User,

at the Right Time, on any device, platform or application,

regardless of connectivity or location.

Page 4: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Introduction

My nightmare – the app that sometimes works

Why is it frustrating?

Page 5: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per The problem with mobile

10Gbps pipe, reliable 99.9999%

2-50Mbps pipeUnreliable speed

0.5-4Mbps pipeUnreliable speed \ latency

Internet

Mobile Network

Dedicated Network

Page 6: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per If only all applications worked like this…

Page 7: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014

{Demo}http://demo2.pushtechnology.com/demos/dra

w/

Page 8: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Why does it work?

We want UIs that engage us

• Immediacy is key

• Interactivity is key

• Response is based on rapid, high fidelity inbound and outbound data flows

We want Reactive applications!

Page 9: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per The Righteous Reactive Triangle™

UIX

Page 10: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per It’s all about the Network

Interactive applications interact with something

Its not all angry birds

The quality of the interaction depends on connectivity and latency

• That data gets through

• The time it takes

• The time to process

• That it returns

• The time to return

Page 11: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per It’s all about the Data

The network is a precious, uncontrolled resource

What you can control is how much you use

How much you use depends on

• How much data you transmit

• How frequently you transmit it

You may be able to cheat!

• Only deal with what you can see

Data often has a time dimension

• The data value decay curve

Its not just about what you can see

• But WHEN you can see it

Valu

e

Time

Page 12: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per It’s all about the User Experience

Go Reactive!

• http://www.reactivemanifesto.org/

• Event-driven, scalable, resilient, responsive

• Latency over mobile networks (and the internet) is inevitable

• Asynchronous models hide latency

• Asynchronous models are better overall

• Although harder to implement

Page 13: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Introducing Velocity Voting – “Vloting™”

Stream of control data from device

Stream of feedback data from server

Server calculates “velocity” of votes and aggregates results

Aggregate results are pushed back to devices

Page 14: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014

{Demo}http://demo2.pushtechnology.com/vloting

Page 15: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Key Features of the Vloting App

Built reactively on an asynchronous, event-driven model

Latency is obscured by asynchronicity

• Consider a plane

Highly interactive both individually and in aggregate

Real-time data flowing in both directions

Asynchronous is key

Page 16: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per How Do we Optimize the Experience?

Page 17: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Optimize the network?

Page 18: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Mobile throughput

Technology Download rate (bit/s) Upload rate (bit/s) Download rate (byte/s) Upload rate (byte/s)

GSM CSD (2G) 14.4 kbit/s[18] 14.4 kbit/s 1.8 kB/s 1.8 kB/s

HSCSD 57.6 kbit/s 14.4 kbit/s 5.4 kB/s 1.8 kB/s

GPRS (2.5G) 57.6 kbit/s 28.8 kbit/s 7.2 kB/s 3.6 kB/s

WiDEN 100 kbit/s 100 kbit/s 12.5 kB/s 12.5 kB/s

CDMA2000 1×RTT 153 kbit/s 153 kbit/s 18 kB/s 18 kB/s

EDGE (2.75G) (type 1 MS) 236.8 kbit/s 236.8 kbit/s 29.6 kB/s 29.6 kB/s

UMTS 3G 384 kbit/s 384 kbit/s 48 kB/s 48 kB/s

EDGE (type 2 MS) 473.6 kbit/s 473.6 kbit/s 59.2 kB/s 59.2 kB/s

EDGE Evolution (type 1 MS) 1,184 kbit/s 474 kbit/s 148 kB/s 59 kB/s

EDGE Evolution (type 2 MS) 1,894 kbit/s 947 kbit/s 237 kB/s 118 kB/s

1×EV-DO rev. 0 2,457 kbit/s 153 kbit/s 307.2 kB/s 19 kB/s

1×EV-DO rev. A 3.1 Mbit/s 1.8 Mbit/s 397 kB/s 230 kB/s

1×EV-DO rev. B 14.7 Mbit/s 5.4 Mbit/s 1,837 kB/s 675 kB/s

HSPA (3.5G) 13.98 Mbit/s 5.760 Mbit/s 1,706 kB/s 720 kB/s

4×EV-DO Enhancements (2×2

MIMO)34.4 Mbit/s 12.4 Mbit/s 4.3 MB/s 1.55 MB/s

HSPA+ (2×2 MIMO) 42 Mbit/s 11.5 Mbit/s 5.25 MB/s 1.437 MB/s

15×EV-DO rev. B 73.5 Mbit/s 27 Mbit/s 9.2 MB/s 3.375 MB/s

UMB (2×2 MIMO) 140 Mbit/s 34 Mbit/s 17.5 MB/s 4.250 MB/s

LTE (2×2 MIMO) 173 Mbit/s 58 Mbit/s 21.625 MB/s 7.25 MB/s

UMB (4×4 MIMO) 280 Mbit/s 68 Mbit/s 35 MB/s 8.5 MB/s

EV-DO rev. C 280 Mbit/s 75 Mbit/s 35 MB/s 9 MB/s

LTE (4×4 MIMO) 326 Mbit/s 86 Mbit/s 40.750 MB/s 10.750 MB/s

Page 19: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Mobile latency

LTE latency in ms vs latencies experienced on other connection types (smaller is

better)

151

629

212 172

98

Page 20: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Optimize the network?

You can’t!

Bandwidth is always limited and costly

Latency is often poor

Page 21: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Optimize the data?

Small is beautiful

Prefer compact binary protocols

• HTTP not great (~300+ bytes/message), XML awful

• STOMP – ~100+ bytes/message

• COAP – ~4+ bytes/message

• MQTT – ~10+ bytes/message

Binary protocols also happen to be faster – scale better

• Serialization is the killer – both for performance and the battery

• Protobuf, SBE, dpt

Chatty protocols also poor - setup costs can be high

Burst data in large chunks - reduces TCP/IP header cost

Page 22: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Making data smaller

Information dense

• Don’t send the same information more than once

• Only send differences – snapshot-delta

Send less

• Just because you have data doesn’t mean you should send it

• Just because you have bandwidth doesn’t mean you should use it

• Throttle based on ability to consume

• Both device and human

• Throttling reduces data costs

• Throttling conserves bandwidth

• Being reactive means only sending data when you need to

• Much more efficient

Page 23: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per What happens when the network lets you down?

It WILL let you down

• Insufficient bandwidth

• Inconsistent bandwidth

• High latency

• Loss of network on a regular basis

You can’t optimize but you can respond

Go Reactive!

• You must respond to the conditions of the network

• “Mobile sympathy™”

Page 24: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Responding to the network

You must get feedback – but how?

Instrumentation is key

• What, when, how much?

Use any and every means to understand the network conditions

TCP is your friend!

• Reliable in the face of congestion and packet loss

• Fast connection loss detection

• Back pressure is informative

Page 25: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Optimize the User Experience?

Page 26: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Rich to richer User Experiences

Real-time allows user experiences that would not otherwise be possible

Truly rich experiences are contextual

Contextual data often originates from the device itself

• Location

• Movement

• etc.

Contextual information often requires access to the native capabilities of the device

• Hard to access from JavaScript

• Apache Cordova is a framework that gives JavaScript access to native capabilities

• Develop html/css/js apps for mobile platforms

• https://cordova.apache.org

Page 27: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Putting it all together

Page 28: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014

{Demo}http://demo2.pushtechnology.com/flights/

Page 29: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014 #RealTimeMobile

@andyp1per Conclusion

Rich, real-time experiences can be provided on mobile platforms through

• Data optimization

• Network optimization

• Reactive interfaces

• Contextualization

Good experiences are dictated as much by what you don’t do as what you do do

Products and frameworks can take the pain out of development

• Cordova

• Diffusion

Page 30: How to deliver rich, real-time apps - AppsWorld 2014

Copyright Push Technology 2014

@andyp1per

{Q&A}