TIL

서버와 클라이언트 란? 웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?

추운날_너를_기다리며 2024. 8. 26. 17:08

1. 컴퓨터 세계에서 서버와 클라이언트는 무엇인가?

  • 서버 란?
    • 서버는 네트워크 상에서 데이터와 자원을 제공하는 컴퓨터 또는 시스템을 말합니다.
    • 서버는 데이터베이스 관리, 웹 페이지 호스팅, 이메일 서비스 제공 등 다양한 역할을 가집니다.
    • 서버는 여러 클라이언트의 요청을 동시에 처리할 수 있도록 설계되어 있습니다.
    • 서버란 서비스를 제공하는 컴퓨터이며, 매우 큰 용량과 성능을 가지고 있습니다.
  • 클라이언트 란?
    • 서버로부터 데이터나 서비스를 요청하는 기기 또는 소프트웨어를 말합니다.
    • 웹 브라우저, 이메일 클라이언트, 온라인 게임 등이 클라이언트의 예입니다.
    • 클라이언트는 사용자와 서버 사이의 인터페이스(통로) 역할을 합니다.
    • 클라이언트는 사용자의 요청을 서버에 전달하고 서버로부터 받은 응답을 사용자에게 보여줍니다.
  • 서버와 클라이언트의 관계를 알기 위해선 IT에 대해서 알아야 한다.
    • IT란 네트워크를 통해 컴퓨터와 컴퓨터가 데이터를 주고 받는 것입니다.
    • 자세하게 설명하자면 IT(Information Technology)는 정보기술, 즉 정보를 다루는 기술입니다.
    • 정보를 다룬다는 것은 정보를 수집하고, 생산하고, 가공하고, 분석하고, 저장하고, 활용한다는 의미입니다.
    • 정보를 다루기 위해 정보처리장치인 컴퓨터를 사용합니다.
    • 따라서 한마디로 정보기술은 컴퓨터를 이용하여정보를 처리(Procession)하는 기술입니다.

그렇다면, 서버와 클라이언트는 네트워크에서 데이터를 주는 컴퓨터를 서버데이터를 요청하고 받는 컴퓨터를 클라이언트라고 합니다.

  • 여기서 컴퓨터가 데이터를 주고받는 목적은 특정한 기능, 즉 서비스를 제공하고 사용하기 위한 것입니다.
  • 따라서 이름 그대로 네트워크로 연결된 컴퓨터 중 서비스를 제공하는 쪽을 서버라 부르고
  • 서비스를 요청하고 받는 쪽(사용하는 쪽)을 고객, 즉 클라이언트라고 부릅니다.

여기서 네트워크란 무엇인가?

  • 컴퓨터 네트워크는 통신 및 데이터 교환을 용이하게 하기 위해 함께 연결된 컴퓨터, 서버, 라우터, 스위치 및 기타 네트워크 장비와 같은 상호 연결된 장치의 모음입니다.
  • 즉, 컴퓨터 네트워크는 통신 및 데이터 교환을 허용하는 연결된 장치의 시스템이며 인터넷과 WWW는 현대 컴퓨터 네트워크의 핵심 구성 요소입니다.
  • 여기서 좀더 네트워크란 무언가와 무언가가 무언가에 의해 연결되어 있는 것을 말합니다.
  • 무언가와 무언가는 (Node)라고 부르고 링크(Link)를 통해 연결되어 있습니다.
  • 전화로 예를 들면 전화기는 전화기와 전선으로 연결되어 있습니다.
  • 따라서, 컴퓨터 네트워크에서는 컴퓨터와 컴퓨터가 통신매체로 연결되어 있습니다.

클라이언트 서버 아키텍처 (Client Server Architecture)

  • 서버간의 통신을 서버와, 클라이언트로 분리시킨 설계방식으로, 이러한 설계방식을 2-Tier 아키텍처, 또는 클라이언트-서버 아키텍처라고 부릅니다.
  • 또한 이러한 2-Tier 아키텍처에 데이터베이스가 추가된 설계방식을 3-Tier 아키텍처라고 부릅니다.

다시 한번 더 용어에 대해서 정리하겠습니다.

  • 클라이언트(Client) : 서버로 요청을 보내고, 요청한 내용을 응답(리소스)를 받아 사용하는 역할 (웹/앱을 이용하는 사용자)
  • 서버(Server) : 클라이언트 요청에 따라 적절한 응답(리소스)를 전달해주는 곳으로 필요에 따라 서버는 데이터베이스에 요청을 보내고, 회신 받은 응답(리소스)를 활용한다.
  • 데이터베이스 : 리소스를 저장하는 공간 (일종의 서버라고 볼 수 있음), 서버의 요청에 따라 적절한 응답(리소스)를 꺼내 서버에게 전달한다.

2-Tier 아키텍처란 클라이언트와 서버는 요청과 응답을 주고 받는 관계이며, 반드시 요청 후에 응답이 오며, 요청하지도 않았는데 응답이 오는 경우는 없습니다.

사진 : https://velog.io/@estell/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%9C%EB%B2%84-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

 

3-Tier 아케틱처란 2Tier 아키텍처에서 데이터베이스를 추가한 것입니다.

사진 : https://velog.io/@estell/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%9C%EB%B2%84-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

 

- 서버 클라이언트 구조(Server Client Architecture)란?

지금까지는 예시로써 간단한 그림을 통해 알아봤습니다.

지금부터는 밑의 그림을 보면서 조금더 자세하게 설명하도록 하겠습니다.

인터넷 서비스를 이용해서 우리가 웹 브라우저에서 많은 정보를 서버에서 데이터를 가져와서 보고 있습니다.

이때 서버와 클라이언트가 어떻게 통신을 하는지에 대한 것을 서버 클라이언트 구조라고 합니다.

사진 : https://rosweet-ai.tistory.com/6

  • 위 사진에서 가장 왼쪽에 있는 PC가 사용자입니다. 
  • 우리가 Browser를 통해 www.naver.com이라는 URL을 들어갑니다.
  • 여기서 브라우저(네이버, 크롬 등)을 여는 여러분들 컴퓨터와 그 브라우저를 클라이언트라고 합니다.
  • 여기서 URL을 들어기기 위해서 우리가 Enter키를 입력해서 www.naver.com을 입력하는 순간 Internet이라는 인터넷망을 통해 서버쪽에 데이터를 요청하게 됩니다.
  • 그러면 서버에서는 인터넷망을 통해서 요청이 들어왔다는 것을 알게 됩니다.
  • 그럼 서버는 요청 받은 데이터에 맞는 리소스들을 데이터베이스에서 가져와 그 데이터를 다시 인터넷망을 통해 클라이언트에 보내주는 것 입니다.

정리하자면, PC안에 브라우저라는 프로그램이 작동이 되고 서버라는 컴퓨터 안에 웹 어플리케이션이라는 프로그램이 동작이 됩니다.

그래서 이 웹 어플리케이션과 브라우저 사이에 인터넷 망을 통해 데이터를 주고 받습니다.

 

 

2. 웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?

  • 웹 어플리케이션 서버를 이해하기 위해서는 Web Server와 Application Server에 대한 개념을 정리해야 합니다.
  • Web Server
    • 소프트웨어 측면 : 웹 서버는 HTTP와 같은 프로토콜을 통해 넘어온 클라이언트 요청에 HTML과 같은 웹 페이지로 응답하는 소프트웨어 입니다.
      대표적인 예로 nginx, apache가 있습니다.
      이 소프트웨어들은 호스팅하고 있는 서버(컴퓨터)에서 웹페이지의 컴포넌트 파일들(html, image, css, js 등) 에 어떻게 접근하는지를 관리합니다.
    • 하드웨어 측면 : nginx나 apache와 같은 소프트웨어가 실제로 동작하고, 웹 페이지의 데이터를 실제로 저장하는 서버(컴퓨터)를 의미한다.
      웹 서버는 인터넷에 연결되어 IP주소로 식별되고, 이 주소를 통해 클라이언트와 연결된다.

  • Application Server
    • 정적인 HTML페이지만 다루는 Web Server는 Application Server가 필요 없습니다.
    • 하지만 Dynamic하게 클라이언트의 요청을 처리해주어야 하는 웹사이트의 경우에는 위 그림처럼 Web application이 동작하는 Application Server가 필요합니다.
    • 따라서 application server는 웹서버와 데이터베이스 사이에서 동작하는 서버를 의미합니다.
    • 어플리케이션 서버에는 web application이 동작하고 있습니다.
    • 여기서 웹 어플리케이션이란 우리가 흔히 사용하는 python, javascript와 같은 프로그래밍 언어로 구현되며, database connector, web server connector등을 활용해 웹서버 뒤에서 실제 클라이언트의 요청을 처리 해주는 역할을 맡은 프로그램을 의미합니다.
  • WAS(Web Application Server)

사진 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

사진 : https://medium.com/@chrisjune_13837/web-%EC%9B%B9%EC%84%9C%EB%B2%84-%EC%95%B1%EC%84%9C%EB%B2%84-was-app%EC%9D%B4%EB%9E%80-692909a0d363

 

WAS를 설명하기전에 Static_pages와 Dynamic_pages에 대해 알아봅시다.

  • Static pages 란
    • image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미한다.
    • 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환한다. (말 그대로 정적인 컨텐츠)
    • 웹 서버에서 제공한다.
  • Dynamic pages
    • 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 의미한다.
    • 데이터베이스, 서버 내 로직 등을 활용해 만들어진 컨텐츠를 반환한다.
    • 웹 어플리케이션 서버에서 제공한다.

위의 그림을 통해 Web Server란 HTTP 요청을 받아 Static contents를 제공하는 서버, 프로그램으로 HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당합니다.

기능 1 : 정적인 컨텐츠 제공 - WAS를 거치지 않고, 바로 요청한 컨텐츠를 제공할 수 있다.

기능 2 : 동적인 컨텐츠 제공을 위한 요청 전달 - WAS에 요청을 보내고, WAS가 처리한 결과를 클라이언트에 전달한다.

 

  • WAS(Web Application Server) 웹 어플리케이션 서버
    • WAS란 다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버, 프로그램 입니다.
    • 즉, HTTP 프로토콜을 기반으로 하여 클라이언트의 요청에 따라 구현된 로직을 통해 동적으로 만들어진 컨텐츠를 반환합니다.
    • 데이터베이스 접속 기능, 여러 개의 트랜잭션 관리 등을 수행합니다.
    • 또한, 웹 서버가 보낸 JSP, PHP, ASP.net등의 파일들을 실행하고 수행결과를 다시 웹 서버로 보내주는 역할을 합니다.
    • 결국, 웹 어플리케이션 서버는 웹 서버에서 요청을 받고, 이를 처리하는 웹 컨테이너로 보내 로직(알고리즘, DB 연결 등) 을 수행하고, 그 결과를 다시 웹서버로 보내 최종적으로 클라이언트에게 보내줍니다.
  • 그렇다면 WAS가 Web Server의 모든 기능을 수행하면 되지 않나?
    • 기능을 분리하여 서버 부하를 방지한다.
    • 물리적으로 분리하여 보안을 강화시킨다.
    • 여러 대의 WAS를 연결해 로드 밸런싱 용도로 사용할 수 있다.
    • 여러 언어의 웹 어플리케이션 서비스가 가능하다.

결론, WAS를 이용하는 것은 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 각기 사용하는 것 입니다.

 

  • Game Server (게임서버)
    • 게임 서버란 인터넷 상에서 여러 플레이어가 같이 게임을 할 수 있기 위한 프로그램이나 해당 프로그램을 기동중인 컴퓨터를 말합니다.
    • TCP Server, Binary Server, Stateful Server 라고도 불립니다.
    • 클라이언트가 패킷을 서버에 전송해도 서버에서 응답을 꼭 보내주지 않아도 됩니다.
    • 서버에서 클라이언트로 패킷을 전송할 수 있습니다.
    • 실시간 통신이 중요합니다.

게임 서버는 실질적으로 게임을 진행하는 역할을 담당합니다.

게임 서버는 유저간의 동기화, NPC의 인공지능, 아이템 시스템 등 게임 시스템의 총 집합이라 할 수 있습니다.

여기서 이 여러가지의 집합을 설계에 따라서 총괄서버 하청서버로 나눌 수 있습니다.

게임 진행에 필요한 모든 게임의 요소들을 총괄하여 진행시켜주는 작업을 하기때문에 가장 많은 일을 담당합니다.

게임을 진행하는 요소는 방대하기 때문에 하나의 서버에서 처리하는데는 많은 부담을 가집니다.

그렇다면 이제 이 질문에 답할 수 있어야 한다.

어째서 와우와 같은 갓겜 통합된 월드의 게임 서버를 만드는데 가장 문제가 되는 것은 무엇인가?

첫번째는 통합된 월드내 수많은 유저의 정보를 실시간으로 저장할 수 있는 데이터베이스가 가장 문제가 됩니다.

서버군의 유저수를 통제하는 것도 데이터베이스의 문제가 주요인이다.

그 이유는 데이터베이스가 실시간으로 동시에 처리할 수 있는 능력은 시스템에 따라 한계치가 있기 때문입니다.

두번째는 데이터베이스의 부하를 분산하기 위해 replication 기능을 생각해 볼 수 있습니다.

하지만 replication 기능도 상황에 따라 한쪽 데이터베이스에서 오류가 발생할 경우 처리문제는 상당히 까다롭습니다.

실시간으로 오류 발생 즉시 다른 한쪽으로 데이터베이스 커넥션을 바꾸어야 하는데 이도한 임시방편일 뿐입니다.

부하가 심해 오류가 발생되었다고 오류가 없는 데이터베이스 커넥션을 옮긴다면 한쪽으로 부하가 집중되어 역시 오류가 발생할 문제가 다분해 지기 때문이다.

세번째는 실시간으로 부하를 분산해야 하는 문제가 있다. 갑자기 하나의 지역에 많은 유저가 몰리게 된다면 시스템의 한계에 의해 서버의 처리 속도가 현저하게 느려지거나 심할경우 OS가 다운이 될 수 있기 때문이다.

부하를 실시간으로 분산시킬 수 있는것은 상당히 까다로운 문제라고 합니다.

replication? 데이터베이스의 복제 기능이다. 똑같은 정보를 가지고 있는 데이터베이스들끼리 연결되어 한쪽 데이터베이스에 정보가 입력된다면 입력된 데이터를 다른 데이터베이스에도 똑같이 입력되게 하는 데이터베이스 기능이다.

 

위의 내용은 게임 서버에서 중요하게 다루어야 하는 내용으로도 직결된다.

  • 게임 서버 개발의 복잡성과 문서화의 필요성
    • 게임 서버 개발은 웹 서버 개발에 비해 복잡도가 높고, 다양한 요구 사항과 짧은 일정으로 인해 더욱 철저한 관리가 요구 됩니다.
    • 왜냐하면 게임 서버는 실시간으로 다수의 사용자와 상호작용하며, 사용자의 행동에 따라 동적으로 변화하는 상태를 관리해야 하기 때문입니다.
    • 문서화는 개발 과정에서의 의사소통을 원할하게 하고, 프로젝트의 구조를 명확하게 이해하는 데 도움을 줍니다.
    • 왜냐하면 문서화를 통해 개발자는 프로젝트의 전체 구조와 각 기능의 상세한 동작 방식을 명확하게 파악할 수 있기 때문입니다.
    • 또한, 문서화는 유지보수와 향후 개발에 있어서도 중요한 역할을 합니다.
    • 왜냐하면 문서화된 정보를 통해 새로운 개발자가 프로젝트에 빠르게 적응할 수 있고, 기존 기능의 수정 및 추가 개발이 용이해지기 때문입니다.
  • 문서화의 실천 방법과 도구 소개
    • 첫 번째 단계로 문서화할 내용의 범위를 정의해야 합니다.
    • ex) 핵심기능, API 명세서, 데이터 모델, 서버 아키텍처 등 프로젝트의 이해에 중요한 요소들을 중심으로 문서화 범위를 설정해야 합니다.
    • 다음으로, 문서화 도구를 선택 ex) Markdown, confluence, Swagger 등이 널리 사용된다.
    • 또한, 문서화 과정을 프로젝트의 일부로 통합하는 것이 중요합니다.
    • 왜냐하면 문서화 작업을 별도의 작업으로 여기기보다는 개발 과정의 일환으로 인식할 때, 문서화에 대한 저항감을 줄이고 지속적으로 문서를 업데이트할 수 있기 때문입니다.
  • 데이터 패킷의 중요성
    • 패킷은 네트워크가 전달하는 데이터의 형식화된 블록을 뜻하며 ,서버와 클라이언트가 상호 정보를 주고받는데 사용한다.
    • 게임 서버는 온라인 게임에서 매우 중요하며, 크게 데이터 저장, 데이터 분배, 데이터 검증의 중요 역할을 수행합니다.
    • 최초 패킷 교횐 시점에 대해서 알아야 한다.
    • 최신 정보를 어느 시점에 클라이언트가 제공받을지에 대하여 정의할 수있다.
    • 예를 들어 가방 내 보유 아이템 정보는 모든 정보를 실시간으로 서버에 반영할 필요가 없다.
    • 이유는 가방을 열기 전에는 자신이 무엇을 보유하고 있는지 알 필요가 없다.
    • 패킷 보유 시점을 알아야 한다.
    • 최신 패킷을 제공받은 이후에 일부 정보를 인스턴스 공간에 보관 후 로컬에서의 변동 사항이 없을 경우 마지막으로 제공받은 정보를 유지하는 것도 최적화의 하나의 방법 중 하나이다.
    • 또한 가방을 오픈한 이후 필터 등 간단한 기능으로 보유 정보만 가지고 충분히 처리 가능하다.
    • 초기 패킷 정보에 대해 알아야 한다.
    • 가방에 보유 아이템이 5000개라고 가정했을 때 한 번에 모든 정보를 받아오는 것은 게임 퍼포먼스에 좋지 않은 영향을 준다.
    • 화면에 50개 정도 노출이 가능하다고 가정한다면 최초 통신 시점에 약 100개의 아이템 정보를 제공받은 후 화면 전환 시점에 따라 추가 정보를 제공받는 것이 더 합리적인 성택이다.
    • 위의 사항은 예시일 뿐이며, 시스템 설계 단계에서 위와 같은 상황을 만들지 않는다.
    • 여기서 기억해야 할 부분은 정보의 갱신과 패킷을 주고받는 시점 정도는 기획 단계에서 고려하는 것이 좋다.
    • 데이터 저장은 서버의 주요 역할 중 하나로 다양한 정보를 저장한다.
    • 필요에 따라 클라이언트에게 제공하거나 새로 발생괸 정보와 서버 시뮬레이션을 통해 생성된 정보를 기존 데이터에 갱신하기도 합니다.
    • 이러한 데이터 저장 기능을 DB라 하며, 게임 서버와 다르게 별도 서버로 구성해서 사용하는 경우가 많다.
    • DB는 매우 중요한 정보를 저장하며, 이곳에 문제가 생길 경우 게임 정보가 최신으로 저장되지 않아 데이터가 롤백 되는 사건 사고가 발생하기도 한다. (ex 메이플 월드)
    • 데이터 분배(브로드 캐스팅)은 온라인 상에서 서버와 클라리언트 통신이 상호 통신한다면 내 주변 사람들은 나에 대한 정보를 실시간으로 확인 할 수 없다.
    • 예를 들어 내가 스킬을 사용했을 때 주변 다른 유저들이 나의 현재 정보를 알 수 없다면 나는 가만히 서있는 상태 (또는 화면성에 보이지 않는 상태)가 된다.
    • 이렇듯 나와 그 주변 정보를 제공받기 위해서 서버는 동일 정보를 일정 영역에 다수의 사용자에게 제공하는데 이를 브로드 캐스팅이라 한다.
    • 브로드 캐스팅 기술(데이터 분배)을 이용하여 우리는 온라인 상에서 내 주변 사람들의 정보를 실시간으로 확인 할 수 있으며, 접속한 모든 사용자를 대상으로 하는 것이 아니라 내가 볼 수 있는 영역을 기준으로 제한된 공간에서 정보를 분배한다.
    • 데이터 검증은 서버에서 실시간(또는 특정 주기) 클라이언트를 통해 발생괸 정보를 검사하고 정상적인 데이터인지 확인하는 역할 또한 수행한다.
    • 이러한 검증은 전투, 아이템 획득, 소모, 쿨타임 등 게임 내 밸런스와 PLC(게임 플레이 시간)에 영향을 주는 매우 주요 정보들의 변조를 막고 안정적인 게임 서비스르 위해 꼭 필요한 기능이다.
    • 패킷 변조는 서버가 아무리 철저하게 통제한다 하더라도 클라이언트에 대한 의존도가 없을 수가 없다.
    • 클라이언트의 잘못된(또는 변조된) 정보를 제공받았을 경우 서버가 이를 검증하지 못하면 현관문을 열어 놓고 외출하는 것과 같다.
    • 기술 구현에 따라 다르지만 서버와 클라이언트 상호 시뮬레이션을 통해 교차 검증 시스템을 많이 사용하며 오차 범위내 정보만을 허용한다.
    • 데이터 검증 과정에서 서버의 시뮬레이션 결과가 가장 높은 우선순위를 가집니다.
  • 물론 게임 서버에서는 FPS게임으로 치면 반응성을 굉장히 중요시 여겨야 한다. 
    하지만 이러한 특수한 부분을 제외하고는 게임 개발을 할때 문서화 작업을 통해 어떻게 진행할지에 대한 자세한 틀을 잘 잡고 데이터 패킷을 어떻게 잘 다룰 것인지가 제일 게임 서버에서 중요하다고 여겨 이렇게 적어봤습니다.
  • 웹 어플리케이션 서버와 게임 서버의 공통점과 차이점
    • 공통점
      • 클라이언트에서 데이터를 보내면 서버는 받은 데이터를 저장할 데이터는 잘 저장하고 보내줄 데이터는 문제없이 응답해주는 역할을 가집니다.
      • 즉, 제공하고자 하는 서비스에 맞게 데이터를 가공하거나 다른 서버와 상호작용하면서 즉석에서 사용자에 맞는 데이터를 보내주는 역할을 가집니다.
    • 차이점
      • 게임마다 다르긴 하겠지만 보통의 GameServer는 데이터의 변화량과 응답 속도에 중점을 두고 WAS는 데이터 이용의 효율성과 유지 보수의 편의성에 중점을 둡니다.
      • 웹서버는 연결을 '끊는다는' 개념이 없습니다.
      • 연결을 맺고 데이터를 주고 받는 것은 TCP 서버 방식입니다.
      • 웹의 발전은 브라우저 기반위에서 이루어집니다.
        HTTP 프로토콜의 특징인 connectionless, stateless는 게임에 어울리지 않았었다.
      • 게임 서버는 꼭 웹으로 개발할 필요가 없기 때문에 커스텀한 클라이언트 프로그램인 게임을 위해 발전해 왔습니다.
        그렇다 보니, HTTP 프로토콜에서 소요되는 cost마저 아낄 수 있습니다.
        소켓을 직접 통제하고, 헤더와 인증, 보안 처리 모두 커스텀하게 처리했다.
      • 결국 둘의 차이는 게임서버의 반응성이 웹서버보다 훨씬 좋습니다.
      • connection을 밎고 끊는 비용, connection이 생성되고 필요한 작업을 위해 매번 DB를 질의하는 비용 모두 줄여서다로 반응성을 높인것이 GameServer이다.
      • 동적 컨텐츠인 게임은 웹처럼 다수의 사용자에게 유사한 HTMP 코드를 동일하게 전송할 수 없었고, 실시간으로 변동되는 데이터를 다뤄야했기에, 다른 방향으로 발전되었습니다.
      • 게임 서버에서는 반응속도와 함께, 데이터 무결서을 보장해주어야 합니다.
      • 게임 사용자는 조금의 지연도 용납해주지 않습니다.
      • 반면 웹은 실제 DB에서 처리되고 있는 데이터보다 조금 전 예전 데이터를 주더라도 크게 문제 삼지 않는다.
      • 그러다보니 캐싱이 더 쉬워지고, 브라우저도 캐싱을 하며, 사용자도 이를 인정하고 새로운 데이터를 전달 받기 위해 새로고침을 직접 한다.
      • 사용자들 마저 이 과정을 불쾌감으로, 오류로 받아들이지 않고 자연스럽게 받아들이는 것이 포인트다.
      • 애초에 데이터의 변화량/응답속도가 너무나도 중요한 가치인 게임과, 생산성/확장성이 더 중요한 웹은 궤를 달리 할 수 밖에 없다.
      • 게임 서버는 특수성으로 인해 웹서버만으로 모든 시스템을 구축/운용 하는 것도 안되고 ,커스텀 TCP 서버는 생산성이 너무 떨어진다.