마이크로서비스 생태계 구축: 주식 중개 시뮬레이터 (My Broker B3)
Source: Dev.to
안녕하세요, 여러분!
저는 My Broker B3 개발 과정을 기록하기 위해 일련의 글을 시작합니다. 이 개인 프로젝트는 고급 소프트웨어 엔지니어링 개념, 분산 시스템, 그리고 메시징을 적용하여 실제 증권 중개 업무를 시뮬레이션합니다. 주요 목표는 데이터 일관성, 저지연, 그리고 비동기 통신과 같은 과제를 처리하면서 간소화된 매칭 엔진을 통합하는 생태계를 만드는 것입니다.
시스템 아키텍처
프로젝트는 마이크로서비스 접근 방식을 따르며, 각 생태계의 강점을 활용하기 위해 하이브리드 스택을 사용합니다:
- Core Backend (Java/Spring Boot 3) – 주문(
broker-order-api), 지갑(broker-wallet-api), 그리고 자산 관리(broker-asset-api) API를 제공합니다. - Market Data (Python) – 스케줄러 작업을 통해 시장 데이터 수집을 관리하는 통합자(
broker-market-data-api)입니다. - Matching Engine (Java) – 브로커가 전송한 주문 실행을 처리하는 B3 시뮬레이터(
b3-matching-engine-api)입니다.
데이터 흐름 및 기술 스택
하이브리드 통신 전략을 통해 복원력과 확장성을 보장합니다.
Synchronous (REST)
주문 전송을 허용하기 전에 지갑 잔액을 검증하는 등 중요한 실시간 검증에 사용됩니다.
Asynchronous (Event‑Driven)
- Apache Kafka – 시장 시세와 자산 관련 이벤트를 배포하는 내부 이벤트 버스로 작동합니다.
- RabbitMQ – 전용 큐를 통해 브로커와 B3 시뮬레이터 간 통신을 관리합니다.
영속성 및 캐싱
각 서비스는 목적에 가장 적합한 데이터 저장소를 사용합니다.
| Technology | Use Case |
|---|---|
| MySQL / PostgreSQL | 트랜잭션 데이터, 주문, 그리고 지갑 히스토리. |
| MongoDB | Market Data API 내에서 시장 시세 히스토리(시계열 데이터) 저장. |
| Redis | 초고속 쿼리를 보장하기 위한 “핫” 캐시(시장 가격). |
Technical Draw

다음 단계는?
이 글은 시작에 불과합니다. 앞으로의 글에서는 다음을 자세히 다룰 예정입니다:
- Infrastructure – **AWS (Free Tier)**에 모든 리소스를 배포합니다.
- Messaging – Kafka와 RabbitMQ 설정에 대한 심층 분석.
- Technical Challenges – **점진적 일관성(eventual consistency)**과 매칭 엔진 처리 로직 다루기.
댓글에 자유롭게 피드백이나 질문을 남겨 주세요!