The Evolution of Single-Dealer Platform Technology

As pioneers of streaming web technology, the team at Caplin are often asked to detail the pros and cons of the many approaches available that allow you to stream data to clients from a server.

Having developed one the world's first data streaming web servers in the late 1990's, we have spent the past decade delivering our technology to banks and other financial services institutions, and along the way we've poured over 120 man-years of engineering work into the technology.  When asked to present a product overview for several industry analysts, we came up with the "generations" approach, which we use to explain the differentiators between various approaches to streaming, and evolution of the technology itself.

In this article we'll explain the evolution of streaming web technology from the first to third generation.  We will explain the significance of the level of coupling between the client and the server, as well as the importance of domain-driven design for applications used within financial services. Mountain showing three generations of web technology

First generation

In the late 1990's Caplin was one of very few companies developing data stream web servers, but these days, basic streaming web servers are widely available. Most of these servers use what we consider to be first generation technology, which is designed to stream raw data to a web browser. 

This generation of technology has no way of handling replies and simply keeps the HTTP connection to the server open and manages a large number of concurrent sockets efficiently. Taking a first generation approach also means that there is a high level of coupling between the client and server, which can lead to unnecessary complications as the application scales and develops.

First generation systems were not designed specifically with the financial services domain in mind, and are applied to across various markets sectors.

Second generation

The second generation of technology uses object remoting techniques to replicate objects within the banks systems at the client, so operations performed at the client are directly passed to the equivalent object on the server. This has the advantage of simplicity, but once again tightly couples the client with the server.

Object remoting attempts to abstract away the fact that a client is talking to a server over a network. The client has an object that is a proxy for an object on the server (or vice versa) and allows method calls to be made on the remote objects.

Object remoting also requires all objects to be passed back and forth so there's no opportunity for optimisation and scalability may become difficult because of the bandwidth requirements. Potentially there are security issues and resilience can be problematic because the tight coupling does not allow for reconnection in the event of a fail-over.

While second generation systems are often implemented within the financial services industry they are not specifically designed with the domain in mind.  However, if the second generation technology is aimed at a generic market where it could be used for all sorts of point solutions, then there are many advantages of the object based approaches. Less time is spent creating and parsing messages to and from objects, which could be complex if you need to represent advanced structures. This means you don't have to implement possibly inefficient and error prone code to do something fairly generic.

Third generation

Third generation systems such as Caplin Xaqua are specifically designed for trading applications. These systems provide abstract domain-specific objects implemented using an "anti-corruption layer" that normalises all trading, pricing and permissioning data and allows the client to be de-coupled from the providing systems whilst still being built on their models and workflows.

In a third generation system, de-coupling effectively segregates a bank's actual trading system from their single-dealer portal, which ensures that the trading system is not affected by anything on the client-side. Objects are mapped, filtered, sorted and normalised. This enables performance optimisation, fail-over handling and flexibility in adding new business models, clients and workflows without having to rebuild entirely parallel infrastructures.

Third generation systems are applications developed specifically for the financial markets and feature embedded pricing, trading workflow and permissioning and tiering models. In addition, when adding new products and business logic to a third generation system, users are able to configure the system to match their own workflow quickly and easily.

Third generation products understands the financial services domain, but leave you enough room to configure your own solution to deliver customised business logic to your end-users. You can concentrate on adding business value, creating something your users really need - something they will come back to and use over and over again.