지금까지 두 번의 프로젝트를 진행하면서 모두 백엔드 위주로 프로젝트를 진행하였다. 왜냐하면 클라이언트가 요청하는 사항을 내가 구축한 서버가 제대로 서비스를 제공하는 것이 너무 재밌었기 때문이다.
하지만 웹 서버라는게 단순히 '유저가 브라우저를 통해 발생시키는 이벤트를 클라이언트가 제대로 구현할 수 있도록 서버에 해당 데이터나 정보를 요청하는 것' 정도 라고만 생각하고 프로젝트를 진행하였기 때문에 서버에 대해 자세히 알고 싶어졌다.
단시간에 서버에 깊은 부분까지는 알 수 없겠지만 꾸준히 공부를 한다면 서버에 실체를 알 수 있게 되지 않을까?
먼저, 서버의 개념에 대해 찾아보니 '서버란 컴퓨터 네트워크에서 다른 컴퓨터에 대해 자신이 갖고 있는 기능이나 서비스, 데이터 등을 제공하는 컴퓨터. 또는 그와 같은 기능을 가진 소프트웨어' 라고 한다.
출처: http://e-words.jp/w/%E3%82%B5%E3%83%BC%E3%83%89%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3.html
여기서 서버란 단어 그대로 '제공'하는 역할을 하는 무엇인 것을 알 수 있다. 생각해 보면 주변에는 정말 많은 서버가 존재한다. 음식점에서 맛있는 음식을 만들어 제공하는 것도 음식점이 서버이며 고객이 클라이언트인 것 처럼..
이와 같이 세상에는 많은 서버가 존재한다. 그렇다면 컴퓨터에서 사용하는 서버는 모두 같은 형태이며 같은 구조인 것일까? 절대 그렇지 않을 것이다. 그래서 알아봤더니 서버에는 다음과 같은 종류들이 있었다.
출처: https://ko.wikipedia.org/wiki/%EC%84%9C%EB%B2%84#%EC%A2%85%EB%A5%98
서버가 거기서 거기겠지 라고 생각한 자신이 부끄러워졌다.. 컴퓨터 세계에도 정말 많은 서버가 존재한다. 물론 위에 나열된 서버보다 더 많은 종류가 있을 것이다.
그래서 나는 맨 마지막에 있는 웹 서버에 중점을 두고 공부하도록 하겠다.
웹 서버란 다음 두 가지로 측면에서 구분할 수 있다.
웹 서버(하드웨어)
웹 서버(소프트웨어)
출처: https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server
즉, 웹 서버란 HTTP 프로토콜을 이용하여 클라이언트의 GET, POST 등의 메소드를 활용한 요청을 서버에 전달하고 이를 서버라는 또 다른 컴퓨터가 그 요청을 처리하여 다시 클라이언트에게 전달해주는 작업이라고 생각할 수 있다.