A comprehensive series roadmap for developing a financial ecosystem simulator using Java, Python, Kafka, and MongoDB, demonstrating distributed systems principles through a stock brokerage simulation.
Welcome to the official index for the My Broker B3 series. This post serves as a central hub where I organize all the articles about this financial ecosystem's development in the ideal reading order. This project is a hands-on lab where I apply software engineering, distributed systems, and messaging to simulate the integration between a Brokerage and the Stock Exchange. 🚀
Series Articles
Project Overview
Introduction to the macro architecture, tech stack (Java, Python, Kafka, RabbitMQ), and the simulator's goals.
This foundational article sets the stage for the entire series, explaining why building a stock brokerage simulator makes an excellent learning platform for distributed systems concepts. The project aims to recreate the complex interactions between brokers, exchanges, and market data providers in a controlled environment.
Key learning objectives:
- Understanding financial market architecture
- Identifying system boundaries and domains
- Selecting appropriate technologies for different services
- Planning for scalability and fault tolerance
Infrastructure with Docker Compose
How I deployed 12 containers (SQL, NoSQL, Cache, and Messaging) ensuring domain isolation and .env best practices.
This article dives into the container orchestration that forms the backbone of the simulator. With 12 distinct services running in isolation, the infrastructure demonstrates real-world patterns for managing polyglot persistence and communication layers.
Infrastructure highlights:
- PostgreSQL for transactional data
- MongoDB for market data and time-series storage
- Redis for caching and session management
- Kafka for event streaming
- RabbitMQ for traditional messaging patterns
- Separate services for authentication, user management, and trading
Market Data: The Python, MongoDB, and Kafka Integrator
How I built the ingestion service that consumes the Brappi API, ensures historical persistence in MongoDB, and uses Kafka keys to guarantee message ordering per asset.
This article showcases the critical market data pipeline that feeds the entire simulation. The integration with Brappi API demonstrates real-world data ingestion patterns, while the use of Kafka keys for message ordering per asset illustrates an important distributed systems concept.
Technical insights:
- Kafka partitioning strategies for ordered processing
- MongoDB's document model for flexible market data storage
- Python's async capabilities for high-throughput ingestion
- Error handling and retry mechanisms for external API dependencies
Architecture Philosophy
The simulator follows a microservices approach that mirrors real financial systems:

Domain-driven design principles:
- Clear service boundaries based on business capabilities
- Event-driven communication between services
- Eventual consistency for performance
- Circuit breakers and fallback mechanisms
Why this architecture matters:
- Demonstrates how to handle high-throughput, low-latency requirements
- Shows the complexity of maintaining data consistency across services
- Illustrates the trade-offs between synchronous and asynchronous communication
- Provides a safe environment to experiment with failure scenarios
Technology Stack Deep Dive
Java Services
- Spring Boot for rapid development
- JPA/Hibernate for database interactions
- Resilience4j for fault tolerance
- OpenFeign for HTTP client operations
Python Services
- FastAPI for high-performance APIs
- AsyncIO for concurrent operations
- Pydantic for data validation
- Motor for MongoDB async operations
Messaging Infrastructure
- Kafka for event streaming and log aggregation
- RabbitMQ for request/reply patterns and task queues
- Kafka Connect for external system integration
Data Persistence
- PostgreSQL for ACID transactions and relational data
- MongoDB for flexible schema and time-series data
- Redis for caching and real-time state
Learning Path
This series is designed to progressively build your understanding of distributed systems:
- Foundations: Understanding the problem domain and architectural patterns
- Infrastructure: Setting up the development and production environments
- Data Ingestion: Building reliable data pipelines
- Core Services: Implementing business logic with proper isolation
- Integration: Connecting services with appropriate communication patterns
- Monitoring: Adding observability and debugging capabilities
- Scaling: Understanding performance bottlenecks and optimization strategies
Connect and Contribute
As the series progresses, I'll be adding more articles covering topics like:
- Trading engine implementation
- Order matching algorithms
- Real-time market data distribution
- User interface development
- Performance testing and optimization
- Security and compliance features
Connect with me:
Related Resources
For developers interested in building AI-powered applications with similar architectural patterns, check out MongoDB Atlas, which bundles vector search and a flexible document model. This allows developers to build, scale, and run gen AI apps without juggling multiple databases.

MongoDB Atlas streamlines AI architecture by providing:
- Integrated vector search capabilities
- Flexible document model for diverse data types
- Built-in scalability and performance features
- Simplified development workflow
Whether you're building a stock brokerage simulator or the next generation of AI applications, understanding distributed systems principles and choosing the right technology stack are crucial for success.

This series will continue to evolve as new articles are published, providing a comprehensive resource for anyone looking to master microservices architecture through a practical, engaging project.

Comments
Please log in or register to join the discussion