Modular Monolith Architecture
Application follows a modular monolith architecture, where the system is organized into distinct, self-contained modules. Each module owns its own database and is responsible for its domain’s data, ensuring domain/data ownership-a key microservices principle. This structure allows for independent development, testing, and maintenance of each module, while the application is deployed as a single unit.
Although the system is currently a modular monolith, it incorporates microservices principles from the start. Modules communicate through well-defined interfaces and asynchronous messaging, ensuring loose coupling. This design provides the flexibility to extract and scale modules independently when needed, combining the simplicity of a monolith with the scalability of microservices.
In the initial phase, the entire application is structured as a modular monolith. All the functional components, such as the Customer, Scheduler, and Auction modules, are part of a single application but maintain a clear separation of concerns. This structure allows for seamless internal communication and shared resources, providing efficiency and consistency in development.
Interoperability
Our architecture is designed with strong interoperability in mind, enabling seamless integration and communication across different systems and protocols. Whether it's internal communication through OpenFin's bus, allowing various OpenFin applications to interact, or external communication via the industry-standard FIX protocol, the system ensures robust connectivity and flexibility. This allows for smooth collaboration and data exchange, regardless of the underlying platform. For instance, the system can integrate with Portfolio Manager applications and Order Management Systems (OMS), enabling it to receive data and provide trade reporting back to these platforms. This enhances the overall trading workflow by allowing for real-time data exchange and streamlined trade processing.