노드 JS를 설치한 후 다음에 해야할 일은 서버를 작동시켜보는 일이다.

 

이 포스팅에서는 노드 JS의 첫번째 프로그램을 만들어 본다.

 

노드JS 설치는 어렵지 않다. 아래 포스팅을 참고한다.

 

NODE.JS(노드JS) 설치 및 테스트 완료하기 | 윈도우10 (tistory.com)

 

NODE.JS(노드JS) 설치 및 테스트 완료하기 | 윈도우10

NODE.JS (노드JS)는 Chrome V8 JavaScript 엔진으로 빌드된 오픈소스이며 크로스 플랫폼 자바스크립트 런타임 환경입니다. 노드JS를 사용하면 웹브라우저 밖에서 자바스크립트를 사용할 수 있어서 서버

digiconfactory.tistory.com

 

다른 언어와 달리 노드 JS는 직접 서버를 설치할 필요가 없어서 바로 실행할 수 있다. 서버를 설치하고 가동 시키는 것 까지의 일도 상당한 시간과 고생이 들어가는 일인데 노드JS에서는 그럴 필요가 없다.

 

어떤 언어나 프레임워크든 첫번째 코드는 처음에 내용을 이해하려 하지 말고 실행시켜 보는게 좋다. (Hello World 출력)

 

언어와 프레임워크는 하나의 시스템이기 때문에 이 시스템에 살면서 적응이 되면 다른 것들은 저절로 이해가 된다. 우리 사람이 한 국가의 시스템에 살아가는 것과 비슷하다. 한국에 살면 한국 법을 적용받고 미국에 살면 미국법을 적용받는다. 한 나라의 법을 왜 지켜야 하는지 물어보는 사람도 없으며 한나라의 법의 형성과정을 이해하려면 상당한 수준의 지식을과 다년간의 연구를 필요로 한다.

코드

프로그래밍 언어도 비슷하다. 그 언어의 문법이나 프레임워크의 작동법을 규정해 놓은 것은 최초로 언어을 창시자한 개인 혹은 집단이다. 그들의 시대적 맥락적인 사정에 따라 만들기 때문에 특히 먼 한국에서 이해하기 어려운 부분이 많이 있다. 프레임워크를 어렵게 접근하면 한없이 어려워지고 쉽게 접근하면 마음이 편하다. 어차피 하다 보면 다 알게 된다.


그럼 코드를 실행시켜 보자.

 

const http = require('http');

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html');    
    res.write('<h1>Hello World!</h1>');
    res.write('<p>Server Message sent.</p>');
    res.end()
});

server.listen(3000, 'localhost', () => {
    console.log('listeing for requests on port 3000')
});

 

* 노드JS가 적합한 서비스 : 채팅 앱, 게임 서버, 스트리밍 등 CPU 사용 시간이 적고 빈번하게 일어나는 서비스에 적합함

 

* 노드JS는 자바스크립트를 사용한다. (JS - 자바스크립트 약자)

 

* 노드JS는 콜백을 사용하는 비동기 방식의 프레임워크다.

  (순차적으로 실행이 안되고 GUI의 이벤트 핸들링 처럼 일이 발생할 때 마다 처리한다.)

 

require 함수는 모듈을 가져와서 객체로 반환한다. 모듈은 특정의 기능을 사용할 수 있게 하는 라이브러리다. 파이썬을 해본 경험이 있다면 파이썬의 import 로 모듈을 가져와서 필요한 기능을 실행시켜봤을 것이다. 노드JS는 require 로 모듈을 가져온다.

 

http 모듈로는 서버를 생성할 수 있는 메소드가 있다.  createServer 는 콜백함수로 req (request 리퀘스트 클라이언트로부터 요청)과 res (response 리스폰스 서버가 클라이언트에게 응답) 를 매개변수로 요청을 받고 처리하는 역할을 한다. 서버가 생성되면 무한 루프에 들어가면서 대기한다.

 

우리가 밤새도록 인터넷을 사용하고 게임을 즐길 수 있는 것은 나의 컴퓨터(클라이언트)에서 요청을 보낼 서버 컴퓨터가 어디선가 24시간 돌아가고 있기 때문이다. 물론 서버는 한대가 아니라 여러대가 있다. 구글은 약 250만개의 서버 컴퓨터를 가지고 있다고 추산하고 있다. 수십억명이 구글의 서비스를 사용해도 번개같이 바로 검색결과 나오는 것은 그만큼 서버의 CPU파워가 있기 때문이다. 구글의 직원들은 이 250만개의 CPU를 조작하는 일을 한다.

 

아마 구글도 자기가 몇개의 서버가 있는지 알기 힘들 것 같다. 돈을 못 세면 진정한 부자라는데 컴퓨터를 못세는구만...

setHeader와 Write 를 보면 HTML 파일이구나 알 수 있다. 서버가 대기를 하다가 클라이언트의 요청을 받으면 해야하는 일이 명시되있다. 예제는 문자열을 HTML으로 전송하지만 실제로는 index.html 같은 파일을 보낸다. 비동기 콜백함수니까 연결을 종료해줘야 하므로 문자열을 보낸 후에는 end 메소드를 한다.

 

listen 메소드는 로컬호스트의 3000번 포트에서 듣는다. (localhost 는 서버가 가동되는 환경을 말한다. 자기 자신이 가동되고 있는 것을 가리킬 때 localhost 혹은 IP주소는 127.0.0.1 이다. 포트는 http 요청이 들어오는 것을 기다리는 장소다. 여기에 도착한 요청들은 스케줄에 따라 http 서버가 처리한다.

 

서버 프로그램을 시작하면 아래와 같이 메시지가 뜨고 커서는 멈춰있다. 노드JS가 이벤트 루프를 하고 있다는 말이다(대기하고 있음)

 

 

다음은 웹브라우저를 열어서 localhost:3000 을 입력한다. 방금 가동한 노드JS 서버에 요청 메시지를 보낸다.

 

 

브라우저 화면에 HTML 텍스트가 출력되면 성공이다!

 

서버를 만들었으니 이제 여기에 살을 덧붙이는 일만 남았다.

 

첫술에 배부를 수는 없지만 두술 세술 더 떠먹으면 된다. 뭐든지 처음이 어렵지 그 다음 길은 쉽다.

공유하기

facebook twitter kakaoTalk kakaostory naver band