CS(Computer Science)
온라인 게임과 네트워크 구성
Vetenir
2025. 3. 12. 21:12
싱크
- 동기, 실시간, 리얼타임
- 실시간은 온라인 서버(클라우드)와 LAN 파티 환경으로 나뉨.
어싱크
- 비동기
- 예 : 클래시 오브 클랜
CAP 이론과 게임의 동기화
분산 시스템의 동기화 "조건 3개를 모두 만족하는 시스템은 없다."는 이론.
Consistency (일관성)
- 전체 시스템은 동일한 상태 값을 갖고 있어야 합니다.
Availability (가용성)
- 언제든지 시스템에 접근하여 값을 읽고 쓸수 있어야 합니다.
Partition Tolerance (분할 용인)
- 시스템을 분할하여 병렬처리 등이 가능해야 합니다.
게임에서의 동기화 방법
게임에서의 동기화 방법은 CAP 이론에 따라 일관성 혹은 가용성을 포기하는 방법을 사용합니다.
온라인 게임에서 Partition Tolerance(P)를 왜 필수로 가져가는가?
💡 네트워크는 언제든지 장애가 발생할 수 있기 때문!
온라인 게임은 다수의 서버와 클라이언트가 네트워크를 통해 연결되는 구조이므로, **네트워크 분할(Network Partition, 즉 서버 간 단절)**은 필연적으로 발생할 수 있어요.
- 서버 간의 통신이 지연될 수도 있고, 일부 서버가 일시적으로 다운될 수도 있음.
- 네트워크 단절이 발생할 때 게임이 완전히 멈추면 안 되므로, 분할 용인을 고려해야 함.
👉 결과적으로, 온라인 게임에서는 P(Partition Tolerance)를 반드시 유지해야 함.
온라인 게임에서 C(일관성) vs A(가용성), 어느 것을 포기할까?
1️⃣ C(일관성) 포기 → 가용성 선택 (AP 시스템)
🔥 대부분의 실시간 멀티플레이 게임은 AP(Availability + Partition Tolerance) 모델을 선택
- 예: FPS, MOBA, MMORPG, 배틀로얄 게임 등
- 서버가 항상 응답을 보장해야 하므로 가용성을 우선
- 일부 데이터는 최신이 아닐 수도 있지만, 게임 플레이를 유지하는 것이 더 중요
💡 예시
- FPS 게임에서 한 플레이어가 다른 플레이어를 쏘았을 때, 서버가 일부 데이터 지연을 허용할 수 있음.
- 월드 오브 워크래프트(WoW) 같은 MMORPG에서 아이템 거래 정보가 약간 늦게 동기화될 수 있음.
- 리그 오브 레전드(LoL)에서 미니언의 위치가 모든 클라이언트에서 완전히 동일하지 않을 수 있음.
✔ 일관성(C)을 포기하면?
→ 일부 유저에게는 최신 데이터가 반영되지 않을 수도 있음 (ex. 약간의 랙, 위치 오차 발생)
✔ 가용성(A)을 유지하면?
→ 서버가 끊기지 않고 계속 작동할 수 있음 (게임이 중단되지 않음)
2️⃣ A(가용성) 포기 → 일관성 선택 (CP 시스템)
🔥 턴제 게임이나 금융 관련 시스템에서는 CP(Consistency + Partition Tolerance) 모델 선택
- 예: 턴제 전략 게임(XCOM, 체스), 금융 거래, 중요한 데이터 저장소
- 최신 데이터 동기화가 중요하므로 일관성을 유지해야 함
- 하지만 네트워크 단절이 발생하면 서비스가 멈출 수도 있음
💡 예시
- 체스 게임에서 두 플레이어가 동시에 말을 움직일 수 없도록 해야 함.
- 가상 화폐 거래 시스템에서 같은 돈을 두 번 쓰는 "이중 지불(Double Spending)"을 방지해야 함.
- 게임 내 경매장에서 한 아이템을 동시에 두 명이 구매할 수 없도록 보장해야 함.
✔ 일관성(C)을 유지하면?
→ 모든 클라이언트가 항상 동일한 데이터를 보게 됨 (데이터 동기화 철저)
✔ 가용성(A)을 포기하면?
→ 네트워크 단절이 발생하면 서버가 응답하지 않거나, 일정 시간 동안 플레이 불가