To better understand some of the problems we face, it's useful to characterize some of the key attributes of Trading and eCommerce platforms. They tend to be:
- Use Middleware
- Worked on by Large teams
Let's take some time to look into each of these attributes.
These systems tend to be distributed. Meaning, that they run across a large number of physical machines, Client and Server processes spread across heterogeneous networks.
Service Oriented Architecture (SOA) is a useful abstraction to reason about components in a distributed environment. However, traditional SOA has a number of issues associated with it.
In such environments, Fault Tolerance becomes a prime concern. As the number of moving parts increases, the likelihood of a hardware, software or network failure increases dramatically.
In past times, Trading and eCommerce platforms would have a single, thick, desktop Client. These would generally be written in Java Swing, MFC, WinForms or more recently WPF. 5 years ago saw the rise of the RIA-based platforms leveraging the Flex and Silverlight plugins.
In the last couple of years, there has been another shift towards HTML5 and iOS and Android native applications. Users now expect applications to run on a number platforms and believe that they should have the same level of functionality and usability on each of them.
On the Server-side the story is the same with multiple technologies including Java, .Net, C++, and Complex Event Processing (CEP) engines.
These platforms tend to be Event-Driven. Meaning that, as opposed to the traditional batch-oriented systems in banking, events are pushed around the various components of the system. These events include market data, quotes, orders, fills etc.
Due to the Multi-Platform and Event-Driven nature of these platforms, they tend to utilize Message-oriented Middleware products. The reasons for this being that direct communications between all the processes across all the various technologies and to clients both inside and outside the bank is impractical.
Worked on by Large Teams
When so many technologies, processes and integration points are involved it becomes increasingly necessary for large teams, and even multiple, disparate teams, to work on the platform. This can slow down the rate of delivery due to communication issues and makes big bang releases of the entire platform increasingly difficult to coordinate.
This is the first blog in a series of posts about building Trading and eCommerce platforms. The posts that follow look at these attributes and highlight some of the solutions that we have adopted to address them.
The next post can be found here.
CCO and co-founder,
Adaptive Financial Consulting