섹션 0
1장. 노드 시작하기
자바스크립트 내부 구조
- 내부는 대부분 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
유튜브에서 일부 무료로 들을 수 있습니다.
https://www.youtube.com/watch?v=JS4El_tz79M&list=PLcqDmjxt30RsGIPBBKX7xl05VuqJeCTFn
그리고 이 강의는 Node.js 교과서 3판 도서를 바탕으로 진행되는 강의이며, 아래 길벗의 더북(TheBook)사이트에서 해당 도서의 일부를 온라인웹상에서 무료로 볼 수 있습니다.
'프로그래밍 > Node.js 교과서' 카테고리의 다른 글
인프런 Node.js 교과서 강의 정리 - 섹션 1 (0) | 2023.10.01 |
---|