Rust에 10년간 베팅한 이야기

1 day ago 3

  • Rust 1.0 출시 직후부터 10년간 Rust를 실무에 도입한 경험과 앞으로의 10년에 대한 기대를 정리한 글
  • 초창기에는 버전 호환성 문제와 빌드 시간, 빌림 검사기(borrow checker) 적응이 어려웠음
  • Rust 커뮤니티와 생태계는 “탁월한 프로그래밍 감각”과 강한 공동체 문화로 인해 빠르게 발전했으며, 뛰어난 개발자들이 Rust로 모여드는 현상이 두드러짐
  • 이제는 일반 시스템 및 백엔드 분야에서 Rust가 “안정적인 선택” 이 되었으며, 표준 라이브러리의 발전과 크레이트 생태계의 성숙으로 인해 불확실성이 크게 줄었음
  • 빌드 속도, 이식성, const 기능, 동시성, 다양한 도메인 확장 등 Rust가 해결해야 할 남은 과제와 발전 방향을 구체적으로 제시함
  • 앞으로의 10년은 더 빠른 컴파일, 광범위한 도메인 확장, 개발자 경험의 혁신이 이어질 것으로 전망하며, Rust 생태계의 긍정적 피드백 루프가 가속화될 것이라고 기대함

  • 2015년 6월, Rust 1.0 공개의 열기가 식어가는 한달 후쯤에 첫번째 Rust 코드를 작성함
  • C, Python, JavaScript를 사용해오다 Rust를 접한 이후, 다시는 돌아보지 않게 됨
  • Rust 기반의 스타트업 두 곳, 50만 줄 이상의 코드를 작성했던 경험을 기반으로 10년의 성찰을 공유함

초창기는 힘겨운 시간 - The early days were painful

  • 초기 Rust 도입 시, 크레이트와 컴파일러 간 버전 호환성이 매우 불안정했으며, 작은 버그 픽스에도 전체 빌드 환경을 강제로 업데이트하는 일이 많았음
  • 빌림 검사기(‘borrow checker’)의 개념과 라이프타임 관리가 어렵게 느껴졌으며, 복잡한 타입이 늘어날수록 컴파일 시간이 급격히 늘어나는 문제가 심각했음
  • 새로운 기능이나 버그 픽스가 필요할 때마다 “세상의 모든 버전”을 업데이트해야 했으며, 호환 가능한 버전을 찾는 데 많은 시간을 소비해야 했음

Rust 커뮤니티의 탁월함 - The people were and are exceptional

  • Rust 생태계는 단순하고 우아한 구현, 빠르고 견고한 성능을 지향하는 탁월한 프로그래밍 문화가 자리잡았음
  • TypeScript나 Python을 쓸 때보다 Rust의 의존성 구조가 훨씬 깔끔하고 빌드가 단순
  • 커뮤니티 자원봉사자들의 헌신적인 기여와 “지금은 아니다/아직 아니다”라는 신중한 태도가 핵심적 역할을 함
  • 런던에서 Rust 개발자 구인에 큰 이점이 있었으며, Rust 개발자의 평균 역량이 매우 높음

Rust, (몇몇 도메인에선) 안전한 선택지가 됨 - Rust has become a safe bet (in some domains)

  • 초창기에는 표준 라이브러리(std)의 부재로 인해 직접 유틸리티 함수와 패치를 만들어야 했으나, 이제는 대부분의 기능이 std와 크레이트에 내장되어 불확실성이 크게 감소함
  • 빌드와 업그레이드 예측 가능성, 외부 의존성 감소, semver 준수, 빌림 검사기와 추론 엔진 개선 등으로 Rust 사용 경험이 대폭 안정화됨
  • 신규 크레이트(예: jiff, polars, tauri)는 과거의 시행착오를 기반으로 개발되고, tokio, hyper, regex 등은 실전에서 검증됨
  • 과거에는 “바퀴 재발명”이 불가피했지만, 지금은 비즈니스 로직에 집중해 고성능/견고한 애플리케이션 개발이 가능해짐

오늘날의 Rust가 보여주는 개발 환경 - Rust today feels like what programming should be

  • Rust는 간결하고 견고한 빌드 시스템, 최고의 에러 메시지와 린트, 훌륭한 문서와 IDE 통합, 강력한 CI/회귀 테스트 등 프로그래머 중심의 공감 능력을 갖춘 언어임
  • 대규모 오픈소스 프로젝트 중 Rust만큼 프로그래머 친화적인 언어는 드뭄
  • 수많은 커뮤니티와 기여자들의 “장기적 투자”가 현재의 Rust를 만든 핵심 요인

향후 10년에 대한 기대 - What I’m looking forward to over the next 10 years

더 단순하고 빠른 빌드 - Simpler and faster builds

  • 복잡하거나 느린 의존성을 단순하고 빠른 것으로 대체하는 작업이 계속될 것으로 기대
  • 순수 Rust 표준 라이브러리, 시스템 linker와 라이브러리 의존성 감소, pure-Rust 암호화, 영속 BTreeMap, Rust 기반 게임 엔진 등 새로운 시도가 기대됨
  • Tably에서도 최근 수개월간 프론트엔드/백엔드 컴파일 속도가 60% 향상

이식성 증대와 #[cfg()] 최소화 - Improved portability and less #[cfg()]

  • 다양한 플랫폼/옵션 조합의 테스트가 어렵고, #[cfg()]로 인한 미검증 코드/문서 불완전/IDE 문제 등이 발생함
  • trait system 내로 #[cfg()]를 이동하여 플랫폼/옵션 보장 및 재컴파일 최소화, MIR 캐시, 빠른 CI 실현이 기대됨

모든 코드가 const가 되길 - Everything being const

  • 컴파일 타임에 더 많은 작업을 미리 수행함으로써 매크로/빌드스크립트 의존도를 줄이고, 런타임 오류도 미리 방지 가능
  • 현재는 제한적이나, 앞으로 “모든 코드가 const context에서 실행 가능”한 Rust를 지향

동시성의 단순화 - Simpler concurrency

  • 현행 Rust의 비동기(Async) 모델은 ‘static bound, cancellation-safety, trait 제한 등 복잡성이 높아 실무에 어려움을 줌
  • 과거의 user-space green thread(libgreen)처럼 언어 차원의 단순한 동시성 추구가 필요함

더 많은 도메인에서의 경쟁력 갖추기 - Excelling in more domains

  • Rust의 웹 브라우저 내 활용(특히 wasm/rustwasm) 분야는 아직 미개척 상태로, 크로스브라우저 스택트레이스 등 여러 과제가 남아 있음
    • leptos, sycamore 등 프레임워크 발전이 지속적이지만, 여전히 개선 여지 있음
  • Rapid prototyping, 비즈니스 로직, GUI, 머신러닝, 게임개발 등 Rust가 아직 완전히 뚫지 못한 도메인도 지속적으로 개선될 것으로 기대

결론

  • Rust 성장의 미래는 매우 명확하고 희망적임
  • 도입이 늘수록 엔지니어링/테스트 역량이 커지고, 이로 인해 더 넓은 채택과 개선이 선순환을 이루는 구조
  • 다가오는 10년은 보다 빠른 컴파일, 다양한 분야에서의 적용, 매끄러운 개발 경험이 현실화될 것
  • Rust의 새로운 10년을 기대함

Read Entire Article