SlideShare a Scribd company logo
API Design and WebSocket 
WoT Next? 
@frankgreco
Background 
§ Director of Technology @ Kaazing 
§ Chairman NYJavaSIG (javasig.com) 
§ Largest JUG in North America 
8,000+ members 
§ Financial Services, Architecture, Cloud 
§ frank.greco@kaazing.com, @frankgreco
A Primary Tenet of Computing 
History 
History 
If History Repeats Itself, Is There No Future?
A Trip Down Memory Lane… 
In the beginning…
Enterprise – “inside the firewall” (1980’s – early 90’s) 
tcp 
Client-Server
Web – “over the firewall” (early 90’s – 2011) 
http tcp 
web server 
and/or 
app server 
app protocols 
Not efficient or effective for event-based systems…
But Modern Applications are Dynamic and Event-based 
FX trading 
Monitoring 
Stock trading Utilities trading 
XaaS 
Logistics Notification Compliance 
Betting & bidding 
Voting In-store & online Collaboration
Legacy Web 
u Designed for document transfer – HTTP 
ü Short-lived Request / Response interaction 
u Bidirectional, but half-duplex 
ü Traffic flows in only one direction at a time 
u Stateless 
ü Large amounts of metadata resent for each 
request 
The Web was not originally designed for 
“real-time”, event-based services…
WebSocket – “TCP for the Web” 
u IETF Protocol and W3C JavaScript API for real-time, 
bi-directional, always-on connections 
u RFC 6455 – Dec 2011 
u Easily add event-based data to web apps 
ü ws://mycompany.com/collaboration_svc 
ü wss://anothercompany.com/marketdata 
u Avoids polling 
u Avoids HTTP meta-data overhead 
u Shares port with HTTP (80/443) 
u Traverses Firewalls
The WebSocket Handshake
For Event-based Web Communication… 
Legacy HTTP vs WebSocket 
http:// ws:// 
u Application-level Socket over the Web 
u Supported by all Modern Browsers 
u Event-based Applications
W3C WebSocket JavaScript API
W3C WebSocket JavaScript API 
HTML5 WebSocket API 
But… 
Dealing with WebSocket is like dealing with TCP. 
It’s a streams-based model. You need to understand how to 
handle streams-based data over the wire. 
e.g., How do I do publish/subscribe?
What is Missing? 
Where is the Application-level Protocol? 
Who handles retries? 
How do we handle publish/ 
subscribe semantics? 
How do we handle market data? 
How can we guarantee delivery? 
What do we do with slow 
consumers, last value cache, etc? 
What if the client is not 
currently active? 
What about partial data? 
How do I handle 
entitlements? ACL?
Browser and Native Applications 
JMS XMPP AMQP B2B FTP VNC MQTT etc 
WebSocket 
TCP/IP 
Internet 
WebSocket 
Gateway 
WebSocket 
Gateway 
Protocol Layering is Possible 
WebSocket is a 
Transport layer
Simplicity is a 
Useful 
Abstraction! 
Simplicity enables 
Innovation 
Complexity 
Innovation 
Higher Level APIs Reduce Complexity
Higher Level APIs (over WebSocket) for JavaScript 
So if you can layer application protocols and 
APIs over WebSocket, what do you have? 
u Easier WebSocket programmability 
u Event-driven applications over the web 
u Event-driven APIs over the web 
u Not necessary to open non-standard ports 
u Web infrastructure now truly “disappears” 
u Reduction in complexity 
u Further opportunities to innovate 
u Mobile + cloud + HTML5/WebSocket 
u Internet of Things -> Web of Things 
u “Imagination is Everything”
Publish/Subscribe 
Java Message Service (JMS) 
over 
WebSocket 
For Example…
Java Message Service (JMS) 
u Java EE Message Oriented Middleware 
u JMS 1.0 2001, JMS 1.1 2002, JMS 2.0 2013 
u Asynchronous Messaging vs. RPC 
u Loosely coupled vs. Tightly coupled 
u Pub/Sub, Topics, Queues 
u Transactions, Reliable
Basic JMS 
conn = createConnection(); 
sess = conn.createSession(); 
topic = jndiContext.lookup(topic); 
pub = sess.createProducer(topic); 
pub.send(“hey Frank”); 
conn = createConnection(); 
sess = conn.createSession(); 
topic = jndiContext.lookup(topic); 
sub = sess.createConsumer(topic); 
sub.setMessageListener(this); 
… 
public void onMessage(Message m) { 
String s = m.getText(); 
… do stuff… 
} 
conn = createConnection(); 
sess = conn.createSession(); 
topic = jndiContext.lookup(topic); 
sub = sess.createConsumer(topic); 
sub.setMessageListener(this); 
… 
public void onMessage(Message m) { 
String s = m.getText(); 
… do stuff… 
} 
conn = createConnection(); 
sess = conn.createSession(); 
topic = jndiContext.lookup(topic); 
sub = sess.createConsumer(topic); 
sub.setMessageListener(this); 
… 
public void onMessage(Message m) { 
String s = m.getText(); 
… do stuff… 
} 
msg 
broker
JMS Over the Web (JavaScript) 
Browser app - 100 msg/sec 
over port 80/443
What WebSocket is Not 
u It is not a New AJAX 
AJAX was a lovable hack 
u It is not a Push mechanism 
WebSocket is full-duplex, bi-directional 
u It is not a Messaging system 
It’s an agnostic wire protocol 
It’s a low-level transport API 
u It is not a Replacement for HTTP 
HTTP is still great for static, cacheable info
What’s next for WebSocket?
Internet of Things (IoT) 
+ 
Heterogeneity + Scale + Usability 
Futures
The World is Naturally Event-based (“real-time”) 
Presentation Music 
Communication 
Logistics 
Big 
Data 
Risk 
Management 
Home 
Security 
Health 
Monitoring 
Intelligent 
Appliances 
Local 
Transportation 
Monitoring/ 
Management 
Remote 
control
API Design and WebSocket
Let’s Take 1 Step Back to go 2 Steps Ahead… 
u Internet – Global system of interconnected networks 
that use IP to communicate 
u Internetworking – Connecting one network with another 
through a series of Gateways that provide a common 
method of communication
The Web 
u A popular application service on the Internet 
u Based on TCP/IP 
u Advantages 
§ Application deployment simplified – URI 
§ Interoperable open standards and specifications 
§ Ease of programmability – scripting 
§ Global reach and Economy of scale 
§ Accessed by ubiquitous Browsers and also non-Browsers 
u Two major protocols 
HTTP (1988/1999) and WebSocket (2007/2011)
The Hidden Web – Most of the Web is Not Visible 
browsers 
APIs 
http://thumbs.dreamstime.com/x/iceberg-23503494.jpg
Now… IoT, IIoT and M2M 
u A riff on “Ubiquitous Computing” (“Pervasive”) 
• Mark Weisner PARC 1988 
u Its early so there’s different definitions 
• Similar to early days of Cloud Computing 
u M2M has been around for decades. 
• Primarily proprietary embedded systems and typically 
point-to-point (RPC) 
u IoT/IIoT (Industrial IoT) 
• Adds Internet connectivity 
• Networks of M2M systems connected via IP
IoT/IIoT – Connectivity isn’t Sufficient 
u No formal API standards 
u Many protocol standards – interoperability low 
u No common, wide-reaching frameworks 
u No composition possibilities 
u Difficult to leverage economies of scale 
u Barrier to entry is high for millions of app developers 
u Also… we’re in a cloud, mobile, web api world
u IoT – Internet of Things 
• Embedded computing endowed with Internet connectivity 
u WoT – Web of Things 
• Application and Services layer over IoT 
Developers! 
u Apply the benefits of the Web to IoT 
u WoT is a uniform interface to access IoT functionality 
u Provides the abstraction for control/monitoring (sensors/ 
actuators) 
u Accelerates innovation 
u Deployment, development, interoperability, economy of 
scale… 
IoT 
WoT 
Here’s Where the Web Comes In
But Is HTTP the Right Choice? 
u Disadvantages of HTTP Request/Response 
u Lack of resiliency and robustness 
u Enterprise events retrieved by resource intensive polling 
techniques 
• Much bandwidth is wasted 
• Information can be delayed 
u Composite services brittle and lack transactionality 
u Enterprises learned advantages of ESB 10+ years ago 
u See failures of CORBA, Sun RPC, etc. 
u Clumsy AJAX/Comet workarounds to simulate real-time
History Repeats Itself… 
RPC 
Asynchronous 
RPC 
Messaging 
REST 
Asynchronous 
REST 
Messaging 
ESB ISB? 
Enterprise Web/WoT 
• Can wait for response 
• Tight coupling 
• Centralized business 
processes 
• Vertical interaction 
• Easy to understand (xact) 
• Future response 
• Loose coupling 
• Independent business 
processes 
• More complexity (xact) 
Did I mention History repeats itself?...
The Message is the Medium 
“…terse, self-classified 
messages, networking overhead 
isolated to a specialized tier of 
devices, and publish/subscribe 
relationships are the only way 
to fully distill the power of the 
coming Internet of Things” – 
Francis daCosta
Typically an App 
Server and DB 
App Server is 
probably not the 
right 
architecture 
Data Flow – Human Web vs WoT 
Human 
Web 
WoT 
Large data to client 
Small data to server 
Do human-readable protocols make sense for non-humans?
GW 
GW 
GW 
IoT/IIoT 
WoT 
WoT 
WoT 
Event Gateway Architecture
Event Gateway Architecture – Future Directions 
GW 
GW 
GW 
GW 
GW 
GW 
Aggregator nodes 
GW 
• Scalability 
• Querying 
• Performance 
• Manageability 
• Composition 
• Circles of Trust 
• Event processing 
• CDN++
Demos 
Click to Edit Master Title Style
Thank You! 
@frankgreco

More Related Content

What's hot (20)

Soap web service
Soap web service
NITT, KAMK
 
MongoDB Lab Manual (1).pdf used in data science
MongoDB Lab Manual (1).pdf used in data science
bitragowthamkumar1
 
JDBC: java DataBase connectivity
JDBC: java DataBase connectivity
Tanmoy Barman
 
Route Redistribution
Route Redistribution
Netwax Lab
 
Web ontology language (owl)
Web ontology language (owl)
Ameer Sameer
 
Unit 1( modelling concepts & class modeling)
Unit 1( modelling concepts & class modeling)
Manoj Reddy
 
Corba
Corba
Sanoj Kumar
 
Wireshark
Wireshark
Alanoud Alqoufi
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW Architecture
Chris Changmo Yoo
 
Remote Procedure Call in Distributed System
Remote Procedure Call in Distributed System
PoojaBele1
 
javascript objects
javascript objects
Vijay Kalyan
 
OOAD - UML - Class and Object Diagrams - Lab
OOAD - UML - Class and Object Diagrams - Lab
Victer Paul
 
Servlet and servlet life cycle
Servlet and servlet life cycle
Dhruvin Nakrani
 
RPC: Remote procedure call
RPC: Remote procedure call
Sunita Sahu
 
Get and post methods
Get and post methods
baabtra.com - No. 1 supplier of quality freshers
 
JSON and REST
JSON and REST
Robert MacLean
 
AAA server
AAA server
hetvi naik
 
Swift vs Objective-C
Swift vs Objective-C
Mindfire Solutions
 
Corba
Corba
Vishal Singh
 
Web technology practical list
Web technology practical list
desaipratu10
 
Soap web service
Soap web service
NITT, KAMK
 
MongoDB Lab Manual (1).pdf used in data science
MongoDB Lab Manual (1).pdf used in data science
bitragowthamkumar1
 
JDBC: java DataBase connectivity
JDBC: java DataBase connectivity
Tanmoy Barman
 
Route Redistribution
Route Redistribution
Netwax Lab
 
Web ontology language (owl)
Web ontology language (owl)
Ameer Sameer
 
Unit 1( modelling concepts & class modeling)
Unit 1( modelling concepts & class modeling)
Manoj Reddy
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW Architecture
Chris Changmo Yoo
 
Remote Procedure Call in Distributed System
Remote Procedure Call in Distributed System
PoojaBele1
 
javascript objects
javascript objects
Vijay Kalyan
 
OOAD - UML - Class and Object Diagrams - Lab
OOAD - UML - Class and Object Diagrams - Lab
Victer Paul
 
Servlet and servlet life cycle
Servlet and servlet life cycle
Dhruvin Nakrani
 
RPC: Remote procedure call
RPC: Remote procedure call
Sunita Sahu
 
Web technology practical list
Web technology practical list
desaipratu10
 

Viewers also liked (7)

Node.js Event Emitter
Node.js Event Emitter
Eyal Vardi
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
webMethods World: How Can You Innovate Even Faster With the Latest webMethods...
webMethods World: How Can You Innovate Even Faster With the Latest webMethods...
Software AG
 
MQTT簡介與使用開放原始碼
MQTT簡介與使用開放原始碼
Wei-Tsung Su
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
Rick Hightower
 
Node.js Spplication Scaling
Node.js Spplication Scaling
Eyal Vardi
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
sametmax
 
Node.js Event Emitter
Node.js Event Emitter
Eyal Vardi
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
webMethods World: How Can You Innovate Even Faster With the Latest webMethods...
webMethods World: How Can You Innovate Even Faster With the Latest webMethods...
Software AG
 
MQTT簡介與使用開放原始碼
MQTT簡介與使用開放原始碼
Wei-Tsung Su
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
Rick Hightower
 
Node.js Spplication Scaling
Node.js Spplication Scaling
Eyal Vardi
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
sametmax
 
Ad

Similar to API Design and WebSocket (20)

The Web of Things
The Web of Things
Frank Greco
 
Past, Present and Future of WebSocket - HTML5DevConf May 2014
Past, Present and Future of WebSocket - HTML5DevConf May 2014
Frank Greco
 
WebSocket Perspectives and Vision for the Future - HTML5DevConf Oct 2013 SF
WebSocket Perspectives and Vision for the Future - HTML5DevConf Oct 2013 SF
Frank Greco
 
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
Frank Greco
 
The Web of Things - IoTExpo SF - May 2014
The Web of Things - IoTExpo SF - May 2014
Frank Greco
 
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
Frank Greco
 
IoT - Understanding internet of things
IoT - Understanding internet of things
veerababu penugonda(Mr-IoT)
 
Embedded systems: Future perspectives
Embedded systems: Future perspectives
Giuseppe La Torre
 
DevCon 5 (July 2013) - WebSockets
DevCon 5 (July 2013) - WebSockets
Crocodile WebRTC SDK and Cloud Signalling Network
 
What's new in web standards?
What's new in web standards?
Daniel Appelquist
 
WebSockets-Revolutionizing-Real-Time-Communication.pptx
WebSockets-Revolutionizing-Real-Time-Communication.pptx
YasserLina
 
Web Services for the Internet of Things
Web Services for the Internet of Things
Markku Laine
 
From the Internet of Things to Intelligent Systems A Developer's Primer - Gar...
From the Internet of Things to Intelligent Systems A Developer's Primer - Gar...
Rick G. Garibay
 
Introduction to IoT.pptx for btech students
Introduction to IoT.pptx for btech students
saritanayak23
 
IOT Communication And Open Platforms 4TH UNIT.pptx
IOT Communication And Open Platforms 4TH UNIT.pptx
asddinesh23
 
IP based standards for IoT
IP based standards for IoT
Michael Koster
 
The Web, After HTML5
The Web, After HTML5
Jonathan Jeon
 
APIs at the Edge
APIs at the Edge
Red Hat
 
Internet of things(iot)
Internet of things(iot)
Rakesh Gupta
 
Building real time applications with Symfony2
Building real time applications with Symfony2
Antonio Peric-Mazar
 
The Web of Things
The Web of Things
Frank Greco
 
Past, Present and Future of WebSocket - HTML5DevConf May 2014
Past, Present and Future of WebSocket - HTML5DevConf May 2014
Frank Greco
 
WebSocket Perspectives and Vision for the Future - HTML5DevConf Oct 2013 SF
WebSocket Perspectives and Vision for the Future - HTML5DevConf Oct 2013 SF
Frank Greco
 
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
WebSocket Perspectives 2015 - Clouds, Streams, Microservices and WoT
Frank Greco
 
The Web of Things - IoTExpo SF - May 2014
The Web of Things - IoTExpo SF - May 2014
Frank Greco
 
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
Frank Greco
 
Embedded systems: Future perspectives
Embedded systems: Future perspectives
Giuseppe La Torre
 
What's new in web standards?
What's new in web standards?
Daniel Appelquist
 
WebSockets-Revolutionizing-Real-Time-Communication.pptx
WebSockets-Revolutionizing-Real-Time-Communication.pptx
YasserLina
 
Web Services for the Internet of Things
Web Services for the Internet of Things
Markku Laine
 
From the Internet of Things to Intelligent Systems A Developer's Primer - Gar...
From the Internet of Things to Intelligent Systems A Developer's Primer - Gar...
Rick G. Garibay
 
Introduction to IoT.pptx for btech students
Introduction to IoT.pptx for btech students
saritanayak23
 
IOT Communication And Open Platforms 4TH UNIT.pptx
IOT Communication And Open Platforms 4TH UNIT.pptx
asddinesh23
 
IP based standards for IoT
IP based standards for IoT
Michael Koster
 
The Web, After HTML5
The Web, After HTML5
Jonathan Jeon
 
APIs at the Edge
APIs at the Edge
Red Hat
 
Internet of things(iot)
Internet of things(iot)
Rakesh Gupta
 
Building real time applications with Symfony2
Building real time applications with Symfony2
Antonio Peric-Mazar
 
Ad

Recently uploaded (20)

FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Oracle Cloud and AI Specialization Program
Oracle Cloud and AI Specialization Program
VICTOR MAESTRE RAMIREZ
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Oracle Cloud and AI Specialization Program
Oracle Cloud and AI Specialization Program
VICTOR MAESTRE RAMIREZ
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Seminar: Targeting Trust: The Future of Identity in the Workforce.pptx
FIDO Alliance
 

API Design and WebSocket

  • 1. API Design and WebSocket WoT Next? @frankgreco
  • 2. Background § Director of Technology @ Kaazing § Chairman NYJavaSIG (javasig.com) § Largest JUG in North America 8,000+ members § Financial Services, Architecture, Cloud § [email protected], @frankgreco
  • 3. A Primary Tenet of Computing History History If History Repeats Itself, Is There No Future?
  • 4. A Trip Down Memory Lane… In the beginning…
  • 5. Enterprise – “inside the firewall” (1980’s – early 90’s) tcp Client-Server
  • 6. Web – “over the firewall” (early 90’s – 2011) http tcp web server and/or app server app protocols Not efficient or effective for event-based systems…
  • 7. But Modern Applications are Dynamic and Event-based FX trading Monitoring Stock trading Utilities trading XaaS Logistics Notification Compliance Betting & bidding Voting In-store & online Collaboration
  • 8. Legacy Web u Designed for document transfer – HTTP ü Short-lived Request / Response interaction u Bidirectional, but half-duplex ü Traffic flows in only one direction at a time u Stateless ü Large amounts of metadata resent for each request The Web was not originally designed for “real-time”, event-based services…
  • 9. WebSocket – “TCP for the Web” u IETF Protocol and W3C JavaScript API for real-time, bi-directional, always-on connections u RFC 6455 – Dec 2011 u Easily add event-based data to web apps ü ws://mycompany.com/collaboration_svc ü wss://anothercompany.com/marketdata u Avoids polling u Avoids HTTP meta-data overhead u Shares port with HTTP (80/443) u Traverses Firewalls
  • 11. For Event-based Web Communication… Legacy HTTP vs WebSocket http:// ws:// u Application-level Socket over the Web u Supported by all Modern Browsers u Event-based Applications
  • 13. W3C WebSocket JavaScript API HTML5 WebSocket API But… Dealing with WebSocket is like dealing with TCP. It’s a streams-based model. You need to understand how to handle streams-based data over the wire. e.g., How do I do publish/subscribe?
  • 14. What is Missing? Where is the Application-level Protocol? Who handles retries? How do we handle publish/ subscribe semantics? How do we handle market data? How can we guarantee delivery? What do we do with slow consumers, last value cache, etc? What if the client is not currently active? What about partial data? How do I handle entitlements? ACL?
  • 15. Browser and Native Applications JMS XMPP AMQP B2B FTP VNC MQTT etc WebSocket TCP/IP Internet WebSocket Gateway WebSocket Gateway Protocol Layering is Possible WebSocket is a Transport layer
  • 16. Simplicity is a Useful Abstraction! Simplicity enables Innovation Complexity Innovation Higher Level APIs Reduce Complexity
  • 17. Higher Level APIs (over WebSocket) for JavaScript So if you can layer application protocols and APIs over WebSocket, what do you have? u Easier WebSocket programmability u Event-driven applications over the web u Event-driven APIs over the web u Not necessary to open non-standard ports u Web infrastructure now truly “disappears” u Reduction in complexity u Further opportunities to innovate u Mobile + cloud + HTML5/WebSocket u Internet of Things -> Web of Things u “Imagination is Everything”
  • 18. Publish/Subscribe Java Message Service (JMS) over WebSocket For Example…
  • 19. Java Message Service (JMS) u Java EE Message Oriented Middleware u JMS 1.0 2001, JMS 1.1 2002, JMS 2.0 2013 u Asynchronous Messaging vs. RPC u Loosely coupled vs. Tightly coupled u Pub/Sub, Topics, Queues u Transactions, Reliable
  • 20. Basic JMS conn = createConnection(); sess = conn.createSession(); topic = jndiContext.lookup(topic); pub = sess.createProducer(topic); pub.send(“hey Frank”); conn = createConnection(); sess = conn.createSession(); topic = jndiContext.lookup(topic); sub = sess.createConsumer(topic); sub.setMessageListener(this); … public void onMessage(Message m) { String s = m.getText(); … do stuff… } conn = createConnection(); sess = conn.createSession(); topic = jndiContext.lookup(topic); sub = sess.createConsumer(topic); sub.setMessageListener(this); … public void onMessage(Message m) { String s = m.getText(); … do stuff… } conn = createConnection(); sess = conn.createSession(); topic = jndiContext.lookup(topic); sub = sess.createConsumer(topic); sub.setMessageListener(this); … public void onMessage(Message m) { String s = m.getText(); … do stuff… } msg broker
  • 21. JMS Over the Web (JavaScript) Browser app - 100 msg/sec over port 80/443
  • 22. What WebSocket is Not u It is not a New AJAX AJAX was a lovable hack u It is not a Push mechanism WebSocket is full-duplex, bi-directional u It is not a Messaging system It’s an agnostic wire protocol It’s a low-level transport API u It is not a Replacement for HTTP HTTP is still great for static, cacheable info
  • 23. What’s next for WebSocket?
  • 24. Internet of Things (IoT) + Heterogeneity + Scale + Usability Futures
  • 25. The World is Naturally Event-based (“real-time”) Presentation Music Communication Logistics Big Data Risk Management Home Security Health Monitoring Intelligent Appliances Local Transportation Monitoring/ Management Remote control
  • 27. Let’s Take 1 Step Back to go 2 Steps Ahead… u Internet – Global system of interconnected networks that use IP to communicate u Internetworking – Connecting one network with another through a series of Gateways that provide a common method of communication
  • 28. The Web u A popular application service on the Internet u Based on TCP/IP u Advantages § Application deployment simplified – URI § Interoperable open standards and specifications § Ease of programmability – scripting § Global reach and Economy of scale § Accessed by ubiquitous Browsers and also non-Browsers u Two major protocols HTTP (1988/1999) and WebSocket (2007/2011)
  • 29. The Hidden Web – Most of the Web is Not Visible browsers APIs http://thumbs.dreamstime.com/x/iceberg-23503494.jpg
  • 30. Now… IoT, IIoT and M2M u A riff on “Ubiquitous Computing” (“Pervasive”) • Mark Weisner PARC 1988 u Its early so there’s different definitions • Similar to early days of Cloud Computing u M2M has been around for decades. • Primarily proprietary embedded systems and typically point-to-point (RPC) u IoT/IIoT (Industrial IoT) • Adds Internet connectivity • Networks of M2M systems connected via IP
  • 31. IoT/IIoT – Connectivity isn’t Sufficient u No formal API standards u Many protocol standards – interoperability low u No common, wide-reaching frameworks u No composition possibilities u Difficult to leverage economies of scale u Barrier to entry is high for millions of app developers u Also… we’re in a cloud, mobile, web api world
  • 32. u IoT – Internet of Things • Embedded computing endowed with Internet connectivity u WoT – Web of Things • Application and Services layer over IoT Developers! u Apply the benefits of the Web to IoT u WoT is a uniform interface to access IoT functionality u Provides the abstraction for control/monitoring (sensors/ actuators) u Accelerates innovation u Deployment, development, interoperability, economy of scale… IoT WoT Here’s Where the Web Comes In
  • 33. But Is HTTP the Right Choice? u Disadvantages of HTTP Request/Response u Lack of resiliency and robustness u Enterprise events retrieved by resource intensive polling techniques • Much bandwidth is wasted • Information can be delayed u Composite services brittle and lack transactionality u Enterprises learned advantages of ESB 10+ years ago u See failures of CORBA, Sun RPC, etc. u Clumsy AJAX/Comet workarounds to simulate real-time
  • 34. History Repeats Itself… RPC Asynchronous RPC Messaging REST Asynchronous REST Messaging ESB ISB? Enterprise Web/WoT • Can wait for response • Tight coupling • Centralized business processes • Vertical interaction • Easy to understand (xact) • Future response • Loose coupling • Independent business processes • More complexity (xact) Did I mention History repeats itself?...
  • 35. The Message is the Medium “…terse, self-classified messages, networking overhead isolated to a specialized tier of devices, and publish/subscribe relationships are the only way to fully distill the power of the coming Internet of Things” – Francis daCosta
  • 36. Typically an App Server and DB App Server is probably not the right architecture Data Flow – Human Web vs WoT Human Web WoT Large data to client Small data to server Do human-readable protocols make sense for non-humans?
  • 37. GW GW GW IoT/IIoT WoT WoT WoT Event Gateway Architecture
  • 38. Event Gateway Architecture – Future Directions GW GW GW GW GW GW Aggregator nodes GW • Scalability • Querying • Performance • Manageability • Composition • Circles of Trust • Event processing • CDN++
  • 39. Demos Click to Edit Master Title Style