Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

게임서버 구축 방법비교 : GBaaS vs. Self-hosting

4,207 views

Published on

2017 아이펀팩토리 Dev Day 발표영상
강연주제 : 게임서버 구축 방법비교 : GBaaS vs. Self-hosting

Published in: Engineering
  • Login to see the comments

게임서버 구축 방법비교 : GBaaS vs. Self-hosting

  1. 1. 게임 서버 구축 방법 비교: GBaaS vs. Self-hosting G re a t Te c h n o l o g y F o r G re a t G a m e s D K M o o n dkmoon@ifunfactory.com
  2. 2. 다루는 내용: Photon 과 GameSparks 에서 보는 GBaaS 의 공통 요소들, 구현/설계상 차이점 다루지 않는 내용: 개개의 GBaaS 구현의 안정성 여부 About This Talk 01. Great Technology For Great Games
  3. 3. 다루는 내용: Photon 과 GameSparks 에서 보는 GBaaS 의 공통 요소들, 구현/설계상 차이점 다루지 않는 내용: 개개의 GBaaS 구현의 안정성 여부 About This Talk 02. Great Technology For Great Games
  4. 4. 게임 서비스를 위한 Backend-as-a-Service (BaaS) 다시 말해… “게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것” 여기에는… 1) 서버, DB, 네트워크 등 물리적 인프라 (physical components) 2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components) 3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components) Game Backend-as-a-Service (GBaaS) 03. Great Technology For Great Games
  5. 5. 게임 서비스를 위한 Backend-as-a-Service (BaaS) 다시 말해… “게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것” 여기에는… 1) 서버, DB, 네트워크 등 물리적 인프라 (physical components) 2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components) 3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components) Game Backend-as-a-Service (GBaaS) 04. Great Technology For Great Games
  6. 6. 게임 서비스를 위한 Backend-as-a-Service (BaaS) 다시 말해… “게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것” 여기에는… 1) 서버, DB, 네트워크 등 물리적 인프라 (physical components) 2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components) 3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components) Game Backend-as-a-Service (GBaaS) 05. Great Technology For Great Games
  7. 7. ✓ Photon by Exit Games (Hamburg, German, founded in 2003) ✓ GameSparks (Dublin, Ireland, founded in 2013) ✓ PlayFab (Seattle, USA, founded in 2014) GBaaS Providers 06. Great Technology For Great Games
  8. 8. ✓ Client-Server 모델 + TCP/UDP/HTTP/WS ✓ 코어 구현은 C++ ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게 이트웨이 서버에 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음 ✓ 제한된 dashboard 기능 ✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태 Photon Introduction 07. Great Technology For Great Games
  9. 9. ✓ Client-Server 모델 + TCP/UDP/HTTP/WS ✓ 코어 구현은 C++ ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게 이트웨이 서버에 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음 ✓ 제한된 dashboard 기능 ✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태 Photon Introduction 08. Great Technology For Great Games
  10. 10. ✓ Client-Server 모델 + TCP/UDP/HTTP/WS ✓ 코어 구현은 C++ ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게 이트웨이 서버에 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음 ✓ 제한된 dashboard 기능 ✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태 Photon Introduction 09. Great Technology For Great Games
  11. 11. ✓ Node.js workers pool + MongoDB ✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원 ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머 리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능 ✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원 ✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능 ✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리 GameSparks Introduction 10. Great Technology For Great Games
  12. 12. ✓ Node.js workers pool + MongoDB ✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원 ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머 리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능 ✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원 ✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능 ✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리 GameSparks Introduction 11. Great Technology For Great Games
  13. 13. ✓ Node.js workers pool + MongoDB ✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원 ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머 리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능 ✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원 ✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능 ✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리 GameSparks Introduction 12. Great Technology For Great Games
  14. 14. ✓ 방 (게임 세션) 기반 구현 • 게임의 기본 단위로 “게임 세션” 을 가정 • 게임 세션의 라이프 사이클에 맞춘 API 디자인 • 멀티 플레이의 개념 역시 방 안의 사용자들로 한정 ✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현 • 기본 API 는 게임 로직에 무관한 중립적인 형태 • 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함 • 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함 ✓ 동일한 시스템이 여러 리전에 자동 복제 • 소위 말하는 “글로벌 원 빌드” Photon vs. GS Commonalities 13. Great Technology For Great Games
  15. 15. ✓ 방 (게임 세션) 기반 구현 • 게임의 기본 단위로 “게임 세션” 을 가정 • 게임 세션의 라이프 사이클에 맞춘 API 디자인 • 멀티 플레이의 개념 역시 방 안의 사용자들로 한정 ✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현 • 기본 API 는 게임 로직에 무관한 중립적인 형태 • 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함 • 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함 ✓ 동일한 시스템이 여러 리전에 자동 복제 • 소위 말하는 “글로벌 원 빌드” Photon vs. GS Commonalities 14. Great Technology For Great Games
  16. 16. ✓ 방 (게임 세션) 기반 구현 • 게임의 기본 단위로 “게임 세션” 을 가정 • 게임 세션의 라이프 사이클에 맞춘 API 디자인 • 멀티 플레이의 개념 역시 방 안의 사용자들로 한정 ✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현 • 기본 API 는 게임 로직에 무관한 중립적인 형태 • 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함 • 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함 ✓ 동일한 시스템이 여러 리전에 자동 복제 • 소위 말하는 “글로벌 원 빌드” Photon vs. GS Commonalities 15. Great Technology For Great Games
  17. 17. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 16. Great Technology For Great Games
  18. 18. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 17. Great Technology For Great Games
  19. 19. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 18. Great Technology For Great Games
  20. 20. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 19. Great Technology For Great Games
  21. 21. ✓ 싱글 플레이 게임에 효과적 • 기본 API 가 콘텐츠 로직을 포함하지 않기 때문에,복잡한 콘텐츠 로직이 필요없고 정형화된 게임 시스템의 싱글 플레이 게임 제작에 효과적 ✓ 방 (게임 세션) 기반 멀티 플레이 게임에 효과적 • API 가 방 기반으로 디자인 되었기 때문에, 방의 생성, 검색, 참여, 탈퇴, 종료 상황에 대해서 잘 정의하고 있음 GBaaS Strength 20. Great Technology For Great Games
  22. 22. ✓ 싱글 플레이 게임에 효과적 • 기본 API 가 콘텐츠 로직을 포함하지 않기 때문에,복잡한 콘텐츠 로직이 필요없고 정형화된 게임 시스템의 싱글 플레이 게임 제작에 효과적 ✓ 방 (게임 세션) 기반 멀티 플레이 게임에 효과적 • API 가 방 기반으로 디자인 되었기 때문에, 방의 생성, 검색, 참여, 탈퇴, 종료 상황에 대해서 잘 정의하고 있음 GBaaS Strength 21. Great Technology For Great Games
  23. 23. ✓ 방 기반이 아닌 게임에 취약 • 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음
 이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움 ✓ 로직 확장이 어려움 • Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미 • Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코 드의 확인 및 버전 관리도 힘듦 ✓ MMO 지원에 취약 • 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함 • 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없 이 시스템 만으로 구현하는데 한계가 있음 GBaaS Weakness 22. Great Technology For Great Games
  24. 24. ✓ 방 기반이 아닌 게임에 취약 • 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음
 이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움 ✓ 로직 확장이 어려움 • Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미 • Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코 드의 확인 및 버전 관리도 힘듦 ✓ MMO 지원에 취약 • 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함 • 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없 이 시스템 만으로 구현하는데 한계가 있음 GBaaS Weakness 23. Great Technology For Great Games
  25. 25. ✓ 방 기반이 아닌 게임에 취약 • 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음
 이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움 ✓ 로직 확장이 어려움 • Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미 • Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코 드의 확인 및 버전 관리도 힘듦 ✓ MMO 지원에 취약 • 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함 • 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없 이 시스템 만으로 구현하는데 한계가 있음 GBaaS Weakness 24. Great Technology For Great Games
  26. 26. ✓ Strength • 로직 확장이 자유로움 • 구현 가능한 시스템에 제약이 없음 • 병목 디버깅 / 튜닝 용이 • 따라서 복잡한 로직의 게임이나 MMO 등에 적합 ✓ Weakness • 기초적인 것만 돌려보기 위해서도 초기 작업량이 많음 Self-hosting Strength & Weakness 25. Great Technology For Great Games
  27. 27. ✓ Strength • 로직 확장이 자유로움 • 구현 가능한 시스템에 제약이 없음 • 병목 디버깅 / 튜닝 용이 • 따라서 복잡한 로직의 게임이나 MMO 등에 적합 ✓ Weakness • 기초적인 것만 돌려보기 위해서도 초기 작업량이 많음 Self-hosting Strength & Weakness 26. Great Technology For Great Games
  28. 28. ✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함 ✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함 ✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함 ✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함 ✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음 ✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음 ✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함 ✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함 Conclusion 27. Great Technology For Great Games
  29. 29. ✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함 ✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함 ✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함 ✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함 ✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음 ✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음 ✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함 ✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함 Conclusion 28. Great Technology For Great Games
  30. 30. ✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함 ✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함 ✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함 ✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함 ✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음 ✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음 ✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함 ✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함 Conclusion 29. Great Technology For Great Games
  31. 31. (MMO and non-session based games) PC/MMO is about 27% of total game market. Addressable Market Size Difference 30. Great Technology For Great Games Source: Newzoo report, June, 2016
  32. 32. DK Moon dkmoon@ifunfactory.com www.ifunfactory.com THANKS! G r e a t Te c h n o l o g y F o r G r e a t G a m e s , i F u n Fa c t o r y

×