JavaScript를 위한 더 나은 Streams API 설계는 가능한가

Cloudflare의 James M Snell은 2014~2016년에 설계된 WHATWG Streams API가 현대 JavaScript 문법과 동떨어져 성능 저하를 일으킨다고 지적하며, 새로운 설계를 통해 2배에서 최대 120배까지 성능 향상이 가능하다고 발표했습니다.

AI 요약

2026년 2월 27일, Cloudflare의 James M Snell은 현재 웹 플랫폼의 표준인 WHATWG Streams(Web streams) API가 가진 근본적인 설계 결함과 성능 문제를 분석한 보고서를 공개했습니다. 이 표준은 2014년에서 2016년 사이에 개발되었는데, 이는 JavaScript의 현대적 비동기 문법인 for await...of(ES2018)가 등장하기 전의 일입니다. 이로 인해 현대적인 JavaScript 프리미티브를 활용하지 못하고 독자적인 리더/라이터 모델을 채택하게 되었으며, 이는 Node.js, Cloudflare Workers, Deno, Bun 등 모든 주요 런타임에서 사용성 저하와 성능 병목을 야기하고 있습니다. 저자는 현대적 언어 기능을 활용한 새로운 설계 대안을 제시하며, 이것이 기존 API보다 비약적으로 빠를 수 있음을 벤치마크 결과로 입증했습니다. 이번 제안은 기존 표준을 폄하하는 것이 아니라, 지난 10년간의 경험을 바탕으로 한 차세대 스트림 API 논의를 시작하는 데 목적이 있습니다.

핵심 인사이트

  • 압도적 성능 차이: 현대적 설계를 적용한 대안 API는 Cloudflare Workers, Node.js, Deno, Bun 및 주요 브라우저 테스트에서 기존 대비 2배에서 최대 120배 더 빠른 성능을 기록했습니다.
  • 기술적 부채의 기원: 현재의 스트림 표준은 2014~2016년에 설계되어, 2018년에야 도입된 자바스크립트의 비동기 반복(Async Iteration) 기능을 고려하지 못했습니다.
  • 교차 런타임의 한계: Web streams는 브라우저뿐만 아니라 Node.js와 Cloudflare Workers 등 서버 측에도 도입되었으나, 설계 당시 브라우저의 요구사항에만 치중하여 서버 환경의 최적화를 놓쳤습니다.

주요 디테일

  • 설계 시점의 한계: 표준화 당시 WHATWG는 이미 존재하던 Node.js의 스트림 API를 참고하지 않고 독자적인 표준을 구축했으며, 이 과정에서 현재는 구식이 된 리더/라이터 모델이 고착화되었습니다.
  • 언어 프리미티브 활용: 새로운 대안은 단순히 코드를 최적화한 것이 아니라, JavaScript의 언어적 특성을 효율적으로 활용하도록 설계를 근본적으로 변경한 결과입니다.
  • 실무적 근거: 저자인 James M Snell은 Node.js와 Cloudflare Workers에서 스트림을 직접 구현하고 수많은 고객의 프로덕션 이슈를 해결해온 경험을 바탕으로 이 문제를 제기했습니다.
  • 범용성 확보: 제안된 방식은 특정 런타임에 국한되지 않고 모든 주요 웹 브라우저와 서버 런타임 환경에서 일관된 성능 향상을 보여주었습니다.
  • 기존 표준의 역할 인정: Web streams가 fetch() API의 기초가 되는 등 지난 수년간 웹 플랫폼 발전에 기여한 점은 인정하되, 이제는 성장을 위한 변화가 필요한 시점임을 강조했습니다.

향후 전망

  • 새로운 표준화 논의: 이번 분석은 JavaScript 생태계 내에서 차세대 스트리밍 표준을 만들기 위한 커뮤니티와 표준화 기구(WHATWG 등) 간의 새로운 논의를 촉발할 것으로 보입니다.
  • 개발자 생산성 향상: 제안된 모델이 채택될 경우, 복잡한 리더 획득 과정 없이 idiomatic한 JavaScript 코드로 고성능 데이터 처리가 가능해질 전망입니다.
Share

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...

JavaScript를 위한 더 나은 Streams API 설계는 가능한가 | paper!