Why Rust? 대규모 멀티차트 그리드를 60fps로 렌더링하기

JS 기반 차트의 한계를 넘어, egui/wgpu로 네이티브 성능을 확보한 과정을 공유합니다.

ENKO

시작은 단순했습니다. 먼저 Python으로 화면을 만들어봤습니다.

  • 5x5 그리드
  • 탭은 1개만 있는 구조

기능은 최소였지만 결과는 분명했습니다.
그 상태에서도 랙이 심했고, 컴퓨터 부하가 컸습니다.

문제는 “조금 더 최적화하면 되지 않을까"가 아니었습니다.
제가 실제로 풀어야 하는 문제의 스케일이 달랐습니다.

왜 스케일이 핵심이었나

제가 필요한 건 수십 종목 감시가 아니라 수백~1천개 규모 감시였습니다.
여기서 핵심은 “전부 자세히 보기"가 아니었습니다.

핵심은 신호 증류였습니다.

  • 전체 장을 먼저 넓게 본다
  • 그다음 단계에서 “지금 봐야 할 것"만 필터링한다

즉, 필터는 첫 단계가 아니라 두 번째 단계였습니다.
첫 단계(전체 장 스캔)가 버벅이면, 두 번째 단계는 시작조차 할 수 없습니다.

그래서 Rust를 선택했다

기술 선택 기준도 자연스럽게 바뀌었습니다.

  • 한 화면이 “돌아가느냐”
  • 기능이 “몇 개 있느냐”

이 기준이 아니라,

  • 전체 장 스캔이 반복 가능하냐
  • 스캔에서 후보 압축까지 흐름이 끊기지 않냐

를 기준으로 보게 되었습니다.

Python 프로토타입은 문제를 확인하는 데에는 충분했지만,
제가 원하는 워크플로우(전체 장 -> 신호 증류)를 안정적으로 굴리기에는 한계가 있었습니다.

그래서 Rust로 갔습니다.

Rust를 선택한 이유는 “더 멋져 보여서"가 아니라,
전체 장에서 어떤 것을 봐야 할지 정하고, 그 뒤에 필터를 적용하는 실제 운영 흐름을 버틸 수 있게 만들기 위해서였습니다.

Built with Hugo & Rust enthusiasm.
Hugo로 만듦
JimmyStack 테마 사용 중