섹션 0

1장. 노드 시작하기

 
노드(Node)란?
 - 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임. (서버가 아님. 자바스크립트 엔진도 아님. 여기서 엔진은 V8)
 - 노드 자체는 서버가 아니다.
 - 하지만, 노드가 서버 역할을 수행한다. (ex: 노드가 서버 소스코드를 실행하면 서버가 된다.)
 - 서버 실행을 위해 필요한 http/https/http2 모듈을 제공한다.
 - 노드를 공부하려면 자바스크립트를 알아야 한다.
 - 자바스크립트 학습 사이트 추천 (아래 사이트만 학습해도 충분할 거 같다)

https://ko.javascript.info/

 

모던 JavaScript 튜토리얼

 

ko.javascript.info

 

자바스크립트 내부 구조

   - 내부는 대부분 C 나 C++ 로 구현되어 있다. 그런데 그 위에 자바스크립트로 만든 이유는 생산성 때문이다. (c나 c++은 어렵고, 메모리 관리 문제도 있고...)

   - 자바스크립트(노드)가 뜬 이유는 : 싱글 스레드이면서 비동기이다. -> 초보자들도 엄청난게 빠른 성능. (자바는 멀티 스레드라서 초보는 성능 좋게 내기가 힘듬)

 

 

노드의 특성

   - 이벤트 기반 : 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식.

   - 이벤트의 예 : 클릭, 네트워크 요청, 타이머 등

   - 이벤트 리스너 : 이벤트를 등록하는 함수

   - 콜백 함수 : 이벤트가 발생했을 때 실행될 함수

 

논 블로킹 I/O

   - 노드는 블로킹이면서 동기, 그리고 논 블로킹이면서 비동기. (예외도 있지만 보통은 저렇게 사용함)

   - 동기(블로킹)면 코드가 순서대로 실행. 비동기(논 블로킹)는 코드가 순서대로 실행되는것을 보장하지는 않는다.

 

싱글 스레드

   - 프로세스 : 운영체제에서 할당하는 작업의 단위, 프로세스가 자원 공유X

   - 스레드 : 프로세스 내에서 실행되는 작업의 단위.  부모 프로세스 자원 공유O

     ex) 브라우저 하나는 프로세스, 그 안에 탭들은 스레드.

 

   - 노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현.

     노드는 주로 멀티 스레드 대신 멀티 프로세스 활용.

     단, 노드14부터는 멀티 스레드 사용 가능.

 

   - 싱글 스레드 : 주어진 일을 하나밖에 처리하지 못함. 블로깅 발생 시 나머지 작업은 대기해야 함. 에러를 처리하지 못하는 경우 멈춤 발생. -> 이 단점을 극복하기 위한게 멀티 스레드이지만, 멀티 스레드가 넘 어려우므로 노드를 사용하는 거임.

   - 이걸 해결하기 위해서 논 블로킹 모델을 채택하여 일부 코드를 백그라운드에서 실행 가능.

   - 요청은 먼저 받고, 완료될 때 응답함.

   - 멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복. (단, 비용 발생. 프로그래밍 난이도 어려움. 자원 많이 사용)

 

   - 노드의 핵심은 스레드 하나를 효율적으로 어떻게 잘 관리하냐이므로 싱글 스레드 다루는 것을 잘 익히면 된다.

 

 

서버로서의 노드

   - 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램. 

   - 클라이언트 : 서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버 등)

   - 노드 != 서버

   - 노드는 서버를 구성할 수 있게 하는 모듈을 제공해준다.

 

노드 서버의 장단점

   - 노드의 장단점 -> 자바스크립트 장단점과 크게 다르지 않다. 

   - 만약, 노드를 대체하는 기술이 나오게 된다면 그 가능성이 있는 것은 디노(Deno) 이다.

   - 서버나 서비스쪽에서는 언어가 중요하지는 않다. 어떤 언어를 사용하든(php라도) 어떤 서비스든 만들 수 있다. 단, 언어의 모든 특성을 활용해야 할 때, 그 언어의 한계가 다가오게 된다.

 

 

노드 설치하기

   - 노드 버전은 LTS 버전, 최신 버전 상관이 없다. (실무에서는 LTS 버전, 개인 공부용으론 최신 버전을 선택한다)

   - 노드 설치 시, 필요 도구 설치에 꼭 체크를 하고 설치를 한다.(디폴트는 설치가 안되어 있다) -> 파이썬 등 필요 라이브러리를 자동으로 설치해준다.

 

 

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

해당 페이지는 인프런에서 제로초(조현영)님이 강의하시는 Node.js 교과서 강의 정리 내용입니다.

 

참고 : Node.js 교과서 인프런 강의 사이트

https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-js-%EA%B5%90%EA%B3%BC%EC%84%9C

 

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지 - 인프런 | 강의

노드가 무엇인지부터, 자바스크립트 최신 문법, 노드의 API, npm, 모듈 시스템, 데이터베이스, 테스팅 등을 배우고 5가지 실전 예제로 프로젝트를 만들어 나갑니다. 클라우드에 서비스를 배포해보

www.inflearn.com

유튜브에서 일부 무료로 들을 수 있습니다. 

https://www.youtube.com/watch?v=JS4El_tz79M&list=PLcqDmjxt30RsGIPBBKX7xl05VuqJeCTFn 

그리고 이 강의는 Node.js 교과서 3판 도서를 바탕으로 진행되는 강의이며, 아래 길벗의 더북(TheBook)사이트에서 해당 도서의 일부를 온라인웹상에서 무료로 볼 수 있습니다.

https://thebook.io/

 

더북(TheBook)

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

https://thebook.io/080334/

 

Node.js 교과서 개정 3판

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

 

+ Recent posts