One benefit of a platform like Junction is that you have several application runtime deployment options. You can mix and match among these scenarios…
1. If your end-user has Google Gears installed, they can execute the web-app primarily within the web-browser. Here, the client-side RDBMS is an asynchronously replicated cache of records from the main server-side RDBMS. The big benefit is increased UI responsiveness. And, the web-app can go offline and survive down or flaky network connections. By flaky, I’m thinking iPhone on AT&T, or 200 attendees trying to share a conference WiFi hotspot.
2. If your end-user does not have Google Gears, no problem. They can still execute the web-app completely within the web-browser, for increased UI responsiveness. And, the web-app can still survive flaky network connections. Here, the client-side RDBMS is not persistent, just a memory-only SQL engine. The downside with a memory-only DB is you can’t truly go offline where you power-cycle, or close and restart your web-browser.
3. The last option is where your application code executes on the server side, running on a traditional-style, server-side web application server. It communicates directly with the full, main RDBMS that is the source of truth. While not as snappy as the browser-hosted web-app, at least the user is working with the full set of data, not a cached subset, minimizing outdated views of information. Also, the pages served up by the web application server are crawlable, if you wish, by your favorite search engines.
Here’s a table…
Runtime Environment...
1) in-browser 2) in-browser 3) web app-server
with Gears with memory-DB
Feature...
---------------------------------------------------------------------------------
fast/snappy UI - Y Y N
good for flaky - Y Y N
network
can go offline - Y N N
full data set - N N Y
crawlable - N N Y
For options 1 and 2, by the way, there’s an interesting, shared sub-scenario…
I call this the ‘Personal Edition‘ mode. You still execute the web-app within the web browser, getting a nice, snappy UI. However, you don’t let the end-user synchronize with the server-side RDBMS. So, effectively, the end-user is just running a private, single-computer application with a private RDBMS.
This is an interesting pathway to demo or show off your web-application, perhaps as the first, introductory step in a tiered menu of application service plans. Customers can run the Personal Edition of your web application at a cheap, introductory rate (e.g., <$15/month). Later, if they want to sync between computers, such as between their home PC and the office computer, or if they want to share data within a team of folks, they can upgrade to Team Edition or better, for a higher charge, which enables data synchronization.
The frosting to Personal Edition mode is that your server resource usage will be very light for all the tire-kickers and demo users, because all the runtime activity is happening primarily on the end-user’s computer. Only the higher-tiered, higher-paying customers will consume large server resources. That’s good for frugal startups.