TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 29 READS

OCaml로 웹 UI를 만든다고? 트레이딩 회사 Jane Street의 Bonsai 이야기

OCaml로 웹 UI를 만든다고? 트레이딩 회사 Jane Street의 Bonsai 이야기
SOURCE IMAGE · HACKER NEWS
OCaml로 웹 UI를 만든다고? 트레이딩 회사 Jane Street의 Bonsai 이야기

OCaml이라는 언어, 이름은 들어봤는데 실제로 쓰는 곳은 못 봤다는 분 많으실 거예요. 그런데 이 언어로 회사 전체 시스템을 돌리는 곳이 있어요. 세계 최대급 퀀트 트레이딩 회사인 Jane Street인데요, 초단타 매매 시스템부터 사내 도구까지 거의 모든 코드를 OCaml로 작성하는 걸로 유명한 곳이에요. 그런 회사가 웹 UI마저 OCaml로 만들 수 있게 해주는 라이브러리 Bonsai를 오픈소스로 공개해 뒀거든요. "아니, React 쓰면 되지 왜 굳이?"라는 생각이 들 텐데, 그 이유를 들여다보면 프론트엔드의 미래 흐름과 맞닿아 있어서 재미있어요.

핵심은 '바뀐 것만 다시 계산하기'

Bonsai의 심장은 인크리멘털 계산(incremental computation)이에요. 이게 뭐냐면, 엑셀을 떠올리면 딱이에요. 엑셀에서 A1 셀 값을 바꾸면 A1을 참조하는 셀들만 다시 계산되잖아요. 시트 전체를 처음부터 다시 계산하지 않죠. Bonsai는 UI를 이런 계산 그래프로 만들어요. Jane Street이 만든 Incremental이라는 라이브러리가 밑바탕인데, 어떤 값이 어떤 값에 의존하는지를 그래프로 관리하다가 입력이 바뀌면 영향받는 노드만 다시 계산하는 방식이에요.

React와 비교하면 차이가 선명해져요. React는 상태가 바뀌면 해당 컴포넌트 함수를 통째로 다시 실행하고, 가상 DOM(화면의 메모리 복사본)을 새로 만들어 이전 것과 비교한 뒤 달라진 부분을 반영해요. "일단 다 다시 그려보고 차이를 찾는" 방식이죠. 반면 Bonsai는 애초에 무엇이 무엇에 의존하는지 알고 있으니 전체 비교 과정 자체가 필요 없어요. 트레이딩 화면처럼 초당 수천 건씩 시세 데이터가 쏟아져 들어오는데 그중 화면에 반영해야 할 건 일부인 상황에서, 이 차이는 그냥 취향 문제가 아니라 생존 문제가 되거든요. Jane Street이 직접 만든 이유가 여기 있어요.

또 하나의 무기는 타입 시스템이에요. OCaml은 컴파일러가 타입을 아주 깐깐하게 검사하는 언어라서, 컴파일만 통과하면 런타임 오류의 상당 부분이 원천 차단돼요. 작성한 OCaml 코드는 js_of_ocaml이라는 도구로 JavaScript로 컴파일되어 브라우저에서 돌아가고요. TypeScript보다 훨씬 엄격한 타입 검사를 통과한 코드가 브라우저에서 실행되는 셈이에요. 컴포넌트도 순수 함수와 상태 기계의 조합으로 구성돼서, 브라우저 없이도 로직을 테스트하기 좋게 설계되어 있어요.

업계 흐름 속에서 보면

사실 이 아이디어 자체는 Bonsai만의 것이 아니에요. 함수형 UI의 원조 격인 Elm이 비슷한 철학을 먼저 보여줬고, 최근 프론트엔드의 최대 화두인 시그널(signal)도 결국 같은 뿌리거든요. SolidJS, Preact Signals, Svelte 5의 runes, 심지어 Angular까지 시그널을 도입했는데, 시그널이란 게 바로 "값의 의존 관계를 추적해서 바뀐 것만 다시 계산한다"는 인크리멘털 계산의 사촌이에요. 업계 전체가 가상 DOM에서 의존성 추적 방식으로 이동하는 중인데, Jane Street은 이 길을 훨씬 전부터 걸어온 셈이죠. 참고로 이 회사는 Core, Async 같은 OCaml 표준 라이브러리 대체재도 꾸준히 내놓는, OCaml 생태계의 최대 후원자이기도 해요.

한국 개발자에게 주는 시사점

솔직히 말하면, 한국 실무에서 OCaml로 웹 UI를 만들 일은 거의 없을 거예요. 채용 시장도, 생태계도 React가 압도적이니까요. 그런데도 Bonsai를 들여다볼 가치가 있는 이유는 두 가지예요. 첫째, 지금 여러분이 쓰거나 곧 쓰게 될 시그널 기반 프레임워크의 원리를 가장 순수한 형태로 보여주거든요. 개념의 뿌리를 이해하면 도구가 바뀌어도 흔들리지 않아요. 둘째, 실시간 대시보드나 관제 시스템처럼 데이터가 쉴 새 없이 흘러드는 화면을 설계할 때, "전부 다시 그리기"가 아니라 "의존 관계 기반 갱신"으로 사고하는 훈련이 돼요. 이건 React로 개발할 때도 구조 설계에 그대로 써먹을 수 있는 감각이에요.

한 줄 정리: Bonsai는 '바뀐 것만 다시 계산한다'는 원리를 극한까지 밀어붙인 UI 라이브러리이고, 지금 프론트엔드가 향하는 방향을 먼저 가 있는 이정표예요.

여러분은 어떠세요? 메인스트림에서 벗어난 기술 스택을 깊게 파보는 경험, 커리어에 도움이 됐던 적 있으신가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/janestreet/bonsai
SHARE
처리 중...