Our aim was to provide web-banking app to serve customers'
deposit accounts with the best possible functionality/codesize rate.
We've created fast and robust responsive web application that
can fit any devices and provides modern secure features over the fast
WebSocket channel.
Minimal
When we are talking about enterprise solutions we always
talk about giants, like CLR/JVM virtual machines and SAP/Oracle warehouses.
However systems needn't to be complex and technologies like
K langauge and Erlang provide enough declarative
expressivness for business applications. Having
some experience in building banking software we
provide smallest possible processing infrastructure
to be easily verified and managed while being robust at the same time.
The application is built using Erlang libraries from synrc
and spawnproc GitHub organizations. Consumer appliaction
hosts custom rules depending protocol or server module.
E.g. your business application defines a set of business
processes which are driven by BPE server, this application usually called ACT,
from "activity server". N2O-based web application usually called WEB or SPA. See Picture 1.
The architecture is based on spawnproc processing applications
and relies on synrc Erlang stack and N2O protocol. It is run
using voxoz development tools. The application can be
distributed as a single file, is able to run on Windows, Linux and Mac
and fits to 2.88MB diskette. For processing opening application
database consumes 2K per record.
Despite small size of application, it can operate hundred
of millions records in KVS database. All banking "big-data" of
transaction chains can be managed withing a single diskette.
That is top-key feature of spawnproc application stack.
Responsive
Our aim was to provide smallest possible minimalistic application
for PrivatBank customers, who are using deposit accounts.
We've created fast and robust responsive web application that
can fit any devices and provides modern secure features over the fast
WebSocket channel.
Fact: SSL page load is about 380ms from AWS ELB.
The uncompressed size of SPA static assests is also hyperoptmized:
Performant
Fact: the size is 2.1MB and boot time is 2s
Fact: it is easy to hold 20Mbps to the small AWS instance.
Fact: 3M of records consume 6GB of storage.
This is enought to put everything on ARM LING VM using 32GB SD-card
for storing 2.1MB of application bundle and 5MB or LING image.
The memory consumption could be limited to 8GB of RAM per 3M records.
Business Processes
In business process management the key feature of is a
compact process definitions. Here is example of Deposit Opening process
definition in simple and clean BPMN 2.0 aware language. The web application is an
client to ACT business process server, which hosts business process context.
All the processes can be executed in attached console without web application.
Thanks to compact process context the 1 million records of
process states consume only 1GB of storage.
Heart System Capacity
Having measured the capacity of WebSocket front-end, we also state that
performance of BPE engine and all PrivatBank service stack is outstanding.
Here is sample business process that involves most external heavy services.
For storm we are using wrk utility that can go far
beyond siege, httperf, ab and jmeter abilities.
BPE engine is settled as external REST service through our rest application.
BPE along with PrivatBank services can pass all steps for 500 customers
in 1 second on single Depository Application node.