레거시 Win32/MFC 트레이딩 시스템은 왜 장 시작 9시에 멈추는가?
20년 넘게 진화해 온 대규모 Win32/MFC 데스크톱 트레이딩 플랫폼에서 개장 직후 초당 수만 건의 시세 폭주 시 발생하는 UI 프리징의 근본 원인을 아키텍처 레벨에서 해부합니다.
HTS 섹션에 발행된 전체 아티클 및 엔지니어링 노트 아카이브입니다.
20년 넘게 진화해 온 대규모 Win32/MFC 데스크톱 트레이딩 플랫폼에서 개장 직후 초당 수만 건의 시세 폭주 시 발생하는 UI 프리징의 근본 원인을 아키텍처 레벨에서 해부합니다.
증권사 대규모 HTS(홈트레이딩시스템)는 20년 이상 누적된 C++/MFC 코드베이스 위에서 작동합니다. 최근 실시간 시세 데이터 처리를 위해 도입한 신규 캐시 모듈을 탑재한 후, "화면을 아무것도 열지 않고 HTS 메인 창을 닫았는데도 작업 관리자에 프로세스가 영구 잔류하는 …
금융 HTS 및 고빈도 트레이딩(HFT) 시스템에서 시세 및 호가창 데이터는 나노초(ns) 단위로 읽히는 초저지연(Low-Latency)의 핵심 경로입니다. 기존의 std::map은 노드 기반 Red-Black Tree 구조로 인해 메모리 파편화와 잦은 캐시 미스(Cache M…
초저지연(Low-Latency)과 무결성이 생명인 금융 HTS(홈트레이딩시스템) 및 고빈도 트레이딩(HFT) 인프라에서 C++26은 가장 혁신적인 전환점을 제시합니다. 특히 언어 차원에서 표준화된 계약(Contracts - P2900)과 정적 리플렉션(Static Reflect…
HTS(홈트레이딩시스템)와 같은 초고속 금융 소프트웨어에서 장 시작 직후나 급격한 시세 변동이 일어나는 '장 폭발' 순간, 초당 수천 건 이상의 실시간 패킷이 쏟아져 들어옵니다. 이때 수신부에서 매 패킷마다 화면 UI에 PostMessage를 날리면 윈도우 메시지 큐가 포화 상…
증권사 HTS/MTS, 금융 트레이딩 시스템 및 실시간 대용량 패킷 처리 엔진에서는 세미콜론(;)이나 쉼표(,)로 구분된 수백~수만 개의 종목 코드(Codes) 문자열을 1초에도 수십~수백 번씩 분리해야 하는 상황이 빈번합니다. 하지만 레거시 MFC 환경에서 무심코 사용하는 A…
2026년 8월 22일 토요일, 대규모 C++ 프로젝트(HTS 클라이언트, 게임 서버/엔진, 금융 트레이딩 시스템 등)를 운영하다 보면 누구나 한 번쯤 마주하는 악몽 같은 상황이 있다. 운영 배포 후 며칠 뒤 고객사나 사용자로부터 긴급 크래시 덤프(Crash Dump, .dmp…
금융/증권 HTS 시스템이나 초고속 메시징 애플리케이션처럼 단 한 번의 예외 상황도 허용되지 않는 견고한 C++ 시스템을 구축할 때 가장 중요한 요소 중 하나는 프로세스 간 통신(IPC, Inter-Process Communication)과 OS 레벨의 메모리 수명 관리 원리입…
지난 글에서는 HTS 데이터 파이프라인의 병목 현상을 해결하기 위해 std::shared_ptr의 커스텀 디리터와 오브젝트 풀(Object Pool)을 결합한 Lock-free 아키텍처의 뼈대를 설계했습니다. 하지만 실제 증권사 실무 환경에서는 이보다 훨씬 복잡한 예외 상황들을…
최근 사내 HTS 프로그램의 아키텍처를 Direct2D와 멀티코어 병렬 처리 기반으로 모더나이징하는 작업을 구상하면서, 가장 깊게 고민했던 부분은 '데이터 파이프라인의 병목 현상'이었습니다. 실시간으로 수신되는 방대한 양의 시세 데이터를 여러 화면 컴포넌트들이 동시에 받아가서 …