Kinsta 의
What Is Node.js and Why You Should Use It
⚠️ 뉴스를 보고 작성자 편한대로, 이해한 대로, 기억하고 싶은 부분만 번역했습니다. 믿지 마시고, 되도록이면 위의 원문을 봐주세요.
프론트엔드를 공부하며 백엔드단을 이해하지 못하면 프로젝트 진행에서 어려움이 많다는 것을 느꼈다. 프론트엔드에서의 필수 능력, 자바스크립트로 다룰 수 있는 백엔드 node.js 에 대해서 알아봤다
JavaScript는 세계에서 가장 인기 있는 프로그래밍 언어 중 하나이다. 오늘날 수백만 개의 웹 사이트를 지원하고 있으며 웹용 기능을 구축하기 위해 수많은 개발자와 디자이너를 끌어들이고 있다. 프로그래밍을 처음 접하는 경우 JavaScript는 쉽게 사용할 수 있는 최고의 프로그래밍 언어 중 하나다.
처음 20년간 자바스크립트는 클라이언트 측 스트립팅에만 사용되었다.
Node.js는 빠르고 확장 가능한 서버 측 및 네트워킹 애플리케이션을 구축하기 위한 단일 스레드, 오픈 소스, 플랫폼 간 런타임 환경이다. V8 JavaScript 런타임 엔진에서 실행되며 이벤트 기반의 비차단 I/O 아키텍처를 사용하므로 효율적이고 실시간 애플리케이션에 적합하다.
C, C++ 및 자바스크립트로 작성되었다.
Node.js 는 단일 스레드 이벤트 루프 아키텍처를 사용하여 다수의 클라이언트를 한 번에 처리할 수 있다. 이것이 다른 런타임 환경가 어떻게 다른지 알기위해서는, 다중 스레드 동시 클라이언트를 자바에서 어떻게 처리하는지 알아야 한다.
다중 스레드에서의 요청-응답 모델에서는, 다중 클라이언트가 요청을 보내고 서버는 각각의 요청을 반응을 보내기전에 처리하게 된다. 하지만 멀티스레드는 한 번에 여러 동시 콜을 수행하기 위해 사용된다. 스레드는 스레드 풀에 정의되어, 요청이 들어올 때 마다 하나의 스레드가 할당되어 해당 요청을 처리한다.
Node.js 는 다르게 작동한다. 각각의 단계를 살펴보자
Node.js는 더 적은 수의 스레드를 사용하기 때문에 더 적은 리소스/메모리를 사용하므로 더 빠른 작업 실행이 가능하다. 따라서 우리의 목적을 위해서 이 단일 스레드 아키텍처는 다중 스레드 아키텍처와 동일하게 작동한다. 데이터 집약적인 작업을 처리해야 하는 경우 Java와 같은 다중 스레드 언어를 사용하는 것이 훨씬 더 합리적이다. 그러나 실시간 애플리케이션의 경우 Node.js가 확실한 선택이다.
Node.js는 지난 몇 년 동안 빠르게 성장했다. 이는 다음과 같은 방대한 기능 목록을 제공하기 때문이다.
지난 20년간 웹사이트 분야에서 엄청난 성장이 있었고, 예상할 수 있듯이 Node.js 도 빠르게 성장했다. 인기 있는 런타임은 이미 10억 다운로드를 2018년에 넘어섰으며, W3Tech 에 따르면 전체 웹사이트의 2.1 % 가 사용되고 있다고 한다. 즉 4000만개의 사이트가 인터넷에서 Node.js 로 운영되고 있다는 뜻이다.
수백만의 회사에서 사용되는 유명한 방식중 하나라는 것은 놀랍지도 않다. 아래는 node.js 를 사용하는 유명한 기업예시이다.
Node.js 는 다양한 어플리케이션에 사용된다.
아니다.
브라우저 외부에서 JavaScript를 실행하는 데 사용되는 런타임 환경이다.
또한 Node.js도 프레임워크가 아니다. Node.js 런타임은 프로그래밍 언어(이 경우 JavaScript) 위에 구축되며 프레임워크 자체를 실행하는 데 도움을 준다.
요약하자면 Node.js는 프로그래밍 언어도 프레임워크도 아니다. 그들을 위한 환경을 제공하는 것이다.
개발자들 사이에서 흔한 오해는 Node.js가 백엔드 프레임워크이며 서버 구축에만 사용된다는 것이다. 이것은 사실이 아닙니다. Node.js는 프론트엔드와 백엔드 모두에서 사용할 수 있다.
간단히 말해서 Node.js는 여러 동시 요청을 지원해야 하는 대규모 애플리케이션을 구축하는 데 사용할 수 있는 인기 있는 프로그래밍 환경이다. 단일 스레드 비차단 I/O는 실시간 및 데이터 스트리밍 애플리케이션 모두에 탁월한 선택이다.
이를 더욱 강화하기 위해 Node.js는 활발한 개발자 커뮤니티를 보유하고 있으며 현재 백만 개 이상의 패키지가 포함된 세계 최대의 오픈 소스 패키지 저장소인 NPM을 가지고 있다.
go-to: 늘 찾는, 항상 선택하는
throughput: 처리량
immense: 엄청난