I have been working on Single
Page Applications (SPA) for some time now. These applications have not just
changed the user interface design, they have also changed the server architecture;
server becomes lean and client picks up extra weight.
Single Page Application provides
rich, fast and interactive user interface, they emulate a desktop application
in look/feel and server interaction. These applications do not require a page
load between user interactions, UI components of the page are loaded up front and
the user sees the page instantly. The browser continues to load the page while
making multiple asynchronous server calls to gather page data. With these concurrent
asynchronous severs calls; the overall page load is faster too.
Traditional web applications
follow a request-based model where the server responds to a request by
selecting, generating & delivering the next view. The server gathers all the
data needed to display the next page and hands it to the UI.
In SPA, UI has the
responsibility of selecting, generating and delivering the next view. It makes
fine-grained service call to gather data needed to respond to user events.
In
traditional web application, server managed the client state through HTTPSession
or state-full session beans. In SPA, this responsibility moved to UI, user’s
state is maintained browser-side.
Now, that
the server no longer manages state or performs view control, it just provides
data-feeds to UI in response to the user events. The server is a simple stateless
web service application. Such applications have a simple cluster configuration;
there is no overhead of session replication or sticky session.
In my case,
I did not go completely stateless; I had a state aware Application Tier in
front of the stateless services tier. This tier is a Spring MVC web application,
which interacts with UI/ExtJS and proxies’ service calls to the domain services
(Apache CXF). It is deployed in the
VMware cluster with sticky session and domain services are deployed in a simple
cluster.
These
stateless web service applications have a low memory footprint which helps in
simplifying the JVM configuration.
SPA store page
data in browser and UI makes service calls to get delta data. As the data is
already in browser the number of service calls are less. Also, the service
calls are fine grained, so the network bandwidth consumption is low.
Single Page
Applications make server architecture simple and lean. However because of chatty
UI-service interactions, SPA requires certain server configurations that were
not needed in the traditional web application. I plan to write about it in my
next blog.