What is Node.js

Javscript는 알다시피 HTML 을 활용하기 위해서 만들어진 언어이며, 컴파일은 브라우저가 담당한다.

Chrome 은 V8, FireFox 는 SpiderMonkey ..

그리고 Chrome V8 해석엔진이 워낙 좋아서, 해당 엔진을 사용하여 자체를 따로 출시하여 만든것이 Node.js 즉 크롬의 자바스크립트 엔진

자바스크립트를 브라우저 내에서 사용하는것이 아닌 다른 환경에서도 실행을 할 수 있게 도와주기 위한 도구, 즉 런타임 실행환경이라 볼 수 있다

이제 Node.js 덕분에 JavaScript를 프로그래밍 언어처럼 만들 수 도 있고, 서버도 쉽게 만들 수 있음!!

그리고 Node.js 의 가장 큰 장점은 Non-blocking I/O 를 활용한다는점!!

Node.js의 특징

  1. Event Driven
  2. Non-blocking I/O

일반적인 서버와 Node.js Non-Blocking 의 특징을 알아보면 일반 서버라면, 요청을 처리하는 과정이 FIFO 으로 제일 먼저 들어온 요청부터 처리하지만, Node.js 라면 일단 I/O 를 다 받아보고 빨리 완료될 것 부터 확인을 해서 처리를 가능하게 해준다.

Node.js의 강점을 보여주는 부분

  1. SNS
  2. Chatting
  3. WebServer

으로 볼 수 있다.

즉 간단한 서비스나 프로토 타입을 만들기에 정말 좋지만, 처리속도가 타 서버들보다 떨어 질 수 있으며, Node.js의 특징인 Non-Blocking 처리방식 또한, 다른 언어에서도 구현 할 수 있다.

REST API

API

API 란 무엇인가.

Application Programming Interface 라고 부르며, 간단한 통신 규약이라 볼 수 있다. 간단하게 말하면 다른 프로그램들 간에 소통을 할 수 있게 데이터를 가져오는 방법이다.

REST API

Representational State Transfer

서버를 RESTFUL 하게 짠다는건 무엇일까??

HTTP 의 4가지 요청 (GET, POST, PUT, DELETE) 를 REST 원칙에 대하여 써보자!

대표적으로 6가지의 특징이 있다

  1. Uniform Interface
    1. 인터페이스는 일관성이 있어야 된다
    2. 하나의 URL 로는 하나의 Data만 가져와야된다
    3. 간결하고 예측가능해야된다
    4. URL 이름짓기 관습을 따라야한다
  2. Client-Server 역할을 구분한다
    1. URL 하나만 알면 서버에 있는 자료를 사용
    2. 고객에게 서버의 역할을 맡기거나 DB 를 꺼내오게 하면 안된다
  3. Stateless
    1. 요청들은 각각 독립적으로 처리되어야 한다
    2. 요청1이 성공하면 요청2를 보내주고 하는 식의 요청은 안된다
    3. 요청하나 만으로 자료를 가져올 수 있게 설정
  4. Cacheable
    1. 요청을 통해 보내는 자료들은 캐싱이 되어야 한다
  5. Layered System
    1. 요청을 처리하는곳, DB에 저장하는곳 이런 여러가지 단계를 거쳐 요청을 처리해도 된다
    2. 여러개의 레이어를 거쳐 요청을 처리하게 만들자
  6. Code on Demand
    1. 서버는 고객에게 실제 실행 가능한 코드를 전송 할 수 있다

다음에는 실제로 Node.js 와 Express 를 사용해 MongoDB 와 연동을 해보자