Architecture and Design
Alivia team works with clients and customers designing modular, scalable, extensible architectures for high performance real time trading systems, large scale transaction systems and architectures for enterprise systems management that can be accessed via web or mobile devices.
We have significant expertise and intellectual property in the areas of enterprise architecture design, systems engineering and building design platforms and software product lines that are now used by the largest financial institutions in the world.
Summary of Technical Design Process
The technical design starts by defining the modules that will make up the customer solution and potential components that will fit the needs of these modules. We first look at the high risk components of the architecture and develop quick prototypes to validate the functional components. As an example, most trading applications need real time updates, we will validate the publish and subscribe engine that is selected works properly with the other the UI and back end tools selected.
The foundation of an architecture is the data that it stores or holds in memory and flows through the system. The data model is then defined and documented insuring a logical naming convention for each group of tables or structures defined. Once this is done, the entity classes are defined that drive the storing or retrieval of the records in the data store. Each entity class or groups of entities are then wrapped with interfaces to enable loose coupling of modules enabling easy functional extensibility without significantly affecting other modules.
The next step is to develop the object interaction diagrams that captures the dynamics between the classes defined. The last step is to take any UI developed in the prototype process and define in detail every field, the type of field, valid valued for the field, any validation logic or special processing logic.
The scalability portion of the technical design is often archived by vertical, horizontal and depth wise scalability. The vertical scalability is achieved by designing classes that can utilize all the CPU power of the machine they run on, typically achieved by multithreading the modules. Horizontal scalability is archived by allowing one or more copies of a module to run across one or more machines. This is typically archived by keeping stateless objects that can easily be processed across machines as well a queuing systems to enable the easy processing of the requests without losing a single message. Depth wise scalability is usually achieved by partitioning the messages by data type. As an example this allows the trading of a single stock symbol like Apple (AAPL) across a cluster of machines dedicated for the AAPL symbol enabling exchange level transaction volume support.
This process of technical design allows developers to follow tried and true software architecture techniques to produce outstanding software applications every time they are built.