Nodejs의 소개

이장훈·2022년 2월 12일
0

Node.js의 소개

  • Javascript 생태계와 Node의 역사
  • 스크립트 언어이므로 한줄한줄 사용함.
  • html이 구조를 만들고, CSS가 디자인을 만들며, javascript를 통해서 동적인(엑션 상호작용이 가능한) 홈페이지가 완성되었다.
  • 문서에서 문서사이로 hyperlink로 연결하고, form 형태로 만들어 졌다.
  • javascript의 경우 script 언어이다.
  • Node.js의 js가 javascript이며, 이는 프레임워크라고 볼 수 있다.
    즉, 이를 통해서 프런트 앤드 및 백앤드를 모두 javascript로 쓸 수 있기 때문에 안쓸 이유가 없지 않나 싶고, 언어에 대한 자료나 인기도 매우 높은 편이다.

IO needs to be done differently.
Node.js는 IO(입출력)의
IO 바운드 프로그램의 가장 큰 문제인 요청하고 기다리기에 대해서 혁신적일 수 있다.
자바 스크립트는 이벤트 루프를 통해서 비동기적인

let databaseResult = queryDatabase() // 요청
let apiResult = getSomethingFromAPI() // 기다리기

  • 많은 클락수 낭비 + 중간에 응답시간이 길어지면 그때부터 전체적 서비스에 문제가 생김 (유저는 기다리고, 프로그램은 그냥 놀고)

JavaScript는 callback을 통한 비동기 처리방식을 가지고 있다.

queryDatabase(result => {
})

getSomethingFromAPI(result => {
})

저수준의 오래 걸리는 일은 Node에게, 고수준의 로직은 메인 스레드에서 해결한다.
복잡하고 어려운 일은 네트워크와 소통, 파일 받아오기 등 node에게 시키고, 메인 스레드는 일을 잘 분배하고 맡기는 역할만 진행하기 때문에 blocking이 거의 없고 퍼포먼스가 좋다.

  • javascript 자체만의 한계
    저수준 처리는 매우 느리다 (특정 픽셀만 찾아낸다든지, 오디오파일을 두개를 돌리면서 합치는 등 지속적인 저수준 처리를 계속 하는 경우는 C와 WEbAssembly와 같은 이미 빠른 언어들을 사용하는 것이 좋다.)
  • 다만, 이 C와 WebAssembly를 바인딩하여 사용이 가능하다. (C는 node-gyp를 통해, WebAssembly는 node12부터 네츄럴로 제공한다)

C나 rust를 컴파일 하면 바이러니 파일들이 떨어지는 것처럼,

npm(node package manager) 방대한 오픈소스 생태계

LTS(Long Term Service)로 안정성, 신뢰성이 보장된 버전을 말한다.

2. 프로그램

  1. node.js

  2. node nvm 패키지 버전 관리 툴
    https://github.com/nvm-sh/nvm
    https://github.com/tj/n

profile
개발자가 꿈입니다.

0개의 댓글