2024. 8. 27. 12:02ㆍ[Node.js_6기] 스탠다드반
컴퓨터 세계에서 서버와 클라이언트는 무엇인가?
일상 생활에서 서버라는 단어는 흔하게 쓰인다. 티켓팅을 하다가 서버가 터져서 실패했다거나, 게임을 하다가 서버 상태가 원활하지 못해서 공략에 실패했다는 이야기는 IT 업계에 종사하는 사람이 아니더라도 흔히 듣는 이야기이다. 그럼 이때 말하는 서버는 정확히 어떤 개념일까?
간단히 말하자면, 서버는 '서비스 제공자'라고 불린다. 이때 서비스를 제공하는 대상은 클라이언트라고 하며, '서비스 요청자' 불린다. 클라이언트가 원하는 서비스를 요청하면 서버가 해당하는 서비스를 제공하는 것이다.
▷ 클라이언트(Client)란?
서버에 서비스를 요청하고 사용자(user)로, 크게 장치 또는 프로그램이다. 예를 들어 누군가 크롬 브라우저를 사용하여 특정 정보를 구글링 할 때, 클라이언트 장치는 PC/핸드폰 등이고 클라이언트 프로그램은 크롬 브라우저라고 할 수 있다.
▷ 서버(server)란?
네트워크를 통해 클라이언트가 요청한 서비스를 제공하는 시스템이다. 예를 들어 '김치볶음밥 레시피'가 궁금해서 구글에 검색했을 때, 클라이언트가 이 정보를 달라는 요청을 웹 서버에 보내게 되고, 웹 서버는 해당하는 정보가 담긴 페이지를 제공하게 된다.
웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?
웹 어플리케이션 서버와 게임 서버는 형태가 비슷해보이지만, 목적이 다른 만큼 분명한 차이를 보인다. 자세한 내용을 다루기 전에 잠깐 짚고 넘어가야 할 개념이 있다. 웹 어플리케이션 서버는 흔히 말하는 웹 서버와 혼동되기 쉬운데, 약간의 차이가 있다. 웹 서버는 보통 정적인 콘텐츠를 제공하며, 동적인 콘텐츠에 대한 요청을 받았을 경우 이를 웹 어플리케이션 서버에 전달한다. 이때 받은 동적인 콘텐츠에 대한 요청을 처리하는 것이 웹 어플리케이션 서버인 것이다. 자세한 내용은 아래에서 살펴보자.
▷ 웹 어플리케이션 서버(Web Application Server)란?
HTTP 프로토콜을 기반으로 다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버, 프로그램을 말한다. 보통 클라이언트와 다이렉트로 연결되지 않고, 웹 서버를 통해 요청을 받고 결과를 전달한다.
▷ 게임 서버(Game Server)란?
멀티 플레이가 필요한 게임을 위한 서버로, 실시간 소통이 중요하다. 게임 형태에 따라 서버 형태가 결정되기 때문에 C++, C# TCP 등 다양한 형태가 있다.
□ 공통점
웹 어플리케이션 서버와 게임 서버는 (조금 당연하게도...) 둘 다 '서버'인 만큼, 기본적으로 클라이언트의 요청을 받아 서비스를 제공한다는 공통점이 있다.
□ 차이점
웹 애플리케이션의 경우, 기존에 저장된 DB에서 데이터를 호출하는 등 현재 시점과는 다른 묵은 데이터를 내주어도 사용자들이 이를 오류라고 여기지 않는 편이다. 새로고침을 하거나 새로운 방식의 요청을 통해 원하는 서비스를 제공받으려는 것이 자연스럽다. 웹의 주된 목적이 '생산성'과 '확장성'에 있기 때문이다.
그러나 게임 서버의 경우, 현재 시점의 정확한 데이터를 빠르게 주고 받을 수 있어야만 한다. 온라인 게임에서 보스전을 진행하고 있다고 가정해보자. 포션을 먹었는데, hp가 바로 차오르지 않아서 보스의 평타 한대에 죽어버린다면... 이걸 용납할 게이머는 없다. 이 때문에 게이머들이 실시간 라이브로 공통된 환경에서 즐길 수 있도록 '데이터 변화량'을 빠른 '응답 속도'로 처리하는 것이 게임 서버의 주된 목적이라고 할 수 있다.
'[Node.js_6기] 스탠다드반' 카테고리의 다른 글
OSI 7계층 자세히 알아보기 - 전송 계층 (2) | 2024.09.23 |
---|---|
OSI 7계층 자세히 알아보기 - 네트워크 계층 (1) | 2024.09.09 |
OSI 7계층 자세히 알아보기 - 데이터 링크 계층 (0) | 2024.09.04 |
OSI 7계층 자세히 알아보기 - 물리계층 (0) | 2024.09.02 |
OSI 7계층 기본 개념 알아보기 (0) | 2024.08.28 |