TIL

13장 증권 거래소

1단계: 문제 이해 및 설계 범위 확정

2단계 개략적 설계안 제시 및 동위 구하기

용어 정리

개략적 설계안

graph LR
    Broker["브로커"]
    CGW["클라이언트 게이트웨이"]
    OM["주문 관리자"]
    Wallet["지갑 (주문 관리자 내부)"]
    Seq["시퀸서"]
    RM["위험 관리자"]
    ME["체결 엔진"]

    Broker -->|1.주문 요청| CGW
    CGW -->|2.유효성 검사 후 주문 전달| OM
    OM -->|3.위험성 점검 요청| RM
    RM -->|4.위험성 검증 결과| OM
    OM -->|5.자금 확인| Wallet
    OM -->|6.주문 전송| Seq
    Seq -->|7.주문 전달| ME

graph LR
    ME["체결 엔진"]
    MDP["시장 데이터 게시 서비스"]
    DS["데이터 서비스"]
    Broker["브로커"]

    %% M1. 체결 엔진 → 시장 데이터 게시 서비스
    ME -->|M1. 집행 기록 스트림| MDP

    %% M2. 시장 데이터 게시 서비스 → 데이터 서비스
    MDP -->|M2. 봉 차트/호가 창 데이터| DS

    %% M3. 브로커 → 데이터 서비스 → 고객
    DS -->|M3. 실시간 시장 데이터| Broker

graph LR
  OM["주문 관리자"]
  RS["보고 서비스"]
  DB["DB"]
  Seq["시퀸서"]
  ME["체결 엔진"]

  ME -->|집행 기록 전송| Seq
  Seq -->|집행 기록 전달| OM
  OM -->|R1. 주문 및 실행 기록| RS
  RS -->|R2. 종합 레코드| DB

거래 흐름

데이터 모델

class PriceLevel(
	private val limitPrice: Price,
	private val totalVolume: Long,
	private val orders: List<Order>,
)

class Book<Side>(
	private val  side: Side,
	private val limitMap: Map<Price, PriceLevel>,
)

class OrderBook(
	private val buyBook: Book<Buy>,
	private val sellBook: Book<Sell>,
	private val bestBid: PriceLevel,
	private val bestOffer: PriceLevel,
	private val orderMap: Map<OrderID, Order>,
)
class Candlestick(
	private val openPrice: Long,
	private val closePrice: Long,
	private val highPrice: Long,
	private val lowPrice: Long,
	private val volume: Long,
	private val timestamp: Long,
	private val interval: Int,
)

class CandlestickChart(
	private val sticks: List<Candlestick>
)

3단계: 상세 설계

성능

flowchart TB

subgraph 단일서버
    subgraph 주문관리자
        주문관리자루프[["애플리케이션 루프"]]
    end
    subgraph 체결엔진
        체결엔진루프[["애플리케이션 루프"]]
    end
    subgraph 시장데이터게시서비스
        시장데이터루프[["애플리케이션 루프"]]
    end
    mmap["mmap"]
    보고서비스["보고 서비스"]
    로깅["로깅"]
    종합위험점검["종합 위험 점검"]
    위치키퍼["위치키퍼"]
end

주문관리자 <--> mmap
체결엔진 <--> mmap
시장데이터게시서비스 <--> mmap

mmap <--> 보고서비스
mmap <--> 로깅
mmap <--> 종합위험점검
mmap <--> 위치키퍼

이벤트 소싱

고가용성

결함 내성

체결 알고리즘

결정론

시장 데이터 게시 서비스 최적화

시장 데이터의 공정한 배포

코로케이션

네트워크 보안