RASCAL Data Streaming Backend -- Which Technology to use?

Peter Rowley prowley at yorku.ca
Mon Oct 6 22:08:10 UTC 2008

Hi David and everyone,

Following David's suggestion, I've converted an e-mail I sent to him into 
one for fluid-work, so everyone can get in on the discussion.

Based on some discussions within CNS at York, I'd suggest looking more 
closely at using HTTPS, i.e. HTTP over SSL.  HTTPS...

- due to the possibility that the screen recordings contain secure data 
and thus the need to transmit them securely to the server, 
- due to the fact that it encodes credentials used for authorization to 
deposit recordings on the server, and 
- due to its acceptability to sysadmins from a security perspective 
(stemming from the nature of the protocol and greater level of comfort 
with the security of Apache than a typical FTP server), 
- due to its ability to pass through most firewalls,
- due to it being built into Java SE, so licensing is not an issue

As for the scalability, HTTP upload is certainly used for massive sites 
such as Flickr.  Your approach to uploading the file in smaller (e.g. 1MB) 
chunks is probably a good one to continue; you'll need to build (or find) 
a simple protocol above HTTPS to keep track of which chunks still have to 
be transmitted.

As for alternatives, JDBC and JMS are overly complex for this, and SFTP 
has firewall issues in some situations (Google "sftp firewall"). 


David Makalsky <dmakalsky at gmail.com> 
Sent by: fluid-work-bounces at fluidproject.org
10/03/08 05:57 PM

Fluid Mailing List <fluid-work at fluidproject.org>

RASCAL Data Streaming Backend -- Which Technology to use?


We have a functional requirement in RASCAL for data to be streamed 
from the clients' browser (applet) to the server.  This is the data 
that will be converted into the video of the users' desktop (and audio 
from the microphone).  This functionality is essential, since without 
it, the data wouldn't get to the server.

Currently, this solution is implemented via ftp.  An ftp connection is 
established from the client to the server and the data is uploaded in 
a separate thread in 1 MB chunks.  We chose this solution for various 
reasons (discussion in the table below) but would like to open this up 
to the fluid community.  Which of the proposed solutions below would 
you suggest, or are there other completely different solutions that we 
should consider?


David Makalsky


- Already implemented
- Many java libraries available (license compatible)
- Only virtual user needs to be created with only write access granted
- Simple to implement

- Password is sent as plaintext
- There is a maximum simultaneous connection limit
- Not transactional


- Password is encrypted
- Simple to implement (if you have a good library)

- No License Compatible java libraries
- Same cons as FTP except password is encrypted

Message Queue

- Transactional
- Secure
- Easy to implement on the client side
- Scalable

- Significant administration and installation effort
- Resource-intensive


- Scalable
- Secure
- Easy to implement on both sides
- Transactional

- Database will grow quite big unless blobs are written out to files 
regularly and cleaned from database


- transactional
- fairly easy to implement

- Bad for streaming large chunks of data
- Puts a large strain on http server
- not scalable easily (will have to cluster web servers with session 
fluid-work mailing list
fluid-work at fluidproject.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.idrc.ocad.ca/pipermail/fluid-work/attachments/20081006/27697a96/attachment.htm>

More information about the fluid-work mailing list