10P by xguru 5달전 | favorite | 댓글 1개
  • Mako는 Rust 기반의 "매우 빠른" 그리고 "production-grade" 프론트엔드 빌드 도구
  • 2023.3에 출시되었고, 1년 만에 오픈소스화 됨
  • "매우 빠른" 빌드 속도가 필요해서 프로젝트를 시작함
  • "production-grade"라는 표현은 2023.11.24부터 Mako가 Ant Group(예전 알리페이) 내부에서 공식 출시되었기 때문
    • 수천 개 프로젝트와 그 안에서 사용된 다양한 npm 패키지 및 버전으로 검증되었음

Mako의 개발 이유

  • 작년(2023.3)에 팀에서 Rust, SSR, AIG 3개 프로젝트를 시작했고, 빌드 성능 문제를 해결하기 위해 Rust를 선택
  • 기존 Rust 도구를 사용하지 않고 직접 만들기로 한 이유는 복잡함
    1. 커뮤니티 라이브러리의 성숙도와 Ant의 요구사항과의 호환성
    2. 제어권을 가질 필요가 있음(비즈니스적 이유로 많은 커스터마이징이 필수)
    3. 모던 메타 프레임워크가 빌드 외에도 컴파일 시간 프레임워크를 필요로 함. 특히 SSR 및 RSC 시나리오에서 많은 컴파일이 필요
    4. Rust를 배우고 팀이 성장할 필요성
  • Mako의 타임라인 : 2023.3에 킥오프, 2023.7에 첫 사용 가능한 버전, 2023.11에 Ant에서 내부 출시, 2024.6에 오픈소스화

속도

  • Mako는 속도에 많은 노력을 기울였음. 벤치마크 데이터는 다음과 같음
    • Mac Book Pro M2 Max에서 Turbopack도 테스트하는 프로젝트로 벤치마크를 실행함
    • dev cold start 시간, root node와 leaf node HMR 시간, production Build 빌드 시간, JS bundle 크기 등의 차원을 포함함
  • 이전 버전과 비교하면 다음과 같음
    • Ant Design Pro 전체 프로젝트 빌드 시 Webpack은 16초, Mako는 3.9초로 4배 속도 향상
    • Ant Design Pro 전체 프로젝트 빌드 시 Mako는 거의 실시간 hot update임
    • RSC 기반 인트라넷 Hybrid 프레임워크 Smallfish 프로젝트 빌드 시 스캐폴드 프로젝트의 빌드 시간이 36.7초에서 1.2초로 단축됨
  • 또한 Mako는 실험적인 SSU 기능도 있는데, 이전 MFSU 구현과 유사하게 의존성 패키징 및 캐싱을 수행함
    • 소스 코드 대비 의존성 비율에 따라 Dev hot start-up 시 10~50배 속도 향상 가능
Hacker News 의견
  • esbuild나 swc와 비교했을 때 성능이 떨어질 수 있음

    • JavaScript 생태계에서 많은 도구들이 느리고 버그가 많아 대안이 필요함
    • 네이티브 도구와 비교하면 점점 수익이 감소함
  • 이 도구는 비표준 기능을 지원하여 특정 번들러에 종속될 수 있음

    • 번들러 없이도 작동하는 프로젝트가 더 좋음
    • 번들러는 최적화 단계로 사용하는 것이 좋음
  • Vite의 주요 기능은 rollup의 기존 플러그인 시스템을 활용하는 것임

    • 기존 생태계를 위한 호환 레이어를 구축할 계획이 있는지 궁금함
    • 다른 빌드 도구들도 이를 하고 있음 (예: rspack은 webpack 플러그인 사용, farm은 vite 플러그인 사용)
  • 제목에 "Rust"가 있어서 웹용 Rust 컴파일러인 줄 알았음

    • JavaScript용 또 다른 번들러임
    • Rust로 구축됨
  • 웹 개발자가 아니어서 번들러가 실제로 무엇을 하는지 혼란스러움

    • 번들러가 정확히 무엇을 하는지에 대한 정보가 필요함
    • 속도에 중점을 두는 이유는 무엇인지 궁금함 (예: 패키지 버전 해결?)
  • 웹 개발자가 아니지만 웹 앱을 정기적으로 개발함

    • 빠른 개발 주기에서 번들러의 목적이 무엇인지 궁금함
    • 웹 앱이 빠르게 로드되려면 변경된 부분만 다시 다운로드하는 것이 좋음
    • 번들링하지 않는 것이 더 나음
  • Rspack (ByteDance)이 1.0 버전을 출시함

    • Farm도 있음
    • Ant Group에서 만든 것임
    • Rust로 구축된 많은 빌드 도구들이 있음
    • Turbopack은 번들링의 완전한 재구축을 목표로 함
    • Rolldown은 Rust 기반의 roll-up 재구축으로 보임
  • 또 다른 흥미로운 Rust 기반 JavaScript 번들러는 Oxid / OXC임

  • 번들링의 한계에 도달하면 어떻게 될지 궁금함

    • esbuild처럼 ms 단위의 성능에 도달하면 창의적인 작업을 할 수 있음
    • 각 브라우저에 작은 WASM mako나 번들러가 있다면 매우 흥미로울 것임
    • 많은 노력이 들어간 것처럼 보임
  • MakoTemplates와 관련이 있는지 궁금함