레거시 Win32/MFC 트레이딩 시스템은 왜 장 시작 9시에 멈추는가?
20년 넘게 진화해 온 대규모 Win32/MFC 데스크톱 트레이딩 플랫폼에서 개장 직후 초당 수만 건의 시세 폭주 시 발생하는 UI 프리징의 근본 원인을 아키텍처 레벨에서 해부합니다.
CPP 섹션에 발행된 전체 아티클 및 엔지니어링 노트 아카이브입니다.
20년 넘게 진화해 온 대규모 Win32/MFC 데스크톱 트레이딩 플랫폼에서 개장 직후 초당 수만 건의 시세 폭주 시 발생하는 UI 프리징의 근본 원인을 아키텍처 레벨에서 해부합니다.
초당 수만 건의 실시간 시세 쓰기와 수십 개 화면의 동시 읽기가 충돌하지 않도록 종목 해시 기반 샤딩(Sharding)과 Lock-Free RCU(Read-Copy-Update) 스냅샷 슬롯을 구현한 과정을 다룹니다.
정규 거래소와 대체거래소(ATS)의 호가·체결 스트림을 실시간으로 정합성 있게 합성하고, 멀티 워커 환경에서 예상체결↔실제체결 및 초기 조회(RQ)↔실시간(Pub/Sub) 간 순서 역전을 방지한 상태 투영(State Projection) 설계를 소개합니다.
화면 전용 워커(ScreenWorker)를 통한 28개 파생 문자열 사전 포맷팅, 종목별 더티 코얼레싱(Dirty Coalescing), 적응형 주사율 쓰로틀링(RefreshPolicy), 그리고 초당 수천 건의 체결 스트림을 O(1)로 처리하는 가상 그리드(VirtualGri…
실전 개장 계측에서 발견된 3대 잔여 병목(초당 423건 윈도우 메시지 스톰, ActiveX 호가창 COM 오버헤드, 60분할 멀티 시세판의 1초 갱신 지연)을 In-Flight Latch, COM Redraw 배칭, 영속 백버퍼 클리핑과 스케줄러 튜닝으로 해결한 실전 기록입니다.
개장 피크 구간(540초) AS-IS 대비 TO-BE의 실제 프로파일링 성적표를 공개하고, 레거시 시스템에 대규모 신규 엔진을 리스크 없이 이식하기 위한 Dual-Path 아키텍처와 엔지니어링 교훈을 정리합니다.
증권사 대규모 HTS(홈트레이딩시스템)는 20년 이상 누적된 C++/MFC 코드베이스 위에서 작동합니다. 최근 실시간 시세 데이터 처리를 위해 도입한 신규 캐시 모듈을 탑재한 후, "화면을 아무것도 열지 않고 HTS 메인 창을 닫았는데도 작업 관리자에 프로세스가 영구 잔류하는 …
C++에서 객체를 파일이나 네트워크 패킷, JSON 포맷으로 변환하는 직렬화(Serialization) 작업은 언제나 고통스러운 타협의 연속이었습니다. 복잡한 매크로를 클래스 내부에 강제 삽입(Intrusive)하거나, 별도의 외부 스키마 파일(.proto, .fbs)을 작성해…
금융 HTS 및 고빈도 트레이딩(HFT) 시스템에서 시세 및 호가창 데이터는 나노초(ns) 단위로 읽히는 초저지연(Low-Latency)의 핵심 경로입니다. 기존의 std::map은 노드 기반 Red-Black Tree 구조로 인해 메모리 파편화와 잦은 캐시 미스(Cache M…
C++에서 비동기 및 병렬 처리는 오랫동안 개발자들을 괴롭혀온 난제였습니다. std::thread, std::future, std::promise는 힙 메모리 할당 강제, 비동기 작업의 합성(Composition) 불가, 스레드 블로킹, 취소(Cancellation) 메커니즘의…