[TIL] 게임 서버와 클라이언트 - 서버 구동 환경

KYJ의 Tech Velog·2024년 3월 12일
0

서버 구동 환경

서버의 컴퓨터는 클라이언트 컴퓨터와 크게 다르지 않지만, 운영체제와 하드웨어가 조금 차이가 있습니다.

서버를 구동하는 운영체제가 다릅니다. 1990년대 중반에는 Solaris 같은 것이 사용되다가 1990년대 후반부터 윈도우 서버가 사용되기 시작했습니다. 그 이유는 1995년에 이미 IOCP를 제공하였기 때문에 최소 수백 개 이상의 네트워크 클라이언트와의 매우 빠른 처리 속도를 만족시켜 주었기 때문입니다. 또한, 윈도우 서버용 게임 서버를 개발할 때는 일반 윈도우를 사용하면서 서버와 클라이언트를 한 자리에서 구동할 수 있었습니다.

2000년 이후부터 IOCP에 준하는 기능을 리눅스와 FreeBSD 같은 유닉스 계열 운영체제에서 제공하면서, 무료 서버 운영체제로 리눅스와 윈도우 서버가 골고루 쓰이기 시작했습니다. 지금까지도 두 운영체제의 호불호 논쟁은 흥미로운 주제라고 하네요.

서버가 구동되는 장소도 다릅니다. 서버를 안정적으로 제공해야 한다는 점을 무시한다면 어디서든 구동해도 괜찮습니다. 하지만 서비스 안정성은 굉장히 중요한 부분이라고 이야기해왔습니다.

서버를 설치할 때는 다음과 같은 요구사항이 있습니다.

  1. 인터넷 품질이 신뢰성이 있어야 합니다. 인터넷이 끊어지거나 느려지지 않아야 합니다.
  2. 서버가 쉽게 고장나지 않아야 합니다. 컴퓨터를 365일 24시간 계속 켜놓는 상황에서 장기간 고장이 없어야 합니다.
  3. 도난이나 침입 사고에서 안전해야 합니다.

이런 부분들 때문에 규모가 큰 서버는 데이터센터라는 특별한 건물에 설치되는 것이 일반적입니다. 빠르고 안정적인 인터넷 회선이 설치되어 있으며, 에어컨과 공조기로 적정한 온도와 습도를 유지하고, 감시 요원과 여러 겹의 철문, 철조망, 콘크리트 벽으로 보안도 유지합니다.

서버 하드웨어는 Xeon CPU 같은 고가의 CPU와 ECC RAM이라는 내구도 높은 메모리를 사용하기도 합니다. RAID 디스크 드라이브를 사용해서 고장이 나더라도 쉽게 디스크를 손실없이 교체할 수 있게도 합니다. 서버 전용 하드웨어는 일반 하드웨어보다 성능이 크게 뛰어나지 않음에도 굉장히 비쌉니다. 하지만 쉽게 고장이 나지 않고 고장이 나더라도 켜진 상태에서 노후 부품을 교체할 수 있는 등 특별한 기능을 가지고 있죠.

이렇게 데이터센터에 직접 서버 하드웨어와 운영체제를 설치해서 관리하는 것을 자체 서버 혹은 온프리미스 줄여서 온프림 서버라고 합니다. 온프림 서버는 초기 비용이 많이 들고, 서비스 이용자 수가 급격히 늘거나 줄어들 때 빨리 대응하기 어렵다는 단점이 있습니다. 외국에 서버를 구축하려고 하면 직접 가야 하는 불편함도 있죠.

대안으로 클라우드 서버가 등장하게 됩니다.

클라우드 서버

클라우드 서버를 알기 위해서 가상 머신부터 알아보겠습니다.

가상 머신은 컴퓨터의 안의 가상 컴퓨터입니다. 우리는 컴퓨터에 운영체제를 설치하고 그 위에 응용 프로그램을 실행시킵니다. 그런데 가상 머신이라는 프로그램을 실행하면 그 안에 또 다른 운영체제를 설치하고 그 위에 또 다른 프로그램을 실행하는 것이 가능하죠.

  1. 윈도우 안에 또 다른 윈도우를 설치하고 그 안에 위험한 프로그램을 설치해서 실험해볼 수 있습니다. 그로 인해 운영체제가 망가져도 가상 머신 안에서의 일이기 때문에 컴퓨터는 안전합니다.
  2. 가상 머신에 리눅스 운영체제를 설치해서 두 운영체제를 동시에 사용할 수 있습니다. 새로운 운영체제를 처음부터 만들어 보는 일도 가능합니다.
  3. 가상 머신에 설치해놓은 운영체제와 각종 설정을 통째로 백업할 수 있습니다. 가상 머신 안의 운영체제가 바이러스로 인해 망가지면 미리 백업해놓은 가상 머신으로 복원이 가능합니다.

다양한 작업을 해보기에 완벽해보이는 프로그램이죠. 하지만 대가가 분명합니다. 리얼 머신보다는 실행 속도가 느리다는 것입니다. 또한, 운영체제를 여러 개 동시 구동하는 것이기 때문에 메모리도 많이 차지하게 됩니다. 최근엔 도커라는 소프트웨어로 리얼 머신의 성능에 근접하게 만들 수도 있다고 하네요.

가상 머신의 특징을 활용한 것이 클라우드 서버입니다. 클라우드 서버의 실체는 리얼 머신 위에 구동하는 가상 머신의 집합입니다. 서버 컴퓨터만 가상 머신으로 구동하는 것이 아니라, 네트워크 장치나 외장 디스크 드라이브도 모두 가상화되어 있습니다. 리얼 머신 한 대 안에서 여러 서버 운영체제가 동시에 작동합니다.

온프림 서버와 상황을 비교해봅시다. 한국에 있는 개발자가 독일에 있는 데이터센터에 온프림 서버를 한 대 구축할 때 가장 빠른 방법은 독일에 있는 서버 호스팅 업체에 연락해서 물리적 서버를 임대한 후 거기에 운영체제를 설치해달라고 의뢰하는 것입니다. 거기에 개발자가 원하는 소프트웨어를 인터넷으로 원격 제어하여 설치하는 것입니다. 아무리 빨라도 몇 시간이 소요가 될 것입니다.

그런데 클라우드 서버에서는 훨씬 빠르게 증설할 수 있습니다. 클라우드 서버 업체에 웹 사이트에 들어가서 독일에 어떤 운영체제 기반의 어떤 서버가 필요한지를 입력만 하면 됩니다. 필요한 CPU 개수, RAM 용량, 디스크 용량, 필요한 운영체제, 심지어 기본으로 설치되는 소프트웨어도 고르기만 하면 됩니다. 빠르게는 몇 분, 늦어도 몇십분 만에 서버 한 대가 설치 완료됩니다.

온프림 서버의 임대 단위는 월 단위가 그나마 가장 유연한 요금제라고 합니다. 심지어 임대가 아니고 구매한 서버라면 서버 개수를 축소할 때 귀찮아지겠죠. 클라우드 서버에서는 이러한 문제가 없습니다. 클릭 몇 번이면 충분하죠.

물론 클라우드 서버의 사용 단가가 비쌉니다. 그래도 서버의 개수를 쉽게 조절할 수 있으므로, 총 소유 비용은 오히려 적습니다. 또한, 전 세계 어디든지 서버를 늘리고 줄일 수 있으므로 사용자 수에 대응하기가 쉽습니다.

다만 클라우드 서버는 처리 속도 측면에서 물리적 서버와 달리 균일하지 않다는 단점이 있습니다. 가상 머신에서 작동한다는 것 자체가 성능이 떨어지는 이유지만, 리얼 머신 한 대에서 모르는 사람이 구축한 서버가 작동하고 있기 때문에 간헐적으로 원치 않는 지연 시간이 발생하기도 합니다. 때문에 레이턴시가 민감한 게임에서는 두 서버를 혼용하곤 합니다. 동시접속자 기복이 심하지 않거나 처리 속도가 중요하다면 물리적 서버, 이외에는 클라우드 서버를 주로 사용합니다.

물리적 서버클라우드 서버
특징서버 컴퓨터 한 대에 운영체제 하나를 구성서버 컴퓨터 한 대에 여러 운영체제를 가상 머신으로 구동
서버 한 대당 유지 비용낮다높다
서버 증설 속도느리다(하루)빠르다(몇 분)
서버 철거 속도느리다(불가능할수도)빠르다(몇 분)
자동 스케일 아웃불가능가능
처리 속도의 균일성높다낮다
장애 처리느리다빠르다

클라우드 서버가 제공하는 기능은 계층별로 다양합니다.

IaaS는 가상 머신 자체를 제공하는 서비스입니다. 원하는 만큼 가상 머신을 빌려 쓸 수 있습니다. IaaS에서 가상 머신 인스턴스를 생성한 후에 거기에 운영체제를 설치해야 합니다. 설치되어 있는 경우도 있습니다. 이 운영체제는 마음대로 제어가 가능합니다. 여기에 원하는 서버 프로그램과 데이터 파일을 복사해 넣고 실행하면 됩니다. AWS EC2, Azure Virtual Machine이 예시입니다.

PaaS는 IaaS보다 상위 계층에서 작동합니다. PaaS에서는 운영체제뿐만 아니라 그 위에서 어떤 프레임워크 소프트웨어가 이미 구동되고 있으며, 그 위에 서버 코드나 데이터 파일을 업로드해야 합니다. 운영체제를 직접 설치하거나 서버 구동에 필요한 기본 프로그램을 설치하는 과정을 생략할 수 있는 것이죠. 네트워크 설정도 생략할 수 있습니다. 더 쉽고 빠르게 서버를 개설할 수 있다는 것입니다. 다만 비교적 자유도가 낮습니다. 운영체제에는 접근조차 할 수 없고 프레임워크의 기능을 뛰어넘는 작업은 하기 어렵습니다. AWS Lambda, Azure Functions, 여러 웹 호스팅 서비스가 예시입니다.

SaaS는 PaaS보다 상위 계층에 있습니다. 코딩 자체가 불필요하며 과금이나 데이터 분석, 페이스북 로그인 연동같은 특화된 기능들을 제공합니다. 이것을 사용 할 때는 인증 키나 매개변수 설정 등 용도에 맞게 설정하는 것이 전부라고 보면 됩니다. 가장 빠르고 편리하게 이용할 수 있지만 자유도가 가장 낮습니다. AWS Cognito, Azure Marketplace, Google Analytics 등이 예시입니다.

0개의 댓글