Today, Revolution Analytics announced another add-on to R as part of Revolution R Enterprise. RevoDeployR is a Web Services framework for R, designed to make it easy to scalably and securely integrate computations done in R into other applications like spreadsheets and web pages.
The idea is simple: as an R programmer, you can create a script in R and then publish it to the RevoDeployR server. To make things easy for integration, you'll define the interface to the script in terms of well-specified inputs (akin to function arguments) and outputs (data, files, graphics). You can use all of the features of R (and extensions like CRAN packages) in the script to implement any calculation you want: grab data from a database (or from one of the supplied inputs), build a statistical model, return forecasts, generate a chart.
Then, it's over to an application developer to integrate your R code into an application. (Of course, if you're a crack API/web services programmer you can do this part, too, but we'll assume different people are doing the R programming and the integration development.) The application developer will use the extension language of the target application: .NET for Microsoft Excel, JavaScript for Jaspersoft, etc. to extend it to call out to RevoDeployR, using the developer libraries provided with RevoDeployR. How the interface looks and behaves is completely up to the developer (within the limits of the target application, anyway): there could be buttons, fields, and file choosers to control the inputs to the R script, and the outputs can be embedded in the application in a data grid, file download, or chart.
From the point of view of the application user, all of this happens invisibly, behind the scenes. There might be a new control, or menu item in the application they've been using for years, and there's some new information (based on some fancy statistical analysis created by the Research folks down the hall) to make decisions with, but other than that everything's as before. The user is most likely unaware that their application is now making RESTful API calls to a remote RevoDeployR server via the web, or even that R is involved at all. And that's a good thing: now, more people can benefit from the power of R, even if they don't know R themselves.
If you want to learn more about RevoDeployR, check out this white paper by Joseph Rickert. I'll also be giving a webinar about RevoDeployR in conjunction with Jaspersoft next Wednesday. Finally, you can see an overview of RevoDeployR and some demonstrations of applications using RevoDeployR in this YouTube video, embedded after the jump.
Revolution Analytics: RevoDeployR — Application Integration, Deployment and Administration for R
Why don't you guys crawl back under the rock where you came from, and stop making a profit on the work of a free software community.
Posted by: Emil | September 14, 2010 at 16:13
Keep up the great work guys -- you're making a real contribution to the R community AND to business!
Hope this takes off!
Posted by: Robert | September 14, 2010 at 18:12
I think work done by you guys is commendable given your constraints. Keep IT up-- all the way UP
Posted by: Ajay Ohri | September 15, 2010 at 11:37
David, does RevoDeployR prevent deployed R scripts from entering infinite loops? What would happen if I deployed a script that included "while(TRUE) {}"? Rserve (which RevoDeployR is built on) and its Java client do not prevent this.
Posted by: Ian Cook | September 23, 2010 at 07:48
The deployR Management console allows the Administrator to define boundary conditions in which scripts can run. These boundary conditions inlcude maximum cpu time for a session and the maximum memory a session is allowed to allocate. In addition, using a 3rd party package like AppArmor the server can be locked down further
Ultimately, it is the responsibility of the script author to deploy well behaved code. To allow maximum flexibility of the R developer, we don't do any parsing of the R code. If there are sensitive scripts that need to be deployed is recomended to restrict those to a defined set of users, using the roles capability in the Management console.
Posted by: David Champagne | September 24, 2010 at 09:17
This is such a great product!
I would like to use a web based system instead of a dedicated process.
Posted by: FiFi | September 14, 2011 at 15:03