Technology

Is your legacy eTrading infrastructure inherently slow?

Ours isn’t.

We use several technologies and methodologies to provide the highest performance for eTrading:


Simple Binary Encoding (SBE)

What is SBE?
A standard for encoding and decoding FIX and other application protocols in Binary format.

What does SBE do?

  1. Fast encoding /decoding of messages at presentation layer
  2. Makes use of native CPU level instructions
  3. Precision of Decimal numbers/time stamps in native binary format
  4. Differentiates fixed length character arrays from variable length strings
  5. Preference for fixed position/fixed length fields

How Fast is SBE?
30 Million + messages encoded/decoded on a single thread per second

Average Latency?
30 nanoS per message

What is a Nano Second?
1 billionth of a second
= 0.000 000 001 seconds

Why SBE?

  1. Encoding/Decoding messages often uses more CPU time than business logic
  2. FIX requires management of heaps of variable length elements which must be sequentially processed
  3. SBE’s fixed length fields can be processed much quicker
  4. Using binary also keeps bandwidth down when sending messages over a WAN

Aeron for high performance messaging

What is Aeron?
A fast, efficient, reliable UDP message transport

What does Aeron do?
Very fast market data throughput via UDP but also adds the features of Ordering, Reliability, Flow Control that TCP provides

How Fast is Aeron?
20 Million messages/sec

Why Aeron?
Whilst reliable, TCP is slower. UDP is fast but not reliable. Aeron provides Fast and Reliable messaging.

Disruptor to ensure non-blocking between threads

  • Queues (Buffers) are taking longer than Business Logic
  • Need queues to pass concurrent tasks between cores
  • Queues suck because cores will contend for same data element
  • Contention causes locks which cause delays while resolving

What is Disruptor?
High Performance Mechanism for Inter Thread Messaging

What does Disruptor do?
Non Blocking Ring Buffer
No Contention when accessing buffer Enables Concurrent tasks without Blocking

Why Disruptor?
In Capital Markets we need to be fast but we also need to complete parallel tasks e.g. Replicate/journal for Regulatory, Risk/Credit checks

Continuous Delivery

What is Continuous Delivery?

  1. Satisfy the customer through early and Continuous Delivery of Valuable Software
  2. First Principle of the Agile Manifesto - Done means released
  3. Create a repeatable, reliable process for releasing software

How do we create a repeatable/reliable process?

  1. Build pipeline
  2. Everything in version control
  3. Every commit creates a release candidate
  4. Executable Spec – ATDD
  5. Build Quality In
  6. Automate almost everything
  7. Keep mainline always releasable

Why Continuous Delivery?

  1. We can release to production weekly
  2. We can build software quicker
  3. We can respond to changing customer requirements

Acceptance Test Driven Development

  1. Integration and Unit tests to evaluate components of code
  2. Tests are running continuously
  3. If Acceptance Tests fail the production line stops!
  4. Acceptance Tests against stub
  5. Compatibility Tests against venue UAT environment
  6. Single Source Tree
  7. Release to production every 2 weeks
  8. Integration and Unit tests to evaluate components of code