2. MMOG 서버의 특징
• 영속적인 TCP연결. Http전송이 아님.
• 서버에서 x86/x64 네이티브 코드가 돌아가야 함.
• 서버에 지속적인 부하가 걸림.
• 독점적인 자원이 많이 필요함.
• 처리량도 중요하지만 응답성이 더 중요하다.
PaaS로는 무리
3. Project D Online
• 논타겟팅 MMORPG
• 현재 서비스 안함.
• 궁금하신 분은 유튜브에서 Project D online으로 검색하세요.
• https://youtu.be/-M9THx5T-YY
4. Project D Online의 서버
• 서버에서 3D 모델 데이터를 갖고 있음.
• 충돌처리를 비롯하여 클라이언트에서 하는 모든 행동을
렌더링만 빼고 다 함.
• 집중적인 멀티스레드 사용. 모든 코어 다 사용함.
• CPU에 부하가 많이 걸림.
• 4코어 머신 기준으로 동접 최대 4000명에 맞춰 개발.
• 발표자료 - https://doc.co/7QVDaE
5. 혼자 서비스를 해야겠는데…
• 돈이 없다!
• 뭔가 무기는 없나? – 쓸 수 있는 것은 MS BizSpark로 매달 18만원씩
지원되는 Azure 크레딧!
• 배포는 Dropbox로.
• 게임 서버는 Azure VM으로.
• 가입 및 유저 관리를 위한 웹사이트는 Azure Web App으로.
6. Azure VM
• 일단 겉보기엔 물리 머신이랑 똑같다.
• Remote Desktop으로 연결하면 끝.
8. VM성능
• Azure VM의 vCore성능은 2014년도에 A2인스턴스를 사용할때만
해도 물리 코어 성능의 절반이었음.
• 2014년 기준으로는
• IBM Softlayer Baremetal >> IBM Softlayer VM > Azure VM > AWS EC2 VM
• A인스턴스에서 D인스턴스로 넘어오면서 거의 물리 코어 수준의
성능이 나옴. -> QoS문제이지 기술적인 문제가 아님.
• 현재는 거의 물리 CPU와 비슷하게 나옴. I/O는 여전히 물리
머신보단 느림.
10. Network Latency
• 리얼타임 MMOG에선 처리량보다 응답성이 더 중요함
• Network latency가 크다는 것은 치명적이다.
• 다행히 주요지역에 Azure 데이터 센터가 입주해 있다.
• 글로벌 서비스를 해도 latency문제는 걱정할 필요 없다.
• 2017년엔 한국 진출!
14. 가격 / VM 선택
• Korea-Central 기준
• 지역에 따라 가격차이가 있음.
• 가성비 기준 추천은 DS2_V2
• 정상적인 게임 서버라면(잘못 만든
서버가 아니라면) 동접 1000-2000
정도는 가능
15. 동접 1000-2000명 기준 예상 비용
• D2인스턴스 + Azure Web App
• VM : 15만원
• Azure Web App : 2-3만원
BizSpark 18만원 지원만으로도 서비스 가능!
16. 웹사이트
• 가입 -> 계정등록 – 게임 DB에 계정생성
• 유저들이 자신의 계정 관리
• 탈퇴/패스워드 재설정
• 게임 클라이언트에서 웹사이트를 통해 서버 주소와 상태를
얻어감.
17.
18. Azure Web App(App Service)
• 예전엔 Azure Websites였다.
• 여러가지 웹기술 사용가능.
• Project D Online 프로젝트에선 ASP.NET MVC를 사용해서
웹사이트를 만들었다.
• Visual Studio + LocalDB로 웹사이트 개발
• 릴리즈 단계에서 Azure Web App으로 deploy
• 디버깅/배포 편리함.
21. 계정 등록 및 게임 플레이 과정
1. 웹페이지에서 유저가 가입요청(가입 버튼 누르기)
2. 웹사이트에서 인증메일 발송
3. 유저가 메일로부터 받은 인증번호 입력
4. 웹사이트 -> Game DB로 계정등록 SP호출
5. 유저가 게임 로그인
22. 서버 및 웹사이트 구성
• 가입 관리용 웹사이트
• Azure Web App + Azure SQL
• 게임서버 on VM
• 게임서버(EXE/DLL) + MSSQL
23. Azure Service
Windows Server(Azure VM)
Web DB(Azure SQL)Azure Web App Game DB(MSSQL)
Game Server.exe
Cert Server.exe
NPC Server.exe
SP호출 (계정 등록/삭제/비밀번호변경 등)
Client.exe
Web
Browser
Client.exe
Web
Browser
Client.exe
Web
Browser
서버 및 웹사이트 구성
24. 추가적인 클라우드 + 게임 기술
추가적으로 연구해 볼만한 클라우드+게임 기술.
스트리밍 게임이라든가?
25. 스트리밍 게임
• 서버에서 게임 실행
• 서버에서 게임 영상을 인코딩해서 네트워크로 전송
• 클라이언트는 서버로부터 영상 스트림을 받아서 재생
• 클라이언트에서 컨트롤 입력을 서버로 전송
• 로컬에선 이미 많이 사용. XBOX ONE / steam등…
• Nvidia에서 클라우드 기반 스트리밍 게임 서비스를 위한 H/W,
S/W기술을 연구/배포/판매 중.
• https://youtu.be/hkCmUsVvWRc
28. Azure GPU Instance
• NVIDIA GRID SDK를 사용할 수 있는 Tesla GPU를 탑재한 VM
• 현재 Maxwell(GTX 9xx시리즈) 아키텍처의 M60 사용 가능
• Windows Server/ Windows 10 사용 가능
29. 스트리밍 게임 구현
• 게임 코드에 NVIFR API의 캡쳐 코드 추가
• 게임 코드에 동영상 스트림을 전송할 네트워크 코드 추가.
• 동영상 스트림을 재생할 클라이언트 작성
• 네트워크로 동영상 스트림을 받아서 재생하는 기능 필요-
ffmpeg/D3D/D2D
• 키보드/마우스/컨트롤러 입력을 네트워크로 전송하는 기능
• 게임서버에서 게임 실행
• 동영상 재생을 위한 클라이언트 실행 -> 서버로 접속