클러스터와 서버

Cluster and servers

Strix Cloud에서는 “클러스터”라고 하는 단위를 이용하여 클라우드상의 서버를 관리합니다. 클러스터는 일반적으로 여러 서버 인스턴스로 구성되며, 각 클러스터에는 “마스터 서버”라고 하는 특별한 서버 인스턴스가 반드시 1대 존재합니다. 클러스터 내의 다른 서버는 “방 서버”라고 합니다.

참고

부하가 작은 경우에는 1대의 서버 인스턴스가 마스터 서버와 방 서버를 겸할 수도 있습니다.

마스터 서버

마스터 서버는 가동 중인 각 방의 서버 목록 및 각 방 서버가 관리하는 방의 정보를 보유하며, 클라이언트의 엔트리 포인트로서 기능합니다.

게임 클라이언트는 먼저 마스터 서버에 접속하여 방 서버와 방 서버 내에 존재하는 방의 정보를 검색합니다. 필요한 방 서버를 특정한 후에는 마스터 서버를 통하지 않고 직접 방 서버와 통신합니다. 동시 액티브 클라이언트 수가 늘어나도 이 아키텍처로 인해 마스터 서버의 부하는 별로 증가하지 않습니다.

방 서버

게임 서버의 주요 기능은 방 서버가 담당합니다. 방 서버에는 여러 개의 “”이 있으며, 플레이어가 방에 참가하면 게임의 온라인 기능이 구현됩니다. 방은 게임 클라이언트의 요청에 따라 동적으로 작성 또는 삭제됩니다.

게임 디자인에 따라 각 방에는 특정 맵이나 로비 등 다양한 역할을 부여할 수 있습니다. 그러나, 각 방 서버가 맵이나 게임 인스턴스를 실행하는 것은 아닙니다. 방 서버는 방 안에 있는 플레이어의 리스트를 유지 관리하고, 클라이언트가 보내는 메시지를 처리합니다. 맵이나 게임 인스턴스는 각 클라이언트가 유지하는 게임 상태에 따라 표현됩니다. 방 서버를 통해 라우팅되는 다른 클라이언트나 서버의 메시지에 따라 각 클라이언트에서 동작하는 STRIX 플러그인이 게임 상태를 갱신합니다.

1개의 클러스터에 속하는 방 서버는 일반적으로 대등하며, 방 서버의 수를 늘려서 부하를 분산할 수 있습니다. Strix Cloud에서는 웹 콘솔을 통해 서버의 부하 상황을 파악하고, 간단하게 방 서버 수를 늘리거나 줄일 수 있습니다. 1개의 클러스터에 속하는 방 서버의 대수에는 상한이 없습니다.

애플리케이션

Application and servers

1개의 게임 타이틀에 대응하는 서버 측의 관리 단위를 “애플리케이션”이라고 합니다. Strix Cloud에서는 필요에 따라 여러 애플리케이션을 정의할 수 있습니다. 각 애플리케이션은 완전히 독립되어 있습니다. 동일한 게임 클라이언트는 보통 여러 애플리케이션을 이용하지 않습니다.

1개의 애플리케이션에 여러 클러스터를 포함시킬 수 있습니다. 일반적으로 게임 안에서 실행하는 역할에 따라 클러스터를 분할합니다.

애플리케이션에 여러 클러스터를 포함시킨 경우, 게임 클라이언트가 사용할 클러스터는 클라이언트의 게임 로직에 따라 선택하게 됩니다. STRIX는 여러 클러스터 중에서 사용할 클러스터를 자동으로 선택하는 기능을 제공하지 않습니다.

각 클러스터에는 반드시 1대의 마스터 서버가 존재합니다. 게임 클라이언트는 접속할 마스터 서버를 선택함으로써 간접적으로 사용할 클러스터를 선택합니다.

또한, 일반적인 소규모 게임은 클러스터 1개로도 충분합니다.