State of the real-time web with Django

Size: px
Start display at page:

Download "State of the real-time web with Django"

Transcription

1 State of the real-time web with Django Aymeric Augustin DjangoCon US - September 5th,

2 What are we talking about? 2

3 Real-time 1. Systems responding within deadlines 2. Simulations running at wall clock time 3. Processing events without perceivable delay 3

4 Real-time web The real-time web is a set of technologies and practices that enable users to receive information as soon as it is published by its authors, rather than requiring that they or their software check a source periodically for updates. 4

5 Use cases Chat Games VoIP Notifications Collaboration Live data Social feeds All these use cases require servers to push events to clients. 5

6 Problem Client Server GET / HTTP/1.1 HTTP/ OK??? information published! The request-response model doesn t allow servers to push events to clients. 6

7 From hacks to protocols 7

8 Early solutions Java applets (1996) Not quite the web Pushlets (2000) Call back from Java applications into DHTML Comet (2006) Long-lived HTTP connections to reduce latency A revolution in browser-based user interfaces 8

9 HTTP long polling Server keeps the request on hold and only sends a response when there is an event to deliver Client resends a request after each response Client request response request response request Server event event 9

10 HTTP streaming Server sends a series of events in a single HTTP response Client Server request response... Chunked EOF-terminated Client processes each incoming event response... response... event event 10

11 Chunked response HTTP/ OK Content-Type: text/plain Transfer-Encoding: chunked 25 This is the data in the first chunk Client Server request response... event response... 1C and this is the second one 0 response... event 11

12 RFC 6202 The authors acknowledge that both the HTTP long polling and HTTP streaming mechanisms stretch the original semantic of HTTP and that the HTTP protocol was not designed for bidirectional communication. 12

13 Server-sent events HTTP stream of events Format: text/ event-stream JavaScript API: EventSource interface and events : The data field is mandatory. data: This is the first message. : event and id are optional. event: message data: This is another message data: over several lines. event: flash data: This is a flash event! id:

14 Server-sent events 14

15 WebSocket Provides bidirectional communication in the context of the existing HTTP infrastructure RFC 6455 (supersedes hybi-xx and hixie-xx) Opening handshake to upgrade from HTTP Framing protocol and closing handshake Provisions for extensions and subprotocols JavaScript API: WebSocket interface and events

16 WebSocket > GET /endpoint HTTP/1.1 > Host: ws.example.com > Connection: Upgrade > Upgrade: websocket > Sec-WebSocket-Key: dghlihnhbxbszsbub25jzq== > Sec-WebSocket-Version: 13 < HTTP/ Switching Protocols < Connection: Upgrade < Upgrade: websocket < Sec-WebSocket-Accept: s3pplmbitxaq9kygzzhzrbk+xoo= 16

17 WebSocket > ec a0 1e 0c 81 f9 75 # TEXT [ M A S K ] m Y k < 81 0a c 6c 6f 20 6d 59 6b 21 # TEXT H e l l o m Y k! < e8 # CLOSE 1005 > a 29 aa # CLOSE [ M A S K ]

18 WebSocket (2009) 18

19 Transport frameworks Socket.IO SockJS LightStreamer (proprietary) 19

20 Let s try it! 20

21 An example of long polling Events Any source Web page JS Redis PUBLISH GET Long polling Pub/Sub Redis Redis SUBSCRIBE Application Django 21

22 Helpers # demo/models.py (1/2) import redis CHANNEL = 'demo' def send_message(message): client = redis.strictredis() message = message.encode('utf-8') return client.publish(channel, message) 22

23 Helpers # demo/models.py (2/2) def recv_message(): client = redis.strictredis() pubsub = client.pubsub() pubsub.subscribe(channel) for event in pubsub.listen(): if event['type'] == 'message': message = event['data'].decode('utf-8') break pubsub.unsubscribe() return message 23

24 Publisher # demo/send_msg.py #!/usr/bin/env python import sys from demo.models import send_message message = " ".join(sys.argv[1:]) num = send_message(message) if num == 1: log = "Sent to one subscriber" else: log = "Sent to {} subscribers".format(num) print("{}: {}".format(log, message)) 24

25 Subscriber # demo/views.py from django.http import HttpResponse from demo.models import recv_message def long_polling_endpoint(request): message = recv_message() return HttpResponse(message.encode('utf-8'), content_type='text/plain; charset=utf-8') 25

26 HTML # demo/templates/demo/long_polling.html <!DOCTYPE html>{% load static %} <html> <head> <title>long polling demo</title> </head> <body> <ul><!-- messages will be inserted here --></ul> <script src="//ajax.googleapis.com/ajax/libs/ jquery/2.0.3/jquery.min.js"></script> <script src="{% static 'demo/long_polling.js' %}"></script> </body> </html> 26

27 JavaScript # demo/static/demo/long_polling.js $(function () { function show_next_message() { $('<li><i>loading </i></li>').appendto($('ul')).load('endpoint/', show_next_message); } show_next_message(); }); 27

28 28 Demo

29 29 Demo

30 Deployment % gunicorn --timeout 10 --workers 2 dcus13rt.wsgi [68271] [INFO] Starting gunicorn 17.5 [68271] [INFO] Listening at: [68271] [INFO] Using worker: sync [68274] [INFO] Booting worker with pid: [68275] [INFO] Booting worker with pid: % ab -c 20 -n 20 \ Benchmarking (be patient)... % PYTHONPATH=. demo/send_msg.py spam Sent to 2 subscribers: spam 30

31 Deployment % ab -c 20 -n 20 \ Server Software: gunicorn/17.5 Server Hostname: Server Port: 8000 Document Path: Document Length: /long_polling/endpoint/ 4 bytes Concurrency Level: 20 Time taken for tests: seconds Complete requests: 20 Failed requests: 18 (Connect: 0, Receive: 0, Length: 18, Exceptions: 0) 31

32 Let s try again? 32

33 An example of WebSocket Events Any source Web page JS Redis PUBLISH WebSocket Pub/Sub Redis Redis SUBSCRIBE Real time Tulip 33

34 Subscriber # demo/handlers.py import tulip from demo.models import def simple_endpoint(websocket, uri): # Doesn't work! recv_message isn't a coroutine. message = yield from recv_message() websocket.send(message) 34

35 Subscriber # demo/handlers.py (1/2) import tulip import websockets from demo.models import recv_message subscribers = def endpoint(websocket, uri): global subscribers subscribers.add(websocket) yield from websocket.recv() subscribers.remove(websocket) 35

36 Subscriber # demo/handlers.py (2/2) def relay_messages(): while True: message = recv_message() for websocket in subscribers: if websocket.open: websocket.send(message) if name == ' main ': websockets.serve(endpoint, 'localhost', 7999) loop = tulip.get_event_loop() loop.run_in_executor(none, relay_messages) loop.run_forever() 36

37 HTML # demo/templates/demo/websocket.html <!DOCTYPE html>{% load static %} <html> <head> <title>websocket demo</title> </head> <body> <ul><!-- messages will be inserted here --></ul> <script src="//ajax.googleapis.com/ajax/libs/ jquery/2.0.3/jquery.min.js"></script> <script src="{% static 'demo/websocket.js' %}"></ script> </body> </html> 37

38 JavaScript # demo/static/demo/websocket.js $(function () { var ws = new WebSocket("ws://localhost:7999/"); ws.onmessage = function (event) { $('<li>' + event.data + '</li>').appendto($('ul')); } }); 38

39 By the way

40 Deployment with gevent % gunicorn --timeout 10 --workers 2 \ --worker-class gevent dcus13rt.wsgi [68261] [INFO] Starting gunicorn 17.5 [68261] [INFO] Listening at: [68261] [INFO] Using worker: gevent [68264] [INFO] Booting worker with pid: [68265] [INFO] Booting worker with pid: % ab -c 20 -n 20 \ Benchmarking (be patient)... % PYTHONPATH=. demo/send_msg.py spam Sent to 20 subscribers: spam 40

41 Deployment with gevent % ab -c 20 -n 20 \ Server Software: gunicorn/17.5 Server Hostname: Server Port: 8000 Document Path: Document Length: /long_polling/endpoint/ 4 bytes Concurrency Level: 20 Time taken for tests: seconds Complete requests: 20 Failed requests: 0 41

42 42 Asynchronous I/O

43 Execution model Based on an event loop Handle many socket connections in a single thread epoll (Linux), kqueue (BSD), IOCP (Windows) More efficient than one thread per connection Suitable for network programming 43

44 Programming model Based on explicit cooperative multi-threading Callbacks Coroutines In Python: yield (from) Suitable for concurrent applications 44

45 The sad truth Converting [a synchronous operation] to asynchronous requires modifying every point that calls it to yield control appropriately. 45

46 What about gevent? It modifies every function that performs I/O by monkey-patching the standard library so you don t have to change your own code. You get the benefits of the execution model for free! But you lose the benefits of the programming model. 46

47 Major Python frameworks gevent is a coroutine-based networking library Twisted is an event-driven networking engine Tornado is a web framework and asynchronous networking library 47

48 PEP 3156 Pluggable event loop API for interoperability Callbacks, transports, protocols, futures High-level scheduler based on coroutines Suspend execution with yield from... Reference implementation code-named Tulip Effort led by Guido van Rossum himself 48

49 49 It s too complicated!

50 django-c10k-demo Define WebSocket Wire them in URLconfs Use runserver in dev and gunicorn in prod Tulip under the hood Real-time made easy! 50

51 django-c10k-demo from c10ktools.http import def worker(ws): #... initial synchronization (not shown)... while True: msg = yield from ws.recv() if msg is None: break step, row, col, state = msg.split() for subscriber in subscribers[row][col]: if subscriber.open: subscriber.send(msg) for row, col in subscriptions: subscribers[row][col].remove(ws) 51

52 That was a lie. Markus Raetz, Silhouette (1993).

53 Django isn t asynchronous # Synchronous cache access def sync(request, key): value = cache.get(key) return HttpResponse(value) # Asynchronous cache def async(ws): value = yield from cache.get(key) ws.send(value) 53

54 Django isn t asynchronous # Synchronous ORM access def sync(request, user_id): user = User.objects.get(id=int(user_id)) bio_html = user.bio.html return HttpResponse(bio_html) # Asynchronous ORM def async(ws): user_id = yield from ws.recv() user = yield from User.objects.get(id=int(user_id)) bio_html = #??? no yield from attribute access! ws.send(bio_html) 54

55 Several lies, actually. Piotr Kowalski, Identité 4 (1993).

56 HTTP!= real-time Execution threads vs. events Programming preemptive vs. cooperative Protocol request / response vs. message streams Scalability stateless vs. stateful Workload CPU vs. I/O bound 56

57 Key learnings PEP 3156 will improve support and resources for asynchronous I/O in Python 3.4. Django isn t designed for explicit cooperative multi-threading and that s unlikely to change. Robust client and server stacks are emerging as well as deployment best-practices. Simplified development setups are possible at the cost of losing parity with production. 57

58 95% use case? Charles Ross, Brûlures solaires, 1993 (detail).

59 We re still learning. Charles Ross, Brûlures solaires, 1993.

60 Thank you! Questions? Photos were taken by the author at the Château d Oiron, France, on June 22 nd. 60 The Curios & Mirabilia exhibition is a modern tribute to the cabinet of curiosities gathered by Claude Gouffier circa 1550.

IERG 4080 Building Scalable Internet-based Services

IERG 4080 Building Scalable Internet-based Services Department of Information Engineering, CUHK MScIE 2 nd Semester, 2015/16 IERG 4080 Building Scalable Internet-based Services Lecture 9 Web Sockets for Real-time Communications Lecturer: Albert C. M. Au

More information

Enabling Full-Duplex Communications in APEX

Enabling Full-Duplex Communications in APEX Enabling Full-Duplex Communications in APEX Me Curt Workman - workmancw@ldschurch.org Education University of Utah Work Micron Electronics Evans&Sutherland The Church of Jesus Christ of Latter-Day Saints

More information

COMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES. Comet HTML5 WebSockets. Peter R. Egli INDIGOO.COM. indigoo.com. 1/18 Rev. 2.

COMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES. Comet HTML5 WebSockets. Peter R. Egli INDIGOO.COM. indigoo.com. 1/18 Rev. 2. COMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES Peter R. Egli INDIGOO.COM 1/18 Contents 1. Server push technologies 2. HTML5 server events 3. WebSockets 4. Reverse HTTP 5. HTML5

More information

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Simone Bordet sbordet@intalio.com 1 Agenda What are Comet web applications? Impacts of Comet web applications WebSocket

More information

Module 6 Node.js and Socket.IO

Module 6 Node.js and Socket.IO Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides

More information

Building a Real-time Notification System

Building a Real-time Notification System Building a Real-time Notification System September 2015, Geneva Author: Jorge Vicente Cantero Supervisor: Jiri Kuncar CERN openlab Summer Student Report 2015 Project Specification Configurable Notification

More information

Django on Gevent. asynchronous i/o in a synchronous world. Tuesday, September 4, 12

Django on Gevent. asynchronous i/o in a synchronous world. Tuesday, September 4, 12 Django on Gevent asynchronous i/o in a synchronous world About Me 5 years professionally as web developer 4 years using Django 2 years at Lawrence Journal-World (birthplace of Django) Tech obsessions

More information

NODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js

NODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js NODE.JS SERVER SIDE JAVASCRIPT Introduc)on Node.js Node.js was created by Ryan Dahl starting in 2009. For more information visit: http://www.nodejs.org 1 What about Node.js? 1. JavaScript used in client-side

More information

CSC443: Web Programming 2

CSC443: Web Programming 2 CSC443: Web Programming Lecture 20: Web Sockets Haidar M. Harmanani HTML5 WebSocket Standardized by IETF in 2011. Supported by most major browsers including Google Chrome, Internet Explorer, Firefox, Safari

More information

Kaazing Gateway: An Open Source

Kaazing Gateway: An Open Source Kaazing Gateway: An Open Source HTML 5 Websocket Server Speaker Jonas Jacobi Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Agenda Real-Time Web? Why Do I Care? Scalability and Performance Concerns

More information

Guido van Rossum 9th LASER summer school, Sept. 2012

Guido van Rossum 9th LASER summer school, Sept. 2012 Guido van Rossum guido@python.org 9th LASER summer school, Sept. 2012 Async I/O is as old as computers But programmers prefer synchronous I/O Easier to understand Easier to write code for Fewer chances

More information

Eduardo

Eduardo Eduardo Silva @edsiper eduardo@treasure-data.com About Me Eduardo Silva Github & Twitter Personal Blog @edsiper http://edsiper.linuxchile.cl Treasure Data Open Source Engineer Fluentd / Fluent Bit http://github.com/fluent

More information

Kaazing. Connect. Everything. WebSocket The Web Communication Revolution

Kaazing. Connect. Everything. WebSocket The Web Communication Revolution Kaazing. Connect. Everything. WebSocket The Web Communication Revolution 1 Copyright 2011 Kaazing Corporation Speaker Bio John Fallows Co-Founder: Kaazing, At the Heart of the Living Web Co-Author: Pro

More information

Concurrent Python. Cody Soyland Austin Web Python User Group - Feb 28, Thursday, February 28, 13

Concurrent Python. Cody Soyland Austin Web Python User Group - Feb 28, Thursday, February 28, 13 Concurrent Python Cody Soyland Austin Web Python User Group - Feb 28, 2013 Getting started Notes on codysoyland.com Install gevent 1.0 (release candidate) Load my ipython Notebooks The Real-time Web Technologies

More information

Web Sockets and SignalR Building the Real Time Web

Web Sockets and SignalR Building the Real Time Web Web Sockets and SignalR Building the Real Time Web DDD South West Saturday 26th May 2012 Chris Alcock Agenda Introduction What is Real Time? Interactive? Web Sockets Who What When How? Examples (Client

More information

Lightstreamer. The Streaming-Ajax Revolution. Product Insight

Lightstreamer. The Streaming-Ajax Revolution. Product Insight Lightstreamer The Streaming-Ajax Revolution Product Insight 1 Agenda Paradigms for the Real-Time Web (four models explained) Requirements for a Good Comet Solution Introduction to Lightstreamer Lightstreamer

More information

1999 Stackless Python 2004 Greenlet 2006 Eventlet 2009 Gevent 0.x (libevent) 2011 Gevent 1.0dev (libev, c-ares)

1999 Stackless Python 2004 Greenlet 2006 Eventlet 2009 Gevent 0.x (libevent) 2011 Gevent 1.0dev (libev, c-ares) Denis Bilenko 1999 Stackless Python 2004 Greenlet 2006 Eventlet 2009 Gevent 0.x (libevent) 2011 Gevent 1.0dev (libev, c-ares) Replaced libevent with libev Replaced libevent-dns with c-ares Event loop is

More information

Programming WebSockets. Sean Sullivan OSCON July 22, 2010

Programming WebSockets. Sean Sullivan OSCON July 22, 2010 Programming WebSockets Sean Sullivan OSCON July 22, 2010 About me Web application developers HTML 5! improved JavaScript implementations! WebSockets! WebSockets? WebSockets a technology that enables

More information

HTTP, WebSocket, SPDY, HTTP/2.0

HTTP, WebSocket, SPDY, HTTP/2.0 HTTP, WebSocket, SPDY, HTTP/2.0 Evolution of Web Protocols Thomas Becker tbecker@intalio.com 1 Intalio Intalio Jetty Services, Training and Support for Jetty and CometD Intalio BPMS Business Process Management

More information

Kaazing Gateway. Open Source HTML 5 Web Socket Server

Kaazing Gateway. Open Source HTML 5 Web Socket Server Kaazing Gateway Open Source HTML 5 Web Socket Server Speaker John Fallows Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Participant: HTML 5 Community Agenda Networking Review HTML 5 Communication

More information

Introduction to Asynchronous Programming Fall 2014

Introduction to Asynchronous Programming Fall 2014 CS168 Computer Networks Fonseca Introduction to Asynchronous Programming Fall 2014 Contents 1 Introduction 1 2 The Models 1 3 The Motivation 3 4 Event-Driven Programming 4 5 select() to the rescue 5 1

More information

FIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE

FIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE FIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE Table of Contents Introduction... 2 Architecture Overview... 2 Supported Browser Versions and Technologies... 3 Firewalls and Login Sessions...

More information

RKN 2015 Application Layer Short Summary

RKN 2015 Application Layer Short Summary RKN 2015 Application Layer Short Summary HTTP standard version now: 1.1 (former 1.0 HTTP /2.0 in draft form, already used HTTP Requests Headers and body counterpart: answer Safe methods (requests): GET,

More information

Zero Latency HTTP The comet Technique

Zero Latency HTTP The comet Technique Zero Latency HTTP The comet Technique Filip Hanik SpringSource Inc Keystone, Colorado, 2008 Slide 1 Who am I bla bla fhanik@apache.org Tomcat Committer / ASF member Co-designed the Comet implementation

More information

AWS Lambda: Event-driven Code in the Cloud

AWS Lambda: Event-driven Code in the Cloud AWS Lambda: Event-driven Code in the Cloud Dean Bryen, Solutions Architect AWS Andrew Wheat, Senior Software Engineer - BBC April 15, 2015 London, UK 2015, Amazon Web Services, Inc. or its affiliates.

More information

Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro

Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Contents: Introduction SocketPro ways for resilient, responsive and scalable web applications Vertical scalability o

More information

Achieving Scalability and High Availability for clustered Web Services using Apache Synapse. Ruwan Linton WSO2 Inc.

Achieving Scalability and High Availability for clustered Web Services using Apache Synapse. Ruwan Linton WSO2 Inc. Achieving Scalability and High Availability for clustered Web Services using Apache Synapse Ruwan Linton [ruwan@apache.org] WSO2 Inc. Contents Introduction Apache Synapse Web services clustering Scalability/Availability

More information

Lecture 18. WebSocket

Lecture 18. WebSocket Lecture 18. WebSocket 1. What is WebSocket? 2. Why WebSocket? 3. WebSocket protocols 4. WebSocket client side 5. WebSocket on server side 1. Case study, WebSocket on nose.js 2. Case study, WebSocket on

More information

RailsConf Europe 2008 Juggernaut Realtime Rails. Alex MacCaw and Stuart Eccles

RailsConf Europe 2008 Juggernaut Realtime Rails. Alex MacCaw and Stuart Eccles RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles http://www.madebymany.co.uk/ server push HTTP

More information

HTML5 - INTERVIEW QUESTIONS

HTML5 - INTERVIEW QUESTIONS HTML5 - INTERVIEW QUESTIONS http://www.tutorialspoint.com/html5/html5_interview_questions.htm Copyright tutorialspoint.com Dear readers, these HTML5 Interview Questions have been designed specially to

More information

Send me up to 5 good questions in your opinion, I ll use top ones Via direct message at slack. Can be a group effort. Try to add some explanation.

Send me up to 5 good questions in your opinion, I ll use top ones Via direct message at slack. Can be a group effort. Try to add some explanation. Notes Midterm reminder Second midterm next week (04/03), regular class time 20 points, more questions than midterm 1 non-comprehensive exam: no need to study modules before midterm 1 Online testing like

More information

sockjs-tornado documentation

sockjs-tornado documentation sockjs-tornado documentation Release 0.2 Serge S. Koval April 02, 2015 Contents 1 Topics 3 1.1 Statistics................................................. 3 1.2 Frequently Asked Questions.......................................

More information

Nirvana A Technical Introduction

Nirvana A Technical Introduction Nirvana A Technical Introduction Cyril PODER, ingénieur avant-vente June 18, 2013 2 Agenda Product Overview Client Delivery Modes Realm Features Management and Administration Clustering & HA Scalability

More information

Why I still develop synchronous web in the asyncio era. April 7th, 2017 Giovanni Barillari - pycon otto - Firenze, Italy

Why I still develop synchronous web in the asyncio era. April 7th, 2017 Giovanni Barillari - pycon otto - Firenze, Italy Why I still develop synchronous web in the asyncio era April 7th, 2017 Giovanni Barillari - pycon otto - Firenze, Italy Who am I? I m Gio! pronounced as Joe trust me, I m a physicist :) code principally

More information

Keep Learning with Oracle University

Keep Learning with Oracle University Keep Learning with Oracle University Classroom Training Learning SubscripFon Live Virtual Class Training On Demand Cloud Technology ApplicaFons Industries educa7on.oracle.com 3 Session Surveys Help us

More information

INTERNET ENGINEERING. HTTP Protocol. Sadegh Aliakbary

INTERNET ENGINEERING. HTTP Protocol. Sadegh Aliakbary INTERNET ENGINEERING HTTP Protocol Sadegh Aliakbary Agenda HTTP Protocol HTTP Methods HTTP Request and Response State in HTTP Internet Engineering 2 HTTP HTTP Hyper-Text Transfer Protocol (HTTP) The fundamental

More information

Speed up Your Web Applications with HTML5 WebSockets. Yakov Fain, Farata Systems, USA

Speed up Your Web Applications with HTML5 WebSockets. Yakov Fain, Farata Systems, USA Speed up Your Web Applications with HTML5 WebSockets Yakov Fain, Farata Systems, USA The Plan - HTTP request-response - Demo - Server-Sent Events - Demo - WebSocket - Demo What Do You See? HTTP Hacks

More information

Controller/server communication

Controller/server communication Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication

More information

Reactive Microservices Architecture on AWS

Reactive Microservices Architecture on AWS Reactive Microservices Architecture on AWS Sascha Möllering Solutions Architect, @sascha242, Amazon Web Services Germany GmbH Why are we here today? https://secure.flickr.com/photos/mgifford/4525333972

More information

MigratoryData Server Architecture Guide. Version 5.0 November 13, 2018

MigratoryData Server Architecture Guide. Version 5.0 November 13, 2018 MigratoryData Server Architecture Guide Version 5.0 November 13, 2018 Copyright Information Copyright c 2007-2018 Migratory Data Systems. ALL RIGHTS RESERVED. THIS DOCUMENT IS PROVIDED AS IS WITHOUT WARRANTY

More information

Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service

Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Overview In this lab, you'll create advanced Node-RED flows that: Connect the Watson Conversation service to Facebook

More information

Building next-gen Web Apps with WebSocket. Copyright Kaazing Corporation. All rights reserved.

Building next-gen Web Apps with WebSocket. Copyright Kaazing Corporation. All rights reserved. Building next-gen Web Apps with WebSocket Copyright 2011 - Kaazing Corporation. All rights reserved. Who am I? Graham Gear Solution Architect, with Kaazing, purveyors of HTML5 enabling tech Based in London,

More information

The Future of the Web: HTML 5, WebSockets, Comet and Server Sent Events

The Future of the Web: HTML 5, WebSockets, Comet and Server Sent Events The Future of the Web: HTML 5, WebSockets, Comet and Server Sent Events Sidda Eraiah Director of Management Services Kaazing Corporation Agenda Web Applications, where are they going? Real time data for

More information

Brad Drysdale. HTML5 WebSockets - the Web Communication revolution, making the impossible, possible. Main sponsor

Brad Drysdale. HTML5 WebSockets - the Web Communication revolution, making the impossible, possible. Main sponsor Main sponsor HTML5 WebSockets - the Web Communication revolution, making the impossible, possible Brad Drysdale Picasso Matejko + Canale1o Malczewski + Chelmonski State of Scala Venkat Subramaniam Don't

More information

AT&T Smart Cities With M2X & Flow Designer

AT&T Smart Cities With M2X & Flow Designer AT&T Smart Cities With M2X & Flow Designer Introduction... 2 FASTEST Way to Get Started... 5 Getting Started use Socket.io... 6 Getting Started Get Data / Polling... 9 Add a New M2X Device and Create your

More information

Socket programming. Complement for the programming assignment INFO-0010

Socket programming. Complement for the programming assignment INFO-0010 Socket programming Complement for the programming assignment INFO-0010 Outline Socket definition Briefing on the Socket API A simple example in Java Multi-threading and Synchronization Example : HTTP protocol

More information

Internet Connectivity with

Internet Connectivity with Internet Connectivity with Introduction The purpose of this workshop is to help you g et acquainted with the basics of internet connectivity by leveraging ARM mbed tools. If you are not already familiar

More information

High performance and scalable architectures

High performance and scalable architectures High performance and scalable architectures A practical introduction to CQRS and Axon Framework Allard Buijze allard.buijze@trifork.nl Allard Buijze Software Architect at Trifork Organizers of GOTO & QCON

More information

FUSE Ajax Tutorial. 07/06 Version 1.2

FUSE Ajax Tutorial. 07/06 Version 1.2 07/06 Version 1.2 This is a tutorial for a real world example of a stock portfolio publisher using Ajax and Apache ActiveMQ (AMQ). This demonstration uses features of Ajax to show multiple interactive

More information

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems Distributed Architectures & Microservices CS 475, Spring 2018 Concurrent & Distributed Systems GFS Architecture GFS Summary Limitations: Master is a huge bottleneck Recovery of master is slow Lots of success

More information

LECTURE 15. Web Servers

LECTURE 15. Web Servers LECTURE 15 Web Servers DEPLOYMENT So, we ve created a little web application which can let users search for information about a country they may be visiting. The steps we ve taken so far: 1. Writing the

More information

Controller/server communication

Controller/server communication Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication

More information

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

IEMS 5722 Mobile Network Programming and Distributed Server Architecture Department of Information Engineering, CUHK MScIE 2 nd Semester, 2016/17 IEMS 5722 Mobile Network Programming and Distributed Server Architecture Lecture 9 Asynchronous Tasks & Message Queues Lecturer:

More information

Module 3 Web Component

Module 3 Web Component Module 3 Component Model Objectives Describe the role of web components in a Java EE application Define the HTTP request-response model Compare Java servlets and JSP components Describe the basic session

More information

STARCOUNTER. Technical Overview

STARCOUNTER. Technical Overview STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation

More information

Codewords: A Massively Multiplayer Board Game built with Angular

Codewords: A Massively Multiplayer Board Game built with Angular Codewords: A Massively Multiplayer Board Game built with Angular Hi! I m Mike. 2 Hi! I m Mike. I like board games. 3 A LOT 4 In late 2017 I wanted to.. Learn Angular 4 + WebSockets See how Django Channels

More information

Oracle Coherence and WebLogic 12c Delivering Real Time Push at Scale Steve Millidge

Oracle Coherence and WebLogic 12c Delivering Real Time Push at Scale Steve Millidge Oracle Coherence and WebLogic 12c Delivering Real Time Push at Scale Steve Millidge About Me Founder of C2B2 Leading Independent Middleware Experts Non-functional Experts Vendor Neutral Red Hat (JBoss),

More information

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

IEMS 5722 Mobile Network Programming and Distributed Server Architecture Department of Information Engineering, CUHK MScIE 2 nd Semester, 2016/17 IEMS 5722 Mobile Network Programming and Distributed Server Architecture Lecture 10 Web Sockets for Real-time Communications Lecturer:

More information

Application Protocols and HTTP

Application Protocols and HTTP Application Protocols and HTTP 14-740: Fundamentals of Computer Networks Bill Nace Material from Computer Networking: A Top Down Approach, 6 th edition. J.F. Kurose and K.W. Ross Administrivia Lab #0 due

More information

Tango - Icalepcs 2009 ESRF

Tango - Icalepcs 2009 ESRF Tango - Icalepcs 2009 ESRF TANGO collaboration and kernel status Brief introduction What's new since Icalepcs 2009 New projects Re-thinking the Tango event system E Taurel - Icalepcs 2011 2 What is Tango?

More information

IERG 4080 Building Scalable Internet-based Services

IERG 4080 Building Scalable Internet-based Services Department of Information Engineering, CUHK Term 1, 2016/17 IERG 4080 Building Scalable Internet-based Services Lecture 7 Asynchronous Tasks and Message Queues Lecturer: Albert C. M. Au Yeung 20 th & 21

More information

Make your application real-time with PubSubHubbub. Brett Slatkin May 19th, 2010

Make your application real-time with PubSubHubbub. Brett Slatkin May 19th, 2010 Make your application real-time with PubSubHubbub Brett Slatkin May 19th, 2010 View live notes and ask questions about this session on Google Wave http://tinyurl.com/push-io2010 Me http://onebigfluke.com

More information

ReST 2000 Roy Fielding W3C

ReST 2000 Roy Fielding W3C Outline What is ReST? Constraints in ReST REST Architecture Components Features of ReST applications Example of requests in REST & SOAP Complex REST request REST Server response Real REST examples REST

More information

CS 498RK FALL RESTFUL APIs

CS 498RK FALL RESTFUL APIs CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources

More information

Real Time Apps Using SignalR

Real Time Apps Using SignalR Real Time Apps Using SignalR Anurag Choudhry Solution Architect,Banking Technology Group,Tata Consultancy Services,New Delhi, India Anshu Premchand Lead, Presales & Solutions,Banking Technology Group,Tata

More information

ECE 650 Systems Programming & Engineering. Spring 2018

ECE 650 Systems Programming & Engineering. Spring 2018 ECE 650 Systems Programming & Engineering Spring 2018 Programming with Network Sockets Tyler Bletsch Duke University Slides are adapted from Brian Rogers (Duke) Sockets We ve looked at shared memory vs.

More information

Java vs JavaScript. For Enterprise Web Applications. Chris Bailey IBM Runtime Technologies IBM Corporation

Java vs JavaScript. For Enterprise Web Applications. Chris Bailey IBM Runtime Technologies IBM Corporation Java vs JavaScript For Enterprise Web Applications Chris Bailey IBM Runtime Technologies 1 What Languages do you use? 120 Percentage of Audience 100 80 60 40 20 0 Java 2 JavaScript Both What Runtimes do

More information

Websocket file transfer example

Websocket file transfer example Websocket file transfer example The Problem: Low Latency Client-Server and Server-Client Connections. The Problem: Low Latency Client-Server and Server-Client Connections. // File has seen in the webkit

More information

Real-Time Embedded User Interfaces

Real-Time Embedded User Interfaces Real-Time Embedded User Interfaces Justin Ireland August 2010 Introduction Modern appliances and electronic devices are becoming increasingly sophisticated. Advanced feature sets require advanced configuration

More information

Corey Clark PhD Daniel Montgomery

Corey Clark PhD Daniel Montgomery Corey Clark PhD Daniel Montgomery Web Dev Platform Cross Platform Cross Browser WebGL HTML5 Web Socket Web Worker Hardware Acceleration Optimized Communication Channel Parallel Processing JaHOVA OS Kernel

More information

Xignite CloudStreaming overview

Xignite CloudStreaming overview Xignite CloudStreaming overview Objectives Terminology Zero footprint Easy to implement Open standards Sample code Simple javascript implementation Handling patch messages Including error handling Using

More information

Interactive Websites: Comet and DWR. Joe Walker, SitePen

Interactive Websites: Comet and DWR. Joe Walker, SitePen Interactive Websites: Comet and DWR Joe Walker, SitePen Agenda: Comet 101 The Ultimate Hack Passing the Pain DWR 101 Demos What is Comet? What is Comet? Long lived HTTP connections Low latency data For

More information

The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond. Guillermo QCon. November 2012.

The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond. Guillermo QCon. November 2012. The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond Guillermo Rauch @ QCon. November 2012. Guillermo. CTO and co-founder at LearnBoost. Creator of socket.io and engine.io. @rauchg on twitter http://devthought.com

More information

this presentation code is on https://github.com/gabrielelana/node-examples

this presentation code is on https://github.com/gabrielelana/node-examples this presentation code is on https://github.com/gabrielelana/node-examples gabriele lana gabriele.lana@cleancode.it twitter: @gabrielelana this presentation code is on https://github.com/gabrielelana/node-examples

More information

Java Enterprise Edition

Java Enterprise Edition Java Enterprise Edition The Big Problem Enterprise Architecture: Critical, large-scale systems Performance Millions of requests per day Concurrency Thousands of users Transactions Large amounts of data

More information

TomcatCon London 2017 Clustering Mark Thomas

TomcatCon London 2017 Clustering Mark Thomas TomcatCon London 2017 Clustering Mark Thomas Agenda Reverse Proxies Load-balancing Clustering Reverse Proxies bz.apache.org httpd instance Reverse Proxy Bugzilla (main) bz.apache.org/bugzilla httpd instance

More information

CHAPTER 3 - PROCESS CONCEPT

CHAPTER 3 - PROCESS CONCEPT CHAPTER 3 - PROCESS CONCEPT 1 OBJECTIVES Introduce a process a program in execution basis of all computation Describe features of processes: scheduling, creation, termination, communication Explore interprocess

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title Notes Ask course content questions on Slack (is651-spring-2018.slack.com) Contact me by email to add you to Slack Make sure you checked Additional Links at homework page before you ask In-class discussion

More information

Real Time Rack. Konstantin Haase

Real Time Rack. Konstantin Haase Real Time Rack Konstantin Haase La verdadera pregunta es... Quién es el mejor fútbolista? Explora! Por cierto... Come again? streaming server push decide what to s while streaming, not upfront

More information

JS Event Loop, Promises, Async Await etc. Slava Kim

JS Event Loop, Promises, Async Await etc. Slava Kim JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????

More information

Copyright 2013, Oracle and/or its affiliates. All rights reserved. CON-7777, JMS and WebSocket for Lightweight and Efficient Messaging

Copyright 2013, Oracle and/or its affiliates. All rights reserved. CON-7777, JMS and WebSocket for Lightweight and Efficient Messaging 1 JMS and WebSocket for Lightweight and Efficient Messaging Ed Bratt Senior Development Manager, Oracle Amy Kang Consulting Member Technical Staff, Oracle Safe Harbor Statement please note The following

More information

StratumGS Documentation

StratumGS Documentation StratumGS Documentation Release 0.1.0 Dave Korhumel May 14, 2016 Contents 1 Documentation 3 1.1 Design.................................................. 3 1.2 Guides..................................................

More information

PushyDB. Jeff Chan, Kenny Lam, Nils Molina, Oliver Song {jeffchan, kennylam, molina,

PushyDB. Jeff Chan, Kenny Lam, Nils Molina, Oliver Song {jeffchan, kennylam, molina, PushyDB Jeff Chan, Kenny Lam, Nils Molina, Oliver Song {jeffchan, kennylam, molina, osong}@mit.edu https://github.com/jeffchan/6.824 1. Abstract PushyDB provides a more fully featured database that exposes

More information

Modern Web Application Development. Sam Hogarth

Modern Web Application Development. Sam Hogarth Modern Web Application Development Sam Hogarth Some History Early Web Applications Server-side scripting only e.g. PHP/ASP Basic client-side scripts JavaScript/JScript/VBScript Major differences in browser

More information

REALTIME WEB APPLICATIONS WITH ORACLE APEX

REALTIME WEB APPLICATIONS WITH ORACLE APEX REALTIME WEB APPLICATIONS WITH ORACLE APEX DOAG Conference 2012 Johannes Mangold Senior Consultant, Trivadis AG BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART

More information

REST Easy with Infrared360

REST Easy with Infrared360 REST Easy with Infrared360 A discussion on HTTP-based RESTful Web Services and how to use them in Infrared360 What is REST? REST stands for Representational State Transfer, which is an architectural style

More information

Real-time video chat XPage application using websocket and WebRTC technologies AD-1077

Real-time video chat XPage application using websocket and WebRTC technologies AD-1077 Real-time video chat XPage application using websocket and WebRTC technologies AD-1077 Dr Csaba Kiss 02/03/2016 LA-UR-16-20047 Credentials Over 25 years experience in molecular biology Began Xpage application

More information

High Level Interoperability Testing

High Level Interoperability Testing High Level Interoperability Testing For the Web of Things Dave Raggett F-Interop is an international project supported by the European Union s Horizon 2020 programme under Grant Agreement

More information

Science-as-a-Service

Science-as-a-Service Science-as-a-Service The iplant Foundation Rion Dooley Edwin Skidmore Dan Stanzione Steve Terry Matthew Vaughn Outline Why, why, why! When duct tape isn t enough Building an API for the web Core services

More information

Advanced Flask Patterns

Advanced Flask Patterns Advanced Flask Patterns PyCon Russia 2013 a presentation by Armin Ronacher @mitsuhiko -1 Who am I? That's me Armin Ronacher @mitsuhiko Creator of Flask/Werkzeug/Jinja2 0 Focus & Caveats Interrupt me Assumes

More information

Zombie Apocalypse Workshop

Zombie Apocalypse Workshop Zombie Apocalypse Workshop Building Serverless Microservices Danilo Poccia @danilop Paolo Latella @LatellaPaolo September 22 nd, 2016 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

More information

Putting A Spark in Web Apps

Putting A Spark in Web Apps Putting A Spark in Web Apps Apache Big Data, Seville ES, 2016 David Fallside Intro Web app development has moved from Java etc to Node.js and JavaScript JS environment relatively simple and very rich,

More information

DISQUS. Continuous Deployment Everything. David

DISQUS. Continuous Deployment Everything. David DISQUS Continuous Deployment Everything David Cramer @zeeg Continuous Deployment Shipping new code as soon as it s ready (It s really just super awesome buildbots) Workflow Commit (master) Integration

More information

DATA COMMUNICATOIN NETWORKING

DATA COMMUNICATOIN NETWORKING DATA COMMUNICATOIN NETWORKING Instructor: Ouldooz Baghban Karimi Course Book: Computer Networking, A Top-Down Approach By: Kurose, Ross Introduction Course Overview Basics of Computer Networks Internet

More information

What the Bayeux? Filip Hanik. SpringSource Inc Keystone, Colorado, Slide 1

What the Bayeux? Filip Hanik. SpringSource Inc Keystone, Colorado, Slide 1 What the Bayeux? Filip Hanik SpringSource Inc Keystone, Colorado, 2008 Slide 1 Who is Filip Apache Tomcat committer ASF Member Part of the servlet expert group SpringSource Inc employee What we will cover

More information

IEMS 5780 / IERG 4080 Building and Deploying Scalable Machine Learning Services

IEMS 5780 / IERG 4080 Building and Deploying Scalable Machine Learning Services IEMS 5780 / IERG 4080 Building and Deploying Scalable Machine Learning Services Lecture 11 - Asynchronous Tasks and Message Queues Albert Au Yeung 22nd November, 2018 1 / 53 Asynchronous Tasks 2 / 53 Client

More information

AWS Lambda. 1.1 What is AWS Lambda?

AWS Lambda. 1.1 What is AWS Lambda? Objectives Key objectives of this chapter Lambda Functions Use cases The programming model Lambda blueprints AWS Lambda 1.1 What is AWS Lambda? AWS Lambda lets you run your code written in a number of

More information

ØMQ and PyØMQ. Simple and Fast Messaging. Brian Granger SciPy 2010

ØMQ and PyØMQ. Simple and Fast Messaging. Brian Granger SciPy 2010 ØMQ and PyØMQ Simple and Fast Messaging Brian Granger SciPy 2010 Message passing Message = binary data, csv, structured data, Python objects, files, XML, JSON, video frames, audio streams, etc. Passing

More information

Internet Engineering Task Force (IETF) Request for Comments: 8441 Updates: 6455 September 2018 Category: Standards Track ISSN:

Internet Engineering Task Force (IETF) Request for Comments: 8441 Updates: 6455 September 2018 Category: Standards Track ISSN: Internet Engineering Task Force (IETF) P. McManus Request for Comments: 8441 Mozilla Updates: 6455 September 2018 Category: Standards Track ISSN: 2070-1721 Abstract Bootstrapping WebSockets with HTTP/2

More information