Spiral 1 Design Joshua Horwitz Mackenzie Sweeney.

Slides:



Advertisements
Similar presentations
An Erlang Implementation of Restms. Why have messaging? Separates applications cheaply Feed information to the right applications cheaply Interpret feed.
Advertisements

Oct, 26 th, 2010 OGF 30, NSI-WG: Network Service Interface working group Web Services Overview Web Services for NSI protocol implementation
12 October 2011 Andrew Brown IMu Technology EMu Global Users Group 12 October 2011 IMu Technology.
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
Netscape Application Server Application Server for Business-Critical Applications Presented By : Khalid Ahmed DS Fall 98.
Reliability on Web Services Presented by Pat Chan 17/10/2005.
Objectives In this session, you will learn to:
Felix Ehm CERN BE-CO. Content  Introduction  JMS in the Controls System  Deployment and Operation  Conclusion.
Extensible Networking Platform IWAN 2005 Extensible Network Configuration and Communication Framework Todd Sproull and John Lockwood
Presentation 7: Part 1: Web Services Introduced. Outline Definition Overview of Web Services Examples Next Time: SOAP & WSDL.
Copyright 2004 Monash University IMS5401 Web-based Systems Development Topic 2: Elements of the Web (g) Interactivity.
Big Data Open Source Software and Projects ABDS in Summary XVI: Layer 13 Part 1 Data Science Curriculum March Geoffrey Fox
15 Chapter 15 Web Database Development Database Systems: Design, Implementation, and Management, Fifth Edition, Rob and Coronel.
Cloud Computing Lecture #7 Introduction to Ajax Jimmy Lin The iSchool University of Maryland Wednesday, October 15, 2008 This work is licensed under a.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Firefox 2 Feature Proposal: Remote User Profiles TeamOne August 3, 2007 TeamOne August 3, 2007.
Condor Project Computer Sciences Department University of Wisconsin-Madison Asynchronous Notification in Condor By Vidhya Murali.
Client-Server Processing and Distributed Databases
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
Getting Started with WCF Windows Communication Foundation 4.0 Development Chapter 1.
Messaging Technologies Group: Yuzhou Xia Yi Tan Jianxiao Zhai.
A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
Copyright © cs-tutorial.com. Introduction to Web Development In 1990 and 1991,Tim Berners-Lee created the World Wide Web at the European Laboratory for.
STOMP 1.2 GETTING THE MESSAGE ACROSS: REBOOTED. BRIEF INTRODUCTION Julian Lyndon-Smith, IT Director dot.r limited Progress developer since v3, 1987 Living.
Databases and the Internet. Lecture Objectives Databases and the Internet Characteristics and Benefits of Internet Server-Side vs. Client-Side Special.
Institute of Computer and Communication Network Engineering OFC/NFOEC, 6-10 March 2011, Los Angeles, CA Lessons Learned From Implementing a Path Computation.
11/16/2012ISC329 Isabelle Bichindaritz1 Web Database Application Development.
Fundamentals of Database Chapter 7 Database Technologies.
SPREAD TOOLKIT High performance messaging middleware Presented by Sayantam Dey Vipin Mehta.
Web Services Load Leveler Enabling Autonomic Meta-Scheduling in Grid Environments Objective Enable autonomic meta-scheduling over different organizations.
1 Introduction to Middleware. 2 Outline What is middleware? Purpose and origin Why use it? What Middleware does? Technical details Middleware services.
(Business) Process Centric Exchanges
An application architecture specifies the technologies to be used to implement one or more (and possibly all) information systems in terms of DATA, PROCESS,
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
NOVA Networked Object-based EnVironment for Analysis P. Nevski, A. Vaniachine, T. Wenaus NOVA is a project to develop distributed object oriented physics.
Integrating Digital Libraries by CORBA, XML and Servlet Integrating Digital Libraries by CORBA, XML and Servlet Wing Hang Cheung, Michael R. Lyu and Kam.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Building a real-world, Internet- scale stock trading application Naveen Prabhu Quadwave Consulting Pvt. Ltd.
Copyright © 2012 UNICOM Systems, Inc. Confidential Information z/Ware Product Overview illustro Systems International A Division of UNICOM Global.
Messaging. Message Type Patterns Command Invoke a procedure in another application SOAP request is an example Document Message Single unit of information,
API Crash Course CWU Startup Club. OUTLINE What is an API? Why are API’s useful? What is HTTP? JSON? XML? What is a RESTful API? How do we consume an.
Kemal Baykal Rasim Ismayilov
NOVA A Networked Object-Based EnVironment for Analysis “Framework Components for Distributed Computing” Pavel Nevski, Sasha Vanyashin, Torre Wenaus US.
Information-Centric Networks10b-1 Week 10 / Paper 2 Hermes: a distributed event-based middleware architecture –P.R. Pietzuch, J.M. Bacon –ICDCS 2002 Workshops.
AMQP, Message Broker Babu Ram Dawadi. overview Why MOM architecture? Messaging broker like RabbitMQ in brief RabbitMQ AMQP – What is it ?
REST By: Vishwanath Vineet.
Spring RabbitMQ Martin Toshev.
1 Service Oriented Architecture SOA. 2 Service Oriented Architecture (SOA) Definition  SOA is an architecture paradigm that is gaining recently a significant.
09/13/04 CDA 6506 Network Architecture and Client/Server Computing Peer-to-Peer Computing and Content Distribution Networks by Zornitza Genova Prodanoff.
DAT602 Database Application Development Lecture 1 Course Structure & Background knowledge.
Website Update and Use of Official accounts Dr.Lasantha Ranwala ( MBBS,MSc-Biomedical Informatics) Medical Officer - Health Informatics RDHS Office.
E-commerce Architecture Ayşe Başar Bener. Client Server Architecture E-commerce is based on client/ server architecture –Client processes requesting service.
Introduction to Node.js® Jitendra Kumar Patel Saturday, January 31, 2015.
Improve the Performance, Scalability, and Reliability of Applications in the Cloud with jetNEXUS Load Balancer for Microsoft Azure MICROSOFT AZURE ISV.
Common Transport Rafael Schloming. Objectives Scaling Engineering Time ● N experts in protocol & language -> 1 protocol expert & N language experts ●
Feature-Level Modularity in Ur/Web Adam Chlipala WG 2.16 meeting, August 2013.
Chapter 8 Environments, Alternatives, and Decisions.
Affinity Depending on the application and client requirements of your Network Load Balancing cluster, you can be required to select an Affinity setting.
Netscape Application Server
CS5220 Advanced Topics in Web Programming Introduction to WebSocket
WEB SERVICES.
Open Source distributed document DB for an enterprise
Unit – 5 JAVA Web Services
Lecture 1: Multi-tier Architecture Overview
Introduction of Week 11 Return assignment 9-1 Collect assignment 10-1
J2EE Lecture 13: JMS and WebSocket
Presentation transcript:

Spiral 1 Design Joshua Horwitz Mackenzie Sweeney

Architecture Components Server Communication: AMQP Server-side Application: Python Tornado or NodeJS RabbitMQ as message broker Client-Server Communication: SockJS & RESTful API Client-side Application: HTML, CSS, JS with jQuery Browser Communication: PubSubJS

Spiral 1 Proposal Design/Prototype client pub/sub environment with PubSubJS Design/Prototype Map abstraction using CMAPI specification Either modify Mapstraction or implement our own Maps to support for spiral 1: LeafletJS (at minimum) Google Maps V3 OpenLayers Design/Prototype UI (for maps) Design/Prototype Overlay Widget Extremely useful to test interoperability with other widgets Can incorporate this as an add-on to our widget Keep access control in mind, but don’t prioritize

Client Pub/Sub Implement using global pub/sub library that meets criteria: JS-native Widely used Actively maintained/developed Our recommendation is PubSubJS // Basic pub/sub operations PubSub.subscribe(‘map.overlay.create’, callback); PubSub.publish(‘map.overlay.create’, payload); // Can also use jQuery syntax $.pubsub(‘subscribe’, ‘map.overlay.create’, callback); $.pubsub(‘publish’, ‘map.overlay.create’, payload)

Map Abstraction Layer Goal: 0% code-rewriting, 100% interoperability Possible starting point is Mapstraction (BSD License) Fork and extend Or create our own: take what’s useful and improve Implement CMAPI over all supported maps At a minimum we should support LeafletJS (uses OpenStreetMaps) Google Maps V3 OpenLayers Should also support multiple data formats KML GeoJSON

How Does it Work? Create a map template interface For all maps, implement the same interface (think Java) User selects an underlying map to use (LeafletJS, Google, etc) Based on user choice, load in appropriate module Object guaranteed to have defined template Can subscribe to appropriate channels with known callbacks Essentially, its polymorphism Benefits No shim required: no unnecessary parsing One handler, one time Does not rule out subsequent reloads (swap underlying map)

User Interface Much of the UI will be provided by the maps provided Custom widgets (like overlay) should leverage: HTML5 CSS3 (responsiveness for different clients) JS/jQuery Priorities Modern feel! High degree of usability (learn from JC2CUI widget mistakes) Persistent storage in browser Get fancy later Could create our own Grid widget (industry folks hate JC2CUI’s) Provide cool analytics on mapped data (Jake/David )

Server Pub/Sub (looking forward) Leverage RabbitMQ Single exchange routes published messages to rooms All messages for one room end up at one queue Provides a pure FIFO structure to receive messages in order Producers (users): publish directly to the exchange via SockJS and the RabbitMQ Web-STOMP plugin Consumer (web server): handles the user subscriptions and sends the data to users via SockJS

Consumer Model 2-layer consumer model Web server Browser (user) Walkthrough 1.Web server consumes messages from room queues 2.Gets list of users in room from DB 3.Broadcasts message to all users over SockJS connections 4.Browsers (users) then receive messages 5.Channel parsed from message; appropriate callback executed

Benefits of Consumer Model Obvious benefits Establishes central authority on room state Update new users who join room Recover from disconnects New features Collect data on publishing patterns Save existing session state for quick restore later This approach has been proven in the commercial world It works! No need to modify current CMAPI channel payloads! HuffingtonPost Live pumps out over 20 million messages/week

AMQP Developed to solve the messaging interoperability problem in the financial industry Used now by 100s of critical systems Open standard Highly interoperable Use-cases Transient pub/sub distribution Reliable request-reply transactions

RabbitMQ Market leader MOM for AMQP Most popular choice on EC2 Bindings for multiple languages Java, Ruby, Python, C, C#, Erlang, Node, Perl Multi-protocol Support AMP 0-9-1, 0-9 and 0-8 AMQP 1.0 MQTT, XMPP, SMTP, HTTP, STOMP

RabbitMQ Built-in RESTful API & Web-STOMP plugin The creators have web messaging in mind! Reliability – can persist data and recover from failures Built-in clustering and transparent scaling Self-healing capabilities and extensive tooling/configuration Built-in access control techniques

RabbitMQ Web-stomp A simple bridge exposing STOMP protocol over emulated HTML5 websockets Makes it possible to use RabbitMQ from web browsers Comes with RabbitMQ Used in industry (see previous huffington post example) They handle over 20 million messages/week with web-stomp EXTREMELY SIMPLE to use

Web-STOMP Code // Stomp.js boilerplate var ws = new SockJS(' + window.location.hostname + ':15674/stomp'); var client = Stomp.over(ws); send = function(data) { client.send('/topic/bunny', {}, data); }; var on_connect = function(x) { id = client.subscribe('/topic/bunny', function(d) { // do some stuff }); }; var on_error = function() { console.log('error'); }; client.connect('guest', 'guest', on_connect, on_error, /');

So what is this SockJS? A ws polyfill that provides a ws-like JS object in ANY browser Automatic fallback if the channel can’t support websockets SocketIO does not do this Also works in browsers behind ws-unfriendly proxies If it doesn’t work, your network broke the Internet Well documented scaling and load balancing techniques Can utilize sticky sessions (JSESSIONID) or prefix-based LB Used in critical industry systems

Server Application Must support SockJS Our recommendation is Python/Tornado 2 nd option recommendation is NodeJS/Express The approach we are outlining has been proven in the commercial industry as a viable solution factory.com/upload/presentations/791/HuffingtonPost.pdf factory.com/upload/presentations/791/HuffingtonPost.pdf Extremely easy to implement simple prototype has been developed to proof feasibility