문제의 규모를 짐작해보자.
NYSE는 하루에 수십 억 건의 거래를, HKEX는 하루에 약 2천억 건의 주식 거래를 처리하고 있다.
1단계: 문제 이해 및 설계 범위 확정
현대적인 증권 거래소는 지연 시간, 처리량, 안정성에 대한 요구사항이 엄격한 아주 복잡한 시스템이다.
기능 요구사항
- 새 주문 넣기
- 체결되지 않은 주문은 취소 가능
- 지정가 주문만 가능
- 시간 내 거래만 가능
- 체결 주문 실시간 알림
- 호가 창(매수 및 매도 주문 목록) 실시간 갱신
- 최소 수만 명 사용자가 동시 거래 가능
- 최소 100가지 주식 거래 가능
- 하루에 수십억 건의 거래량 발생
- 위험성 점검
- 특정 규칙에 대해 위반하지 않게 점검(예, 한 사용자가 하루에 거래할 수 있는 애플 주식은 백만 주 이하)
- 주문 전에 충분한 자금이 있는지 확인
- 체결되지 않은 주문이 있는 경우, 해당 주문에 이용된 자금은 다른 주문에 쓰일 수 없어야 함
비기능 요구사항
- 가용성: 최소 99.99%
- 결함 내성: 결함 내성과 빠른 복구 메커니즘
- 지연 시간: 왕복 지연 시간은 밀리초 수준이어야 하고, 특히 p99(99th 백분위수) 지연 시간이 중요. 여기서 왕복 지연 시간은 주문이 거래소에 들어오는 순간부터 주문의 체결 사실이 반환되는 시점까지.
- 보안: 거래소는 계정 관리 시스템을 갖추어야함. 법률 및 규정 준수를 위해 거래소는 새 계좌 개설 전에 사용자 신원 확인을 위한 KYC(Know Your Client) 확인을 수행해야함. DDoS 공격을 방지하는 장치를 구비해두어야 함.
개략적 규모 추정
- 100가지 주식
- 하루 수십억 건의 거래량
- 오전 9시 30분부터 오후 4시까지 총 6.5시간 영업.
- QPS: 10억/(6.5*3600)=43000
- 최대 QPS: 5*QPS=215000. 거래량은 장 시작 직후, 그리고 장 마감 직전에 훨씬 높다.
2단계: 개략적 설계안 제시 및 동의 구하기
'기타' 카테고리의 다른 글
[MSA] 마이크로서비스 처음 사용 시 활성화 기술 (0) | 2025.04.03 |
---|---|
[MSA] 마이크로서비스의 핵심 개념 (0) | 2025.04.03 |
[MSA] 마이크로서비스의 정보 은닉(feat. SOA) (0) | 2025.04.03 |
[npm] npm 버전 하나 올리는 명령어 (0) | 2025.04.02 |
Conventional Commit Rules (0) | 2025.02.23 |
댓글