32
게임 서버 구축 방법 비교: GBaaS vs. Self-hosting Great Technology For Great Games DK Moon [email protected]

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

Embed Size (px)

Citation preview

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

게임�서버�구축�방법�비교:�GBaaS�vs.�Self-hostingG 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

D K M o o nd k m o o n @ i f u n f a c t o r y. c o m

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

다루는�내용:���Photon�과�GameSparks�에서�보는�GBaaS�의�공통�요소들,�구현/설계상�차이점�

다루지�않는�내용:���개개의�GBaaS�구현의�안정성�여부

About This Talk 01.

Great�Technology�For�Great�Games

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

다루는�내용:���Photon�과�GameSparks�에서�보는�GBaaS�의�공통�요소들,�구현/설계상�차이점�

다루지�않는�내용:���개개의�GBaaS�구현의�안정성�여부

About This Talk 02.

Great�Technology�For�Great�Games

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

게임�서비스를�위한�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

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

게임�서비스를�위한�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

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

게임�서비스를�위한�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

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

✓ 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

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

✓�Client-Server�모델�+�TCP/UDP/HTTP/WS�✓�코어�구현은�C++�✓�동일한�시스템이�여러�리전에�레플리케이션되고,�클라이언트가�지역별�게이트웨이�서버에�접속하는�방식�

✓�게임의�전체�흐름이�방의�생성�→�플레이�→�종료에�맞춰져�있음�✓�API�역시�방을�다루는�방식에�촛점이�맞춰져�있음�

✓�제한된�dashboard�기능�✓�명시적으로�접속할�게임�버전을�클라이언트가�지정하는�형태

PhotonIntroduction 07.

Great�Technology�For�Great�Games

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

✓�Client-Server�모델�+�TCP/UDP/HTTP/WS�✓�코어�구현은�C++�✓�동일한�시스템이�여러�리전에�레플리케이션되고,�클라이언트가�지역별�게이트웨이�서버에�접속하는�방식�

✓�게임의�전체�흐름이�방의�생성�→�플레이�→�종료에�맞춰져�있음�✓�API�역시�방을�다루는�방식에�촛점이�맞춰져�있음�

✓�제한된�dashboard�기능�✓�명시적으로�접속할�게임�버전을�클라이언트가�지정하는�형태

PhotonIntroduction 08.

Great�Technology�For�Great�Games

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

✓�Client-Server�모델�+�TCP/UDP/HTTP/WS�✓�코어�구현은�C++�✓�동일한�시스템이�여러�리전에�레플리케이션되고,�클라이언트가�지역별�게이트웨이�서버에�접속하는�방식�

✓�게임의�전체�흐름이�방의�생성�→�플레이�→�종료에�맞춰져�있음�✓�API�역시�방을�다루는�방식에�촛점이�맞춰져�있음�

✓�제한된�dashboard�기능�✓�명시적으로�접속할�게임�버전을�클라이언트가�지정하는�형태

PhotonIntroduction 09.

Great�Technology�For�Great�Games

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

✓�Node.js�workers�pool�+�MongoDB�✓�비동기�API�는�WSS,�리얼타임�API�는�TCP/UDP�지원�✓�동일한�시스템이�여러�리전에�레플리케이션되고,�GS�에서�설정한�프라이머리�리전의�게이트웨이�서버로�클라이언트가�접속하는�방식�

✓�게임의�전체�흐름이�방의�생성�→�플레이�→�종료에�맞춰져�있음�✓�다만�방을�만드는�방식이�명시적인�방법�외에�Match�나�Challenge�도�가능�✓�매칭,�랭킹,�그룹핑,�성취�보상,�가상�경제�등에�대한�API�도�지원��

✓�Dashboard�상에서�리소스�설정,�JS�편집,�REST�테스트�가능�✓�설정의�스냅샷�→�릴리즈�방식으로�버전�관리

GameSparksIntroduction 10.

Great�Technology�For�Great�Games

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

✓�Node.js�workers�pool�+�MongoDB�✓�비동기�API�는�WSS,�리얼타임�API�는�TCP/UDP�지원�✓�동일한�시스템이�여러�리전에�레플리케이션되고,�GS�에서�설정한�프라이머리�리전의�게이트웨이�서버로�클라이언트가�접속하는�방식�

✓�게임의�전체�흐름이�방의�생성�→�플레이�→�종료에�맞춰져�있음�✓�다만�방을�만드는�방식이�명시적인�방법�외에�Match�나�Challenge�도�가능�✓�매칭,�랭킹,�그룹핑,�성취�보상,�가상�경제�등에�대한�API�도�지원��

✓�Dashboard�상에서�리소스�설정,�JS�편집,�REST�테스트�가능�✓�설정의�스냅샷�→�릴리즈�방식으로�버전�관리

GameSparksIntroduction 11.

Great�Technology�For�Great�Games

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

✓�Node.js�workers�pool�+�MongoDB�✓�비동기�API�는�WSS,�리얼타임�API�는�TCP/UDP�지원�✓�동일한�시스템이�여러�리전에�레플리케이션되고,�GS�에서�설정한�프라이머리�리전의�게이트웨이�서버로�클라이언트가�접속하는�방식�

✓�게임의�전체�흐름이�방의�생성�→�플레이�→�종료에�맞춰져�있음�✓�다만�방을�만드는�방식이�명시적인�방법�외에�Match�나�Challenge�도�가능�✓�매칭,�랭킹,�그룹핑,�성취�보상,�가상�경제�등에�대한�API�도�지원��

✓�Dashboard�상에서�리소스�설정,�JS�편집,�REST�테스트�가능�✓�설정의�스냅샷�→�릴리즈�방식으로�버전�관리

GameSparksIntroduction 12.

Great�Technology�For�Great�Games

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

✓�방�(게임�세션)�기반�구현�•�게임의�기본�단위로�“게임�세션”�을�가정�

•�게임�세션의�라이프�사이클에�맞춘�API�디자인�

•�멀티�플레이의�개념�역시�방�안의�사용자들로�한정�

✓�기본�API�의�후킹과�커스텀�로직을�통한�게임�콘텐츠�구현�•�기본�API�는�게임�로직에�무관한�중립적인�형태�

•�콘텐츠�구현을�위해서는�로직을�확장할�수�있는�방식이�필요함�

•�두�제품�모두�API�후킹�및�커스텀�로직�확장을�제공함�

✓�동일한�시스템이�여러�리전에�자동�복제�•�소위�말하는�“글로벌�원�빌드”

Photon vs. GSCommonalities 13.

Great�Technology�For�Great�Games

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

✓�방�(게임�세션)�기반�구현�•�게임의�기본�단위로�“게임�세션”�을�가정�

•�게임�세션의�라이프�사이클에�맞춘�API�디자인�

•�멀티�플레이의�개념�역시�방�안의�사용자들로�한정�

✓�기본�API�의�후킹과�커스텀�로직을�통한�게임�콘텐츠�구현�•�기본�API�는�게임�로직에�무관한�중립적인�형태�

•�콘텐츠�구현을�위해서는�로직을�확장할�수�있는�방식이�필요함�

•�두�제품�모두�API�후킹�및�커스텀�로직�확장을�제공함�

✓�동일한�시스템이�여러�리전에�자동�복제�•�소위�말하는�“글로벌�원�빌드”

Photon vs. GSCommonalities 14.

Great�Technology�For�Great�Games

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

✓�방�(게임�세션)�기반�구현�•�게임의�기본�단위로�“게임�세션”�을�가정�

•�게임�세션의�라이프�사이클에�맞춘�API�디자인�

•�멀티�플레이의�개념�역시�방�안의�사용자들로�한정�

✓�기본�API�의�후킹과�커스텀�로직을�통한�게임�콘텐츠�구현�•�기본�API�는�게임�로직에�무관한�중립적인�형태�

•�콘텐츠�구현을�위해서는�로직을�확장할�수�있는�방식이�필요함�

•�두�제품�모두�API�후킹�및�커스텀�로직�확장을�제공함�

✓�동일한�시스템이�여러�리전에�자동�복제�•�소위�말하는�“글로벌�원�빌드”

Photon vs. GSCommonalities 15.

Great�Technology�For�Great�Games

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

✓�멀티플레이어�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. GSDifferences 16.

Great�Technology�For�Great�Games

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

✓�멀티플레이어�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. GSDifferences 17.

Great�Technology�For�Great�Games

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

✓�멀티플레이어�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. GSDifferences 18.

Great�Technology�For�Great�Games

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

✓�멀티플레이어�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. GSDifferences 19.

Great�Technology�For�Great�Games

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

✓�싱글�플레이�게임에�효과적�•�기본�API�가�콘텐츠�로직을�포함하지�않기�때문에,복잡한�콘텐츠�로직이�필요없고�정형화된�게임�시스템의�싱글�플레이�게임�제작에�효과적�

✓�방�(게임�세션)�기반�멀티�플레이�게임에�효과적�•�API�가�방�기반으로�디자인�되었기�때문에,�방의�생성,�검색,�참여,�탈퇴,�종료�상황에�대해서�잘�정의하고�있음

GBaaSStrength 20.

Great�Technology�For�Great�Games

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

✓�싱글�플레이�게임에�효과적�•�기본�API�가�콘텐츠�로직을�포함하지�않기�때문에,복잡한�콘텐츠�로직이�필요없고�정형화된�게임�시스템의�싱글�플레이�게임�제작에�효과적�

✓�방�(게임�세션)�기반�멀티�플레이�게임에�효과적�•�API�가�방�기반으로�디자인�되었기�때문에,�방의�생성,�검색,�참여,�탈퇴,�종료�상황에�대해서�잘�정의하고�있음

GBaaSStrength 21.

Great�Technology�For�Great�Games

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

✓�방�기반이�아닌�게임에�취약�•�오픈월드�등�방�기반이�아닌�시스템을�구현하기�위한�API�존재하지�않음 �이는�추후에�추가해서�해결�될�수�있는�것이�아닌�구조적인�문제에�가까움�

✓�로직�확장이�어려움�•�Webhook�은�외부�시스템에�별도로�state�를�복제/관리해야됨을�의미�

•�Code�injection�은�대규모�코드의�작성이�어렵고,�cloud�상에�올라간�코드의�확인�및�버전�관리도�힘듦�

✓�MMO�지원에�취약�•�방�기반�API�는�거의�필연적으로�브로드캐스팅�방식을�사용함�

•�상황에�따라�패킷�전송�범위를�다르게�정하는�것은�콘텐츠�로직의�도움�없이�시스템�만으로�구현하는데�한계가�있음

GBaaSWeakness 22.

Great�Technology�For�Great�Games

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

✓�방�기반이�아닌�게임에�취약�•�오픈월드�등�방�기반이�아닌�시스템을�구현하기�위한�API�존재하지�않음 �이는�추후에�추가해서�해결�될�수�있는�것이�아닌�구조적인�문제에�가까움�

✓�로직�확장이�어려움�•�Webhook�은�외부�시스템에�별도로�state�를�복제/관리해야됨을�의미�

•�Code�injection�은�대규모�코드의�작성이�어렵고,�cloud�상에�올라간�코드의�확인�및�버전�관리도�힘듦�

✓�MMO�지원에�취약�•�방�기반�API�는�거의�필연적으로�브로드캐스팅�방식을�사용함�

•�상황에�따라�패킷�전송�범위를�다르게�정하는�것은�콘텐츠�로직의�도움�없이�시스템�만으로�구현하는데�한계가�있음

GBaaSWeakness 23.

Great�Technology�For�Great�Games

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

✓�방�기반이�아닌�게임에�취약�•�오픈월드�등�방�기반이�아닌�시스템을�구현하기�위한�API�존재하지�않음 �이는�추후에�추가해서�해결�될�수�있는�것이�아닌�구조적인�문제에�가까움�

✓�로직�확장이�어려움�•�Webhook�은�외부�시스템에�별도로�state�를�복제/관리해야됨을�의미�

•�Code�injection�은�대규모�코드의�작성이�어렵고,�cloud�상에�올라간�코드의�확인�및�버전�관리도�힘듦�

✓�MMO�지원에�취약�•�방�기반�API�는�거의�필연적으로�브로드캐스팅�방식을�사용함�

•�상황에�따라�패킷�전송�범위를�다르게�정하는�것은�콘텐츠�로직의�도움�없이�시스템�만으로�구현하는데�한계가�있음

GBaaSWeakness 24.

Great�Technology�For�Great�Games

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

✓�Strength�•�로직�확장이�자유로움�

•�구현�가능한�시스템에�제약이�없음�

•�병목�디버깅�/�튜닝�용이�

•�따라서�복잡한�로직의�게임이나�MMO�등에�적합�

✓�Weakness�•�기초적인�것만�돌려보기�위해서도�초기�작업량이�많음

Self-hostingStrength & Weakness 25.

Great�Technology�For�Great�Games

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

✓�Strength�•�로직�확장이�자유로움�

•�구현�가능한�시스템에�제약이�없음�

•�병목�디버깅�/�튜닝�용이�

•�따라서�복잡한�로직의�게임이나�MMO�등에�적합�

✓�Weakness�•�기초적인�것만�돌려보기�위해서도�초기�작업량이�많음

Self-hostingStrength & Weakness 26.

Great�Technology�For�Great�Games

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

✓�GBaaS�는�서버/DB/네트워크�등�물리�요소를�다루지�않아도�되기에�편리함�✓�GBaaS�는�게임�시스템�구현을�위한�논리�요소를�“단순화”하여�쓰기�쉽게함�✓�GBaaS�의�운영�요소�유무는�안정성�만큼이나�중요하게�고려되어야�함�

✓�GBaaS�의�단순화된�논리�요소는�게임�로직의�확장을�어렵게�함�✓�GBaaS�의�이런�장단점으로�싱글�플레이/방�기반�멀티플레이에�적합도�높음�

✓�서버�직접�운영은�단순화의�부족으로�초기�작업량이�많을�수�있음�✓�그러나�다양한�시스템의�구현과�로직의�확장이�용이함�✓�또한�블랙박스�요소의�감소로�디버깅이�용이함�

Conclusion 27.

Great�Technology�For�Great�Games

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

✓�GBaaS�는�서버/DB/네트워크�등�물리�요소를�다루지�않아도�되기에�편리함�✓�GBaaS�는�게임�시스템�구현을�위한�논리�요소를�“단순화”하여�쓰기�쉽게함�✓�GBaaS�의�운영�요소�유무는�안정성�만큼이나�중요하게�고려되어야�함�

✓�GBaaS�의�단순화된�논리�요소는�게임�로직의�확장을�어렵게�함�✓�GBaaS�의�이런�장단점으로�싱글�플레이/방�기반�멀티플레이에�적합도�높음�

✓�서버�직접�운영은�단순화의�부족으로�초기�작업량이�많을�수�있음�✓�그러나�다양한�시스템의�구현과�로직의�확장이�용이함�✓�또한�블랙박스�요소의�감소로�디버깅이�용이함�

Conclusion 28.

Great�Technology�For�Great�Games

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

✓�GBaaS�는�서버/DB/네트워크�등�물리�요소를�다루지�않아도�되기에�편리함�✓�GBaaS�는�게임�시스템�구현을�위한�논리�요소를�“단순화”하여�쓰기�쉽게함�✓�GBaaS�의�운영�요소�유무는�안정성�만큼이나�중요하게�고려되어야�함�

✓�GBaaS�의�단순화된�논리�요소는�게임�로직의�확장을�어렵게�함�✓�GBaaS�의�이런�장단점으로�싱글�플레이/방�기반�멀티플레이에�적합도�높음�

✓�서버�직접�운영은�단순화의�부족으로�초기�작업량이�많을�수�있음�✓�그러나�다양한�시스템의�구현과�로직의�확장이�용이함�✓�또한�블랙박스�요소의�감소로�디버깅이�용이함�

Conclusion 29.

Great�Technology�For�Great�Games

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

(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

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

DK Moon

[email protected]

www.ifunfactory.com

THANKS!Grea t � Te c h n o l o g y � F o r � G r e a t � G ame s , � i F u n Fa c t o r y