Node.js - Web 모듈

웹 서버는 무엇인가요?

안녕하세요, 열정적인 프로그래머 되고자 하는 분들께! 오늘 우리는 웹 서버의 흥미로운 세상으로 뛰어들어보겠습니다. 웹 서버를 친절한 도서관 사서로 생각해보세요. 항상 당신이 찾는 책(또는 우리의 경우에는 웹 페이지)을 주기 위해 준비되어 있습니다.

Node.js - Web Module

웹 서버는 웹 브라우저로부터의 요청에 응답하는 소프트웨어입니다. 브라우저에 URL을 입력할 때, 당신은 사실상 특정 웹 페이지를 요청하는 것입니다. 서버는 그 페이지를 가져다주고 브라우저로 되돌려줍니다.

간단한 비유로 설명해보겠습니다:

  1. 당신(클라이언트)은 도서관(인터넷)에 들어갑니다.
  2. 사서(웹 서버)에게 특정 책(웹 페이지)을 요청합니다.
  3. 사서는 책을 가져다주고 당신에게 전달합니다.
  4. 당신은 책을 읽습니다(브라우저가 웹 페이지를 표시합니다).

간단하지 않나요? 이제 Node.js를 사용하여 우리 자신의 웹 서버를 만들어보겠습니다!

웹 애플리케이션 아키텍처

코딩을 시작하기 전에, 웹 애플리케이션의 기본 아키텍처를 이해해보겠습니다. 집을 짓기 전에 설계도를 이해하는 것과 같은 이치입니다.

일반적인 웹 애플리케이션은 세 가지 주요 구성 요소로 구성됩니다:

  1. 클라이언트: 보통은 Chrome나 Firefox와 같은 웹 브라우저로, 서버로 요청을 보냅니다.
  2. 서버: 우리의 Node.js 애플리케이션이 실행되는 곳입니다. 클라이언트로부터 요청을 받아 응답을 보냅니다.
  3. 데이터베이스: 데이터를 저장하고 검색하는 곳입니다. 이 튜토리얼에서는 데이터베이스에 대해 다루지 않겠지만, 그 존재를 알아두는 것이 좋습니다!

다음은 이를 설명하는 간단한 다이어그램입니다:

[클라이언트] <---> [서버] <---> [데이터베이스]

화살표는 이 구성 요소 간의 데이터 흐름을 나타냅니다. 멋지죠?

Node를 사용하여 웹 서버 만들기

이제 손을 더러워하고 Node.js를 사용하여 간단한 웹 서버를 만들어보겠습니다. 전혀 코딩한 적이 없어도 걱정 말아요 – 단계별로 설명해드릴게요!

먼저, Node의 내장된 http 모듈을 사용해야 합니다. 이 모듈을 사용하면 HTTP 요청을 처리할 수 있는 서버를 만들 수 있습니다.

const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!');
});

server.listen(3000, 'localhost', () => {
console.log('Server running at http://localhost:3000/');
});

이를 간단히 설명해보겠습니다:

  1. http 모듈을 require합니다. 이는 서버를 만들기 위한 도구를 제공합니다.
  2. http.createServer()를 사용하여 새로운 서버를 만듭니다. 이 함수는 서버에 요청이 들어올 때마다 실행될 콜백 함수를 받습니다.
  3. 콜백 함수에서 상태 코드를 200(OK)로 설정하고, 콘텐츠 타입을 평문으로 설정하고, "Hello, World!"를 응답으로 보냅니다.
  4. 마지막으로, 서버가 로컬호스트의 3000 포트에서 요청을 듣도록 설정합니다.

이 코드를 server.js라는 파일에 저장하고, 터미널을 열어 해당 파일이 있는 디렉토리로 이동한 후 다음 명령어를 실행합니다:

node server.js

이제 브라우저를 열고 http://localhost:3000에 접속하면 "Hello, World!"를 보게 될 것입니다. 축하드립니다, 첫 웹 서버를 만들었습니다!

Node를 사용하여 웹 클라이언트 만들기

이제 서버가 있으므로, 이 서버로 요청을 보내는 간단한 클라이언트를 만들어보겠습니다. 실제로는 웹 브라우저가 이 역할을 하지만, Node.js를 사용하여 간단한 클라이언트를 만들 수 있습니다.

다음은 서버로 GET 요청을 보내는 간단한 클라이언트입니다:

const http = require('http');

const options = {
hostname: 'localhost',
port: 3000,
path: '/',
method: 'GET'
};

const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);

res.on('data', (d) => {
process.stdout.write(d);
});
});

req.on('error', (error) => {
console.error(error);
});

req.end();

이를 간단히 설명해보겠습니다:

  1. 다시 http 모듈을 require합니다.
  2. 요청의 옵션을 설정합니다. 호스트네임, 포트, 경로, 그리고 메서드를 설정합니다.
  3. http.request()를 사용하여 요청을 만들고, 옵션과 콜백 함수를 전달합니다.
  4. 콜백 함수에서 상태 코드를 로그하고, 'data' 이벤트에 대한 이벤트 리스너를 설정하여 서버로부터 수신된 데이터를 출력합니다.
  5. 오류 처리를 설정합니다.
  6. 마지막으로, 요청을 보내기 위해 req.end()을 호출합니다.

이 코드를 client.js라는 파일에 저장하고, node client.js를 실행하면 상태 코드(200)와 서버에서 보낸 메시지("Hello, World!")가 터미널에 출력됩니다.

결론

축하합니다! 지금까지 Node.js를 사용하여 첫 웹 서버와 클라이언트를 만들었습니다. 이것은 얼음산의 표면에 불과하지만, 멋진 시작입니다. 웹 개발의 여정을 계속하면서 다양한 요청을 처리하고, HTML 페이지를 제공하고, 데이터베이스와 작업하는 등 더 많은 것을 배울 것입니다.

기억하시라, 모든 전문가는 초보자였습니다. 꾸준히 연습하고 배우며, 가장 중요한 것은 즐기세요! 웹 개발의 세계는 방대하고 흥미롭며, 당신이刚刚的第一步을 내딛었습니다. 행복하게 코딩하세요!

Credits: Image by storyset