서버는 무엇인가
많은 사람들이 서버라는 단어를 부르고, 실생활에서 사용하고 있다.
단적인 예로 카카오톡이 안되면 서버 장애, 잘 들어가지던 온라인 게임이 접속이 안 되는 경우 서버 점검 중이다 라는 말을 흔히 주변에서 사용한다. 그렇다면 이 서버에 대해 얼마나 알고 있을까.
이번에는 서버와 클라이언트에 대해 알아보고자 한다.
서버(Server)는 서비스를 클라이언트에게 네트워크를 통해 서비스를 제공하는 컴퓨터를 의미한다.
여기서 서비스는 클라이언트의 요청을 받아 응답을 보내주고, 클라이언트는 요청한 것에 대해 서버로부터 응답을 받는 과정과 결과를 말한다. 웹 사이트를 운영하기 위해서는 직접적 혹은 간접적으로 서버가 필요하고, 일정 수준 이상의 규모가 있는 기관에서는 데이터베이스와 서버에 방화벽, 라우터 등이 붙어 네트워크를 형성한다.
서버는 일반적으로 고사양의 컴퓨터를 사용한다. 온라인 게임이나 웹 사이트처럼 특정 시간대, 특정 시기에 많은 인원이 한 곳에 모이게 될 경우, 서버에 들어오는 요청(request)이 수없이 많기 때문에 서버에 상당한 무리가 가게 되기 때문이다.
또한 규모가 제법 있는 기관의 경우 별도의 서버실을 운영하는 경우가 많은데, 이 서버실은 쉼 없이 서버가 동작되어야 하기 때문에 서버를 동작시키기 위한 최적의 조건으로 세팅되어 있다. 서버실에는 기본적으로 항온항습기(온도와 습도를 일정하게 유지하는 장비)와 히터(에어컨 포함), UPS(무정전 전원 장치)와 같은 고가의 장비들이 항시 작동되고 있다.
또한 서버의 재미있는 점이 한 가지 있는데, 이는 서버용 장비(서버용 PC)의 전원 버튼이다.
이 장비의 전원 버튼은 일반적인 PC보다 매우 작은 것을 알 수 있는데, 서버는 24시간 가동되어야 하기 때문에 실수로 눌러 꺼지게 되면 굉장히 난감한 상황이 발생할 수 있다. 따라서 서버가 실수로 꺼지는 것을 방지하기 위해 전원 버튼을 본체 측면이나 후면에 배치하기도 하고, 자물쇠를 풀어야 누를 수 있게 만든 장비도 있다.
최근에는 스마트키나 지문으로만 서버를 키는 방법도 나오게 되었다.
서버의 종류로는 FTP 서버(파일 전송), 웹 서버, 데이터베이스 서버 등이 있다.
FTP 클라이언트 프로그램의 대표는 파일 질라로, 대용량으로 파일을 전송하는 것이 그 목적이다.
웹서버는 대표적으로 아파치(Apache)가 있고, 이 웹 서버는 웹 사이트를 동작시키기 위한 것이 그 목적이다.
마지막으로 데이터베이스 서버는 데이터베이스를 구동시키기 위한 서버로, 수많은 데이터들이 저장되어 있기 때문에
일반적으로 가장 빠르고, 가장 메모리가 많은, 가장 성능이 뛰어난 서버가 DB 서버로 사용된다.
클라이언트, PC인가 사용자인가
앞서 서버에 대해 알아보았으니 이번에는 서버와 통신하는 클라이언트에 대해 알아보자.
클라이언트(client)는 네트워크를 이용하여 서버 시스템과 통신하는 PC나 스마트폰을 일컫는데,
이것이 상황에 따라 사용자를 지칭할 수 도 있고, 사용자의 PC를 지칭할 수도 있으며, 사용자의 PC에서 동작하는 프로그램이 될 수도 있다. 클라이언트는 서버에서 받아온 응답(데이터, 자료 등)을 사용자의 화면에 출력하고, 사용자가 요청한 것을 서버에 전달하기 위해 웹 브라우저를 사용한다.
클라이언트는 일반적으로 팻 클라이언트, 씬 클라이언트, 하이브리드 클라이언트로 구분된다.
팻 클라이언트(fat client)는 스스로 다양의 데이터를 처리하는 클라이언트로 서버에 반드시 의지하지는 않는 특징이 있다.
두 번째로 씬 클라이언트(thin client)는 최소한의 클라이언트 개념으로, 클라이언트에서는 아무 처리를 하지 않고 대부분의 처리를 서버 측에 맡기는 시스템을 말한다. 이 방식은 2000년대 초반까지 보급되던 구성으로, 당시에는 클라이언트 PC의 성능이 부족해서 대부분의 작업을 서버에 맡기게 된 것이 시작이다. 이 방식의 장점은 서버에 대부분의 처리를 넘기다 보니 상대적을 보안에 유리한 장점이 있다.
마지막으로 하이브리드 클라이언트(hybrid client)이다.
팻 클라이언트와 씬 클라이언트를 합쳐놓은 것으로, 팻 클라이언트처럼 기능을 하지만, 보안의 문제로 인 해 데이터 보관을 서버에 의지하는 방식을 의미한다.
이렇게 서버와 클라이언트에 대해 짧게 알아보았다.
서버와 클라이언트의 동작 원리와 구분 방법에 대해 알고 있다면,
서버의 특성을 좀 더 잘 이해하고 그것을 활용해볼 수 있지 않을까 싶다.