서버란 무엇인가?

YOOJIN PARK·2021년 12월 28일
1

node.js공부하기

목록 보기
2/3
post-custom-banner

지난글에서 Node.js를 통해서 서버를 만들 수 있다는 이야기를 했었다.
그럼 오늘은 Node.js를 통해서 서버를 어떻게 구축할것이며, 서버서버 하는데 정확히 서버가 무엇인지 정리해 보려 한다.

1. 서버란 무엇인가?

서버(영어: server, 문화어: 봉사기)는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다.
출처: 위키 피디아

쉽게 말해서 서버는 우리가 요청하는 것들에 응답을 해주는 컴퓨터나 프로그램을 말한다.

예를 들어 우리가 어느 웹사이트에 들어가고 싶으면

  • 우리는 서버에 url을 이용해서 해당 사이트의 정보를 요청을 한다.
  • 그럼 해당서버는 html을 포함하여 응답해준다.
  • 그것을 해석해서 우리가 이용 가능하게 되는 것이다.

🙋‍♀️ 프론트엔드를 공부하면서 약간의 서버까지 구축할 수 있다면 본인의 아이디어를 실현하는게 정말로 가능해지는 꿈같은 이야기이다.
그러니까 그를 위해 Node.js로 서버를 어떻게 만드는지 살펴보자.😁

2. Node.js로 서버만들기

const http = require("http");

http.createServer((req, res) => {
        res.writeHead(200, {"content-type", "text/html"};
        res.end("<p>Hello World~!!</p>");      
}).listen(3000, () => {
    console.log("3000번 포트 서버 접속 완료")
})

이렇게 만든다.
어디서 많이 본 자바스크립트 인데, 단어들이 조금씩 다르다.

1. 우선 http를 소환한다.

지난번에 작성한것처럼 Node.js는 http를 이용할 수있는 패키지를 가지고 있다. 그렇기때문에 이렇게 한줄로 손쉽게 웹서버를 만들 수 있다.

2. http를 이용해서 새로운 서버를 만들어 준다(createServer).

이때 응답(response)과 요청(request)로 콜백함수를 불러서 실행될 내용들을 작성해 준다.

3.해당 내용을 작성한다.

위의 내용은 서버가 잘 작동하면 200을 소환하여 콘템츠 타입으로 html을 받는다는 이야기이다. 그리고 응답이 오면 Hello World~!!가 찍힌다. 사실 여긴 유동적이니 무슨내용인지만 알고 넘어가자.

4. 마지막으로 서버가 실행될 수 있는 포트를 연결해 준다.

포트는 서버내 프로세스를 구분하는 기능을 하며, 일반적으로는 3000번이나 8080을 많이 사용한다. 하지만 8080은이미많이쓰이고 있기 때문에 충돌 발생이 잦다.

5. 마지막으로 터미널에서 서버를 실행해 준다.

이때 node 파일이름을 터미널에 작성하여 실행해주고, localhost:3000으로 서버에서 제작한 화면을 확인할 수 있다.

💡 이때 postman 이라는 틀을 이용해서 좀더 편하게 테스트를 할 수 있다.

3. API 서버구축

자! 그럼 서버가 무슨일을 하는지 정리했고, 그런 서버를 어떻게 만드는지도 이해했다. 그럼 우리가 정보를 요청을 어떻게 해야 정보를 받을 수 있을까?

서버는 너무도 다양한 정보를 포함하고 있기 때문에, 이런것들은 규격화 해 놓은 곳이 API서버 이다. 이것들은 데이터베이스를 규칙을 정해 정리해 두었고, 우리는 좀더 쉽게 이것들을 이용할 수 있다.

const http = require("http");

http.createServer((req, res) => {
    if(req.url ==="/") {
        res.writeHead(200);
        res.end("main url")
    } else if (req.url === "/upload") {
        res.writeHead(200);
        res.end("upload url")
    } else if (req.url ==="/delete") {
        res.writeHead(200);
        res.end("delete url")
    } else {
        res.writeHead(404);
        res.end("not found")
    }
}).listen(3000, () => {
    console.log("3000번 포트 서버 접속 완료")
})

이런식으로 나누어두면 좀 더 수월하게 요청을 할 수 있고, 내가 원하는 정보를 전달받을 수 있다.

  • 라우팅(Routing) : 이런식으로 요청에 맞게 분기처리 하는 것을 라우팅이라고 한다. 추후에 express를 통해 좀더 쉽게 분기처리를 할 수 있다.

API 서버는 내가 파란니트를 사고 싶으면 (요청) 그것들을 정리해둔 백화점(API서버)으로 가는거다. 백화점에 가면 층별로 판매하고 있는 옷들이 정리되어 있고(라우팅), 4층 여성의류로 가서 파랑 니트를 찾기 훨씬 수월해진다.(뇌피셜)


우선 서버를 만드는 방법은 매우매우매우 간단하게 정리했고, 앞서 언급합 Express를 통해 좀더 쉽고 편리하게 서버를 만드는 방법을 다음 글에 정리하려 한다.👍

profile
개발자를 꿈꾸는 개린이입니다.
post-custom-banner

0개의 댓글