본문 바로가기

Backend/Node.js

Medium 번역 - Node.js version 14 available now

Node.js version 14 available now - Medium 블로그 글을 번역해 보았습니다.

 

이 블로그는 Michael Dawson 과 Bethany Griggs 가 Node.js 의 커뮤니티 위원회 및 기술운영 위원회의 추가적인 공헌을 통해 작성했습니다.

 

 

오늘 Node.js 14 버전 릴리즈가 발표되었습니다. 이번 릴리즈에서 강조할만한 부분은 향상된 진단기능, v8 엔진 업그레이드, 실험적인 비동기 로컬 스토리지 API, 강화된 스트림 API, 실험 모듈 경고 제거 및 몇몇 사용되지 않는 API 제거가 있습니다.

 

Node.js 14 가 Node.js 13 을 대체해 current 릴리즈 라인이 됩니다. 릴리즈 스케줄에 따라 Node.js 14 는 앞으로 6개월동안 'Current' 릴리즈가 될 것이며, 이후 2020년 10월에 LTS 로 변경됩니다. 항상 그렇듯이, 기업 사용자는 Node.js 가 LTS 로 변경되는 10월까지 프로덕션 배포 업그레이드를 기다려야 합니다. 그러나 지금이 Node.js 14 로 어플리케이션 테스트를 시작하고 새로운 기능을 시도해보기 가장 좋은 때입니다.

 

Node.12 와 Node.js 10 은 각각 2022년 4월, 2021년 4월까지 LTS 로 유지될 것입니다. (더 자세한 사항은 이 링크에서)

 

여기서 최신버전을 다운받아 시작해보세요 : https://nodejs.org/en/download/current/

 

이번 릴리즈에서 강조할만한 기능을 살펴보기 전에, 마스터에 추가된 새로운 기능이 current 릴리즈로 빠르게 이동된다는 점에 유의해야 합니다. 이것은 별다른 광고없이 마이너 릴리즈에서 중요한 기능을 사용할 수 있음을 의미합니다. 비록 이미 이전 릴리즈로 백포트 되었을 수도 있지만, 이번 기회에 Node.js 14 릴리즈의 일부를 강조하고 싶습니다.

 

Diagnostic Report goes Stable (진단 리포트가 안정적이 됨)

진단 리포트가 Node.js 14 의 안정적인 기능으로 릴리즈 됩니다. (이건 Node.js 12 에선 실험적인 기능으로 추가됐었습니다).

이것은 Nodejs 를 사용할 때 사용가능한 진단 기능을 개선하고 빌드하기위해 프로젝트 내에서 진행중인 작업에서 중요한 단계이며, 사용하기 쉽고, 이 작업의 대부분이 Node.js 진단프로그램 워킹 그룹에 의해 진행됩니다.

 

이 진단 리포트 기능은 요청시 혹은 확실한 이벤트가 발생했을 때 리포트를 생성할 수 있게 해줍니다. 이 리포트는 크래시, 느린 퍼포먼스, 메모리 누수, 높은 CPU 사용량, 예상치못한 에러등을 포함한 프로덕션의 문제점들을 진단하는데 도움이 되는 정보들을 포함하고 있습니다. 진단 리포트 기능에 대해 더 많은 정보를 보려면 이 링크를 클릭하세요. 안정적인 기능으로 릴리즈되면서 진단 보고서를 활성화 하는데 필요한 커맨드 라인이 하나 줄었기에 프로덕션 환경에서 사용자가 더 쉽게 활성화 시킬 수 있습니다.

 

V8 upgraded to V8 8.1 (V8 8.1 버전으로 업그레이드)

언제나 그렇듯 새로운 버전의 v8 자바스크립트 엔진은 언어와 런타임의 지속적인 개선으로 Node.js 를 유지하면서 퍼포먼스 조정과 향상을 가져왔습니다. v8 의 v8 이라는 이번 버전 네이밍이 재밌습니다.

 

새로운 자바스크립트 기능의 주요 특징들입니다 :

(밑의 특징들을 알아보는 글을 따로 올리겠습니다)

 

v8 의 새로운 기능에 대한 더 많은 정보는 Node.js v8 blog 에서 볼 수 있습니다 : https://v8.dev/blog

 

Experimental Async Local Storage API (실험적인 비동기 로컬 스토리지 API)

이 프로젝트는 여러 릴리즈에서 비동기 호출 컨텍스트를 관리할 수 있도록 하는 API 를 개발하고 있습니다. 실험적인 비동기 훅 API 는 이전 버전의 작업 일부분에서 소개되었습니다. 비동기 훅의 주요 사용 예시중 하나는 비동기 로컬 스토리지 (연속 로컬스토리지 라고도 합니다) 입니다. 이 요구사항을 해결하기위해 API 들을 제공하는 많은 npm 모듈들이 있습니다. 그러나 그 부분은 수년에 걸쳐 Node.js 코어 외부에서 유지 관리하기 어려워졌으며, 프로젝트는 Node.js 에서 API 를 제공하는것이 합리적이라는 것에 의견을 모았습니다. 14.x 릴리즈는 실험적인 비동기 로컬 스토리지 API (13.10 으로 백포트 됨) 를 제공합니다 - https://nodejs.org/api/async_hooks.html#async_hooks_class_asynclocalstorage. 우리는 이 API 를 사용해보고 추상 모델, API 인터페이스, 사용 케이스 커버리지, 기능적 안정성, 네이밍, 문서화 등에 대해 피드백을 줄 커뮤니티를 찾고있습니다. 이후 릴리즈에서 실험적인 부분을 벗어날 수 있도록 말입니다. 피드백을 주는 가장 좋은 방법은 진단 리포지토리 (https://github.com/nodejs/diagnostics/issues) 에 "Experience report with AsyncLocalStorage API" ("비동기 로컬 스토리지 API 사용 경험 리포트") 라는 문구를 포함한 제목과 함께 이슈를 여는 것입니다.

 

Streams (스트림)

이번 릴리즈에는 Node.js 스트림 구현에서 SemVer major 로 표시된 많은 변경사항이 포함되어있습니다. 이 변경사항들은 Node.js 코어의 다양한 부분에서 모호성을 제거하고 동작을 간소화해 스트림 API 의 일관성을 향상시킵니다. 예를들어, http.OutoingMessage 는 스트림과 유사합니다. Writable 과 net.Socket 은 stream.Duplex 와 정확히 동일하게 동작합니다. 주목할만한 변경사항은 ' autoDestroy ' 옵션 기본값이 true 로 설정되어 스트림이 끝난 후 항상 ' _destroy ' 를 호출하게 하는 것입니다. 우리는 SemVer major 변경사항들이 일부만 변경하기 때문에 대부분의 어플리케이션에 영향을 줄것이라 생각하진 않지만, 스트림에 크게 의존하고있다면 Node.js 14 가 current 릴리즈 상태일 때 테스트해서 2020년 10월에 Node.js 14 가 LTS 로 될때를 준비하는 것이 좋아보입니다.

 

Experimental Web Assembly System Interface (실험적인 Web Assembly System Interface)

Web Assembly for Node.js 로 작성된 패키지들은 특정 사용 케이스에 대해 향상된 퍼포먼스와 크로스 플랫폼 지원을 제공합니다. 14.x 릴리즈에는 이러한 사용 케이스를 지원하기 위해 Web Assembly System Interface (WASI) 의 실험적인 구현을 포함합니다. Node.js v14에서 새로운 점은 아니지만, WASI 는 네이티브 모듈 사용 경험을 크게 단순화 할 수 있기 때문에 주목할 만 합니다. 이 API 문서에서 더 많은 것들을 읽을 수 있습니다 : https://nodejs.org/api/wasi.html

 

Removal of Experimental Modules Warning (실험적 모듈 경고 제거)

Node.js 13 에서 우리는 ' --experimental-modules ' flag 가 포함되어야 할 필요성을 제거했습니다. 하지만 Node.js 에서 EcmaScript Modules 를 돌릴때, 이것은 여전히 ' ExperimentalWarning: The ESM module loader is experimental ' 이라는 경고를 반환했습니다.

 

Node.js 14 에선 ESM 를 사용할 때 더이상 이러한 경고를 볼 일이 없습니다. 그러나, Node.js 에서 ESM 구현은 여전히 실험적입니다. 안정성 인덱스에 따르면 " 이 기능은 시맨틱 버저닝 규칙을 따르지 않습니다. 이후 버전에서 호환되지 않는 변경이 일어나거나 제거될 수 있습니다 " 사용자는 프로덕션 환경에서 이 기능을 사용할 때 주의를 기울여야 합니다.

 

Node.js 에서 ESM 구현은 익숙한 개발자 경험과 다릅니다. 대부분의 트랜스필레이션 (소스코드의 프로그래밍 언어를 다른 언어로 변경하는 것) 워크 플로우는 선택적 파일 확장자 또는 Node.js ESM 구현이 지원되지 않는 JSON 모듈과 같은 기능을 지원합니다. 트랜스파일된 환경의 모듈은 Node.js 에서 동작하기 위해 어느정도 리팩토링이 필요할 수 있습니다. 많은 설계 결정이 두가지 주요 목표로 이루어졌다는 점을 언급할 가치가 있습니다. 스펙 준수 및 웹 호환성 입니다. 현재의 구현이 범용적인 자바스크립트로의 길을 열어주는 ESM 모듈 작성에 대한 미래의 증명 모델을 제공한다는 것이 우리의 신념입니다. 이 문서를 읽어보세요.

 

Node.js 에서 ESM 구현은 여전히 실험적이지만 우리는 Node.js 에서 ESM 을 "안정적" 으로 호출할 수 있음에 거의 근접했다고 생각합니다. 이 방향에서 경고를 제거하는 것은 아주 큰 단계입니다.

 

New compiler and platform minimums (새로운 컴파일러 및 플랫폼 최소 사양)

Node.js 는 사전 빌드된 다양한 플랫폼용 바이너리를 제공합니다. 각각의 주요 릴리즈에서 최소 툴체인이 평가되고 적절한 경우 제기됩니다. 

 

이 릴리즈는 모든 macOS 바이너리들을 macOS 10.15 (카탈리나) 에서 Xcode 11 과 함께 컴파일해 패키지 공증을 지원하는 것과 동일합니다. 릴리즈 라인에 대한 각 컴파일 대상을 지원하기 위해 바이너리들이 여전히 컴파일 되고 있으므로, 우리는 macOS 의 옛 버전을 사용하는 Node.js 유저에게 부정적인 영향을 줄 것이라 예상하지 않습니다. Node.js 14 에서, 우리는 macOS 최소 사양 버전을 macOS 10.13 (하이 시에라) 로 변경했습니다.

 

리눅스 기반 플랫폼에서, Node.js 14 의 최소 GCC 레벨은 GCC 6 으로 남아있습니다. 그러나 우리는 GCC 8 을 사용해 몇몇 플랫폼의 바이너리를 빌드/릴리즈 할 계획입니다.

 

Node.js 14 는 또한 수명이 끝난 윈도우 배포판에서 실행되지 않습니다.

 

더 자세한 내용은 Node.js BUILDING.md 에 있습니다.

 

Call to action (행동 요구)

'current' 단계에 있는 6개월동안, Node.js 14 는 Node.js 에 기여하는 가장 새로운 기능을 받습니다. 앞으로 6개월동안, 이 릴리즈 라인은 10월에 LTS 로 전환할 수 있도록 최신 기능을 시험하고 프로젝트의 최신 Node.js 업데이트와 호환성 테스트 및 피드백을 주는데 아주 적합합니다.

 

다운로드 하기 위해 이 페이지를 방문하세요.

 

Thank you!

이번 기회를 통해 이번 릴리즈를 만든 모든 기여자와 Node.js 공동 작업자에게 큰 감사를 표합니다. 또한 릴리즈 생성 및 테스트 할 수 있는 인프라를 갖추고 Node.js 용 툴체인으로 필요한 업그레이드를 수행한 Node.js Build Working Group 에도 감사를 표합니다. Node.js v14.0.0 을 릴리즈한 사람은 Bethany Griggs 입니다. v14.0.0 릴리즈의 기능 리스트는 여기서 볼 수 있습니다.

 

 

출처 : https://medium.com/@nodejs/node-js-version-14-available-now-8170d384567e

 

Node.js version 14 available now

This blog was written by Michael Dawson and Bethany Griggs, with additional contributions from the Node.js Community Committee and the…

medium.com