[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub LeeNDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea서비스 런칭을 위해 라이온하트와 카카오게임즈가 어떻게 최적 성능의 인스턴스를 선택하고, Windows 운영 체제를 최적화하며, 왜 Amazon Aurora를 기본 데이터베이스로 채택하였는지를 설명합니다. 또한, 출시부터 운영까지의 과정에서 MMORPG가 어떻게 AWS 상에서 설계되고, 게임 서버 성능을 극대할 수 있었는지에 대해 전달해드립니다.
NDC 11 자이언트 서버의 비밀승명 양2011 NDC(Nexon Developers Conference)에서 발표한 마비노기 영웅전(미국명 Vindictus)의 자이언트 서버 아키텍처에 대한 슬라이드입니다. 게임 서버의 분산 서비스 아키텍처를 바닥부터 만들어낸 과정과 결과에 대한 내용을 담고 있습니다.
게임서버프로그래밍 #8 - 성능 평가Seungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
게임서버프로그래밍 #1 - IOCPSeungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
게임서버프로그래밍 #8 - 성능 평가Seungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
게임서버프로그래밍 #1 - IOCPSeungmo KooNHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo1. The document compares the performance of IOCP and EPOLL for network I/O handling on Windows and Linux servers.
2. Testing showed that throughput was similar between IOCP and EPOLL, but IOCP had lower overall CPU usage without RSS/multi-queue enabled.
3. With RSS/multi-queue enabled on the NIC, CPU usage was nearly identical between IOCP and EPOLL.
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situationJonghyon SohnUnderstanding global mobile network situation
in Korean
- TCP in global scale
- submarine optical fiber cable
- 3G mobile network characteristics
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong ChoiCloud 기반으로 U2C(Unix to Cloud),U2L(Unix to Linux) 마이그레이션에 대한 가이드 라인과 사이징 관련 고려 사항에 대해 설명한 자료입니다.
많은 전환 프로젝트에서 추출된 경험치가 들어가 있으며, 전환별 난이도 및 고려사항이 들어가 있습니다.
서버학개론(백엔드 서버 개발자를 위한)SU BO KIM어느 해커쏜에 참여한 백엔드 개발자들을 위한 교육자료
쉽게 만든다고 했는데도, 많이 어려웠나봅니다.
제 욕심이 과했던 것 같아요. 담번엔 좀 더 쉽게 !
- 독자 : 백엔드 개발자를 희망하는 사람 (취준생, 이직 희망자), 5년차 이하
- 주요 내용 : 백엔드 개발을 할 때 일어나는 일들(개발팀의 일)
- 비상업적 목적으로 인용은 가능합니다. (출처 명기 필수)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼글로벌 향 서비스 구축 시, 네이버 클라우드 플랫폼에서 사용할 수 있는 서비스들과 인프라단에서 고려해야 할 사항들에 대해서 자세히 소개해 드립니다 | Let me introduce you in detail the services available on the Naver cloud platform and what the infrastructure needs to consider when building a global service.
Private PaaS with Docker, spring cloud and mesos uEngine SolutionsA tutorial for Implementing a private PaaS with docker, spring cloud (netflix OSS) and mesosphere's DC/OS. Including docker swarm.
프라우드넷의 IL2CPP 적응 기록-정종채Hyunjik Bae유니티엔진의 iOS 64bit는 Mono 대신 IL2CPP를 씁니다. 그런데 IL2CPP는 (계속 해결되고는 있지만 있지만) 기존 코드 호환성에 제약이 있습니다. 프라우드넷 내부는 이를 어떻게 해결하고 있는지 소개합니다.
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae분산 서버 설계는 원리 이해가 중요하다. 이를 모르고서는 잘못된 설계로 인해 고생은 고생대로 하고 결과는 결과대로 나쁠 수 있다. 본 강연에서는 분산 게임 서버 구조를 짜기 전에 반드시 이해해야 하는 원리를 설명한다.
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae클라이언트 개발자들은 직접 서버와 네트워크를 다루지는 않더라도 컴퓨터 네트워크의 특징에 대해서는 알고 있어야 한다. 본 강연은 클라이언트 개발자들이 반드시 알아야 하는 컴퓨터 네트워크 관련 용어와 특징을 소개한다. 아울러 스마트폰 무선 네트워크 관련해서 주안점도 다룬다.
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
1. 2015. 09. 10 / 넷텐션㈜
혁신 / 정도 / 인내
피어간 통신 & 연결 유지 기능
개발팀 / 윤현민
2. 프라우드넷의 피어간 통신 Overview
• Peer to Peer 그룹 기능
• Just In Time(JIT) 홀펀칭
• 메시지 통신 경로 제어
• Reliable UDP(RUDP)
3. Peer To Peer 그룹이란?
• Peer 간 통신을 위하여 그룹 개념을
사용합니다.
• 클라이언트들은 원하는 그룹에 가입하여
피어간 Direct 통신을 할 수 있습니다.
(Default 로 다른 Peer에게 메시지를 전송
하면 서버를 통하여 전송 됩니다.)
• 개발자는 걱정 없이 그룹 가입 직후 바로
통신을 하여도 됩니다.
5. Just In Time(JIT) 홀펀칭
Unreliable 메시지 송신
Background 로 홀펀칭 시작
UDP 홀펀칭 랑데뷰서버 역할
홀펀칭 과정중에도 통신 가능!
6. 메시지 통신 경로 제어
• 메시지 통신 경로 제어는 제일 윗 단에서
동작합니다.
• Relay, Direct P2P 통신의 속도를 실시간으
로 검사하여 최적의 경로로 통신을 합니다.
★ Relay 통신이 많아지면 서버의 부하 가 따를 수 있습니다.
이런 제어 옵션도 개발자에게 제공이 되어 On/Off 만으로
쉽게 사용할 수 있습니다.
7. Reliable UDP(RUDP)
• 다른 Peer에게 Reliable 메시지 전송 시
흔히 말하는 RUDP 를 내부적으로
사용합니다.
• TCP Stack을 그대로 구현 하였습니다.
- Slow Start
- Sliding Window
- Congestion Control
- Fast retransmission
- Etc.
8. 이것만 알면 됩니다!
• 다른 Peer 에게 Reliable 메시지 전송 시
(P2P Group)
RUDP 로 송/수신
서로간 P2P 그룹 원인 상태
9. 이것만 알면 됩니다!
• 다른 Peer 에게 Reliable 메시지 전송 시
(Non P2P Group)
서로간 P2P 그룹 원이 아닌 상태
To Server Relay 송/수신
10. 피어간 통신 Q&A
Q. P2P 그룹에 여러 클라이언트가 있다면,
각 클라이언트마다 UDP 소켓이 할당 되나요?
A. Peer 간 UDP 소켓은 한 개만 사용 합니다.
11. 피어간 통신 Q&A
Q. P2P 그룹의 Peer 간 Reliable 메시지 통신 중에
UDP 에 문제가 생기면 어떻게 되나요?
A. UDP 의 로스율이 심해지고 레이턴시가 심해지면
자동으로 Relay 통신으로 전환이 되므로
안심 하셔도 됩니다.
12. 간단하게 보는 프라우드넷
메시지 처리 계층도
Message Route Control Layer
(메시지 통신 경로 제어)
ProudNet Protocol Layer
(RUDP, UDP Congestion Control, TCP Custom Layer 등
자체 개발 송/수신 프로토콜 처리)
Fallbackable Layer
(To Server TCP, UDP 통신 경로 제어)
13. 1.7 신기능 연결 유지 기능
(Auto Connection Recovery – ACR)
14. 연결 유지 기능 Overview
• 모바일 데이터 사용률 추이
• 셀룰러 WiFi 전환 시 문제점
• 연결 유지 기능(ACR) 이란?
• 앞으로 해결 해야 될 문제점
15. 모바일 데이터 사용률 추이
• 무제한 요금제가 있지만 아직 WiFi 사용률이 더 높습니다.
• WiFi 의 신호 영역은 생각 외로 좁습니다.
2014년도 모바일 데이터 사용률 통계
17. 셀룰러 WiFi 전환 시 문제점
• 네트워크 핸드오버가 일어날 시에
응용 프로그램의 소켓은 모두 일제히
끊겨 버립니다.
• 더욱 큰 문제는 WiFi 의 신호가 약해져
셀룰러로 전환이 될 때, PC 의 랜선이
뽑힌 현상과 비슷한 상황이 연출 됩니다.
• 더 골치 아픈 건, 이 현상이 폰 기종마다
상이 하다는 겁니다!
18. 개발 진행 중 문제점
• WiFi <-> 셀룰러 핸드오버 시, OS 는
네트워크 전환이 일어났지만
어플리케이션에서 일정시간 새로운
이더넷을 감지 하지 못합니다.
이 일정시간은 같은 OS 라 하더라도 폰 기종
마다 상이 합니다.
20. 연결 유지 기능(ACR) 이란?
• 프라우드넷 내부에서 네트워크 감지 기능으로 새로운
네트워크 전환 시 빠르게 재 접속을 시도 합니다.
• 연결이 끊겨 있던 상태에서 보냈던 메시지들도
재 접속 되었을 때, 송신을 보장 합니다.
• P2P 그룹 정보도 유지가 되며, 서버에
재 접속이 완료 되면 자동으로 홀펀칭을 시도 합니다.
• 개발자는 잠깐 레이턴시가 길어 졌다 생각하면 됩니
다.
21. 연결 유지 기능(ACR) 이란?
약간의 전송 지연
Message Keeping,
Reconnection,
Authentication
User Layer
ProudNet
Layer
1. 네트워크 전환
User Layer
ProudNet
Layer
2. 재 연결
3. 재 인증 요청
4. 인증 확인
5. 전송 하지 못했던 패킷들 재전송
22. 이 모든 것이 자동으로 동작 하며,
개발자는 이벤트 처리만 해주면 됩니다!
Client Event Method
Server Event Method