레거시 Win32/MFC 트레이딩 시스템은 왜 장 시작 9시에 멈추는가?
20년 넘게 진화해 온 대규모 Win32/MFC 데스크톱 트레이딩 플랫폼에서 개장 직후 초당 수만 건의 시세 폭주 시 발생하는 UI 프리징의 근본 원인을 아키텍처 레벨에서 해부합니다.
MFC 섹션에 발행된 전체 아티클 및 엔지니어링 노트 아카이브입니다.
20년 넘게 진화해 온 대규모 Win32/MFC 데스크톱 트레이딩 플랫폼에서 개장 직후 초당 수만 건의 시세 폭주 시 발생하는 UI 프리징의 근본 원인을 아키텍처 레벨에서 해부합니다.
증권사 대규모 HTS(홈트레이딩시스템)는 20년 이상 누적된 C++/MFC 코드베이스 위에서 작동합니다. 최근 실시간 시세 데이터 처리를 위해 도입한 신규 캐시 모듈을 탑재한 후, "화면을 아무것도 열지 않고 HTS 메인 창을 닫았는데도 작업 관리자에 프로세스가 영구 잔류하는 …
HTS(홈트레이딩시스템)와 같은 초고속 금융 소프트웨어에서 장 시작 직후나 급격한 시세 변동이 일어나는 '장 폭발' 순간, 초당 수천 건 이상의 실시간 패킷이 쏟아져 들어옵니다. 이때 수신부에서 매 패킷마다 화면 UI에 PostMessage를 날리면 윈도우 메시지 큐가 포화 상…
증권사 HTS/MTS, 금융 트레이딩 시스템 및 실시간 대용량 패킷 처리 엔진에서는 세미콜론(;)이나 쉼표(,)로 구분된 수백~수만 개의 종목 코드(Codes) 문자열을 1초에도 수십~수백 번씩 분리해야 하는 상황이 빈번합니다. 하지만 레거시 MFC 환경에서 무심코 사용하는 A…
MFC 개발 중 가장 자주 쓰는 함수 중 하나인 Invalidate(). 하지만 단순히 화면을 새로 그릴 때 무분별하게 호출하고 있지는 않으신가요? 보내주신 자료를 바탕으로, 불필요한 갱신을 줄이고 성능을 극대화하는 'Dirty Flag 패턴'의 핵심을 정리했습니다. 1. In…
최근 증권사 HTS(Home Trading System)의 차트 모듈(TeeChart) 버전을 마이그레이션하는 과정에서, C++ 개발자라면 누구나 뒷목을 잡을 만한 기괴한 버그와 맞닥뜨렸습니다. 화면 30~50개를 띄웠다가 '모든 화면 닫기' 기능으로 한꺼번에 종료할 때, 불특…