NodeJs(1장. 공부하는 이유)
Node.js를 공부하는 이유

Node.js란 무엇인가?
NodeJS는 자바스크립트 런타임 환경이다. 런타임 환경이란 소프트웨어 어플리케이션을 구축하고 실행하기 위한 인프라를 의미한다. Node를 만든 회사는 Node를 “Chrome V8 엔진으로 만들어진 자바스크립트 런타임”이라고 정의했다.
[정리]
- 서버 프레임워크, 무료
- window, linux, mac OS 등 여러 곳에서 작동
- server에서 javascript를 활용
[어떻게 Nodejs가 작동하는지]
- 작업이 file system으로 이동한다.
- 시스템은 다음번 요청을 기다린다.
- 파일이 열거나 읽으면 시스템은 컨텐츠를 클라이언트단에 보낸다.
[NodeJS file]
- 작업을 포함하고 설정된 이벤트에 따라 실행한다.
- 이벤트는 누군가 서버에 액세스하려고 할 때 발생한다.
- 서버에서 파일을 시작해야한다.
- 파일 확장자는 ‘.js’이다.
[NodeJS로 할 수 있는 것]
- 동적 컨텐츠를 생성할 수 있다.
- 서버에서 파일 생성, 열기, 읽기 또는 삭제가 가능하다.
- 데이터베이스와 소통할 수 있다.

Node.js를 사용하는 이유
NodeJS를 만든 개발자가 말하길, 가장 큰 장점은 javascript언어가 i/o를 차단하지 않는것이라고 한다. 이 주장에 대해 개발자들 사이에 논쟁이 꽤 있다. 일부에서는 CPU 주기가 많은 애플리케이션은 Node에서 충돌이 발생할 수 있다고 한다. 또 다른 일부는 Node 코드는 아주 작은 프로세스로서 작동하기 때문에 문제가 되지 않는다고 한다.
또 다른 장점은 단일 스레드 이벤트 루프이다. 이것은 외부 요청에서 발생하는 i/o를 추상화한다. node가 시작될 때 이벤트루프가 시작되고 그 뒤에 input을 처리하고 여러 작업들을 순서대로 실행한다.
- 왜 NodeJS를 이용하는지
- Google javascript 엔진이라는 것 : 빠르고 확장가능한 웹앱이다.
- 서버 측 애플리케이션 : 노드는 특정 이벤트(사용자 작업, 메시지 등)에 의해 흐름이 결정되는 이벤트 기반 프로그래밍 모델이다.
- 아주 쉽게 확장 가능하다. Uber와 Trello와 같은 앱처럼 여러 CPU 서버로 확장하기가 쉽다.
- 노드는 개별 프로세스 기반으로 확장되어 멀티 코어 서버에 부하를 분산시킬 수 있다.
- 초심자에게 좋다. 자바스크립트는 배우기 간단하고 수많은 프레임워크를 가지고 있다.
- Node를 구글에서 관리하기 때문에 빠르다.
- 데이터를 순수 json으로 관리할 수 있다.
- 여러 모듈이 공유되어 있다. ex)NPM
- 실시간 어플을 만들기 좋다. 채팅앱 혹은 게임을 만들기 좋다.
- 데이터 스트리밍에 좋다.