오픈소스 게임 서버 엔진 스터디 캠프 - cloudbread

Post on 08-Jan-2017

984 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CloudBread

http://aka.ms/cbp

Facebook CloudBread 그룹가입

http://aka.ms/cbfb

또는”CloudBread”로페북검색후가입

1회 Unity 개발자를위한CloudBread Camp Hands-on 콘텐트

https://github.com/CloudBreadProject/1st-D.Camp-Offline-Camp

Welcome to CloudBread!

무료오픈소스프로젝트 - CloudBread

- 앱 개발에 집중

- 파라미터에 맞춰 호출

- 예제 테스트 앱 제공

- REST 호출 함수 만들 필요 없음

- 앱의 코드는 바뀌지 않음

- IaaS보다 진화한 PaaS 클라우드

- Scale Up – Out 선택은 자유

- 서비스 구조에 맞는 기능 선택

- 보안 구조 / 데이터 암호화 선택 가능

- GM 관리자 도구 제공

- 기본 배치(DAU, HAU, DARPU) 제공

- 무료 기술 교육 제공(헤카톤/캠프)

(대부분이미다만들어진)무료오픈소스(MIT) 프로젝트모바일게임과앱에최적화된게임서버엔진

목표CloudBread 연동!!!

제가참좋아하는“국민게임”

게임데이터처리

공지사항 - Notice

이벤트 - Event

선물 - Gift

게임정보-GameInfo, 랭킹-Rank, 아이템-Item

멤버아이템-memberitem

게임내아이템추가+상태변경

게임후아이템추가+상태변경

아이템앱내구매 - Purchase

Push

인증 - 3rd party authentication

서버정보+리소스 - serverinfo

Imagine

어떻게서버와통신을?

CloudBread Unity AppDEMO

클라이언트디바이스와CloudBread 게임서버의

은밀한~ 통신

HTTPREST APIJSON

이벤트 조회 API : SelGameEvents 를 호출한다.

HTTP Request 요청 구조

{

memberID = “member1”

}

HTTP Response 응답 구조

{

EventID =“eventID1”, EventName=“크리스탈1”, 기간=…

EventID =“eventID2”, EventName=“좋은템1”, 기간=…

EventID =“eventID13, EventName=“보너스아이템”, 기간=…

}

Unity App에서본그대로~!

이벤트 조회 API : SelGameEvents 를 호출한다.

HTTP Request 요청 구조

{

memberID = “member1”

}

HTTP Response 응답 구조

{

EventID =“eventID1”, EventName=“크리스탈1”, 기간=…

EventID =“eventID2”, EventName=“좋은템1”, 기간=…

EventID =“eventID13, EventName=“보너스아이템”, 기간=…

}

Unity App에서본그대로~!

API ???

API 리스트Game Logic = Behavior

Game Logic -> APIAPI 추가, 수정이간편!

Behavior 리스트http://aka.ms/cbp

-> wiki –> Behavior 리스트문서

Behavior = 행위Object = 대상

데이터베이스!

회원 : Member

관리자 : Admin

구매 : Purchase

아이템 : Item

멤버아이템 :

MemberItem

게임정보 : GameInfo

스테이지 : Stage

선물 : Gift

공지사항 : Notice

이벤트 : Event

쿠폰 : Coupon

CloudBread DB 디자인http://aka.ms/cbp

-> wiki –> database 디자인문서

Postman 데모

공지사항 - Notice

공지사항CBSelNotices

이벤트 - Event

이벤트CBSelGameEvents

선물 - Gift

이벤트CBSelGiftItemToMe

게임정보-GameInfo, 랭킹-Rank, 아이템-Item

게임정보CBComSelMemberGameInfoes

랭킹GetMemberRankbyMeberID

GetRangeRankerInfoCBRank-GetTopXRanker

멤버아이템-memberitem

멤버아이템CBSelMemberItems

게임내아이템추가+상태변경

게임후아이템추가+상태변경

아이템사용AddUseMemberItem

아이템앱내구매 - Purchase

구매CBComSelMemberItemPurc

hase

PostmanHands on

CloudBread Unity App “CODING"

HTTP Request 실습

유니티 WWW 클래스사용UnityEngine.WWW

Unity HTTP Request 실습

HTTP Request 실습

HTTP Request 실습

Unity Demo

홍윤석

CloudBread SocketDemo

한바환

WEB APPS

How to install CloudBread-Socket.IO

Type

About Socket.IO

한바환

Web Socket

WEB APPS

Allow web-socket

Connect to Redis

How to install CloudBread-Socket.IO

CloudBread Admin-Web 데모김대우

Front-End API 서버Socket 서버AdminWeb 서버

CloudBreadservice architecture

CloudBread – (2) “Cumulonimbus” project architecture design - Full PaaS – most “flexible” & wide range of game & app service

Transactional Data

Azure SQL Database – Elastic #N

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

직접다클라우드에만들자한방에!

ARM 배포소개김정현

Your application code

Required resources Your infrastructure code

Azure: Resources (IaaS, PaaS)You: Code (application, infrastructure)

How to deployment

Fork the Cloudbread-ARM project

Click the [Deploy to Azure] button

Input parameters and Create resource group 주의사항● postfix app name

- 오직소문자또는숫자

- 16자이내

● SQL server login ID

- admin 이란 ID 사용불가

● SQL server login password

- 최소 8자

- 하나이상의특수문자필수

ARM DEMO & Hands on

김정현

Authentication 인증

인증 - 3rd party authentication

Azure Mobile App 인증이란?

Azure 에서제공하는회원아이디관리, 회원인증관리등의편리한기능

어떻게회원인증처리를할까?

HTTP Rest Request 를할때마다

암호화된 Token 를같이보내자!

CloudBread on Azure가발급하는

Token 을가지고있을때만대답하자!

(Response)

컨셉Request Header 에올바른 Token을넣었을때

”Hello”

정상적인응답을받음!

어떻게회원인증처리를할까?

HTTP Rest Request 를할때마다

회원 ID (Token) 를같이보내자!

CloudBread on Azure 가발급하는

Token 을가지고있을때만대답하자!

(Response)

컨셉 Request Header 에틀린 Token을넣었을때

”[Error] ”

응답을못받음!

이렇게편리한 Token 어떻게받지?

ID : LoveCloudBread

PW : **************

페이스북계정

Google + 계정

Microsoft 계정

CloudBread(MS Azure)

각사이트에서발급한토큰

자체인증… 구현…ㅠㅠ

어차피유저들이안써…

Azure Mobile App 인증

Facebook authentication in Unity Demo

홍윤석

1. 열심히게임을만든다. (Unity로…)

2. 페이스북개발자페이지에서앱을 생성한다.

(http://developers.facebook.com)

3. Azure 에서생성된 Mobile App 에서페이스북인증등록을한다.

4. Facebook SDK for Unity 를다운받는다.

(https://developers.facebook.com/docs/unity)

5. 예제 Copy & Paste

6. 끝!

CloudBread회원인증

페이스북로그인 CloudBread 에서발급한토큰페이스북에서발급한토큰

Facebook SDK 유니티용없음…

https://developers.facebook.com

http://<your ID>.azurewebsites.net

Settings -> Advanced

http://<your ID>.azurewebsites.net/login/facebook

Azure Portal : https://portal.azure.com

https://developers.facebook.com/docs/unity

Unity로응답하라!

CloudBread Coding

홍윤석

CloudBread 배포

1st-D.Camp-Offline-Camp리포지토리참조

CloudBread 배포데모

데이터베이스연결문자열

(connection String)

1st-D.Camp-Offline-Camp리포지토리참조

DB 설치

DB 설치데모

CloudBread 설정

CloudBread Socket 배포/설정

CloudBread Scheduler 배포

CloudBread Scheduler 설정

CloudBread 관리자페이지Admin Web 배포

CloudBread 관리자페이지Admin Web 설정

Appendix

Why need Socket.IO?To enable servers real-time communicate with clients

WEB APPS

How to install CloudBread-Socket.IO

Needs

Type

WEB APPS

How to install CloudBread-Socket.IO

/tools/tasks/deploy.js

Match your web app credentials

Game server에왜필요할까?

Client game

developer Game server

Database

Cloud service

서버, 데이터베이스관리하는시간을절약

CloudBread –추상화디자인아키텍처

데이터저장소 – SQL

(암호화)

로그데이터저장소 – NoSQL

(암호화)

FE 모바일응답서버 #N

배치성작업(일배치/시배치/월배치)

및비실시간성데이터처리를위한큐(Queue) 저장소

중간작업자배치작업처리기어뷰징규칙 / 푸쉬알림로그라우팅처리기 #N

작업스케쥴러(Trigger)

데이터출력캐시랭킹서비스를위한캐시

관리자페이지

CloudBread – (2) “Cumulonimbus” project architecture design - CloudBread Front-End 서버, Socket 서버와Admin webpage 서버

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

CloudBread – (2) “Cumulonimbus” project architecture design - Transactional Data 처리

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

CloudBread – (2) “Cumulonimbus” project architecture design - DB 캐시

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

CloudBread – (2) “Cumulonimbus” project architecture design -게임로그저장

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

CloudBread – (2) “Cumulonimbus” project architecture design -실시간통신 – Socket 서버

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

CloudBread – (2) “Cumulonimbus” project architecture design -대량로그저장

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

CloudBread – (2) “Cumulonimbus” project architecture design - Scheduler / Batch 서비스

Transactional Data

Azure SQL Database

Or SQL VM #N

Game log data

Azure Table storage #N

Azure Mobile App #1

Azure Mobile App #N

Log & schedule queue

Azure Queue storage #

Redis cache #N

Scheduler + Worker

Azure Web Job #1

Log processor + Scheduled Job

Scheduler + Worker

Azure Web Job #N

Log processor + Scheduled Job

Socket Auth, Leader

board(Ranking), Data Cache

Redis cache #N

CDN

AdminWeb

Socket Server #1

Realtime communication

Socket Server #N

Realtime communication

Azure App ServiceBuild and scale great cloud apps

Web Apps

Mobile Apps

Logic Apps

API Apps

App Service - one integrated offering

Web Apps

Web apps that scale with your business

Mobile Apps

Build Mobile apps for any device

Develop apps with….NET | Node.js | PHP | Python | Java

Benefits of App Services

Automatic OS patching

Enterprise-grade security

High availability

Automated scale out/in

Built-in load balancing

Supports many languages and platforms

.NET, Node.js, Python, Ruby and many more

Easy continuous deployment

Continuous delivery from third-party source control providers

Built-in Git repo

Mobile Apps

New capabilities for Mobile apps:

• Webjobs for long running tasks

• CI with GitHub, BitBucket, VSO

• Auto-load balance, Autoscale, Geo DR

• Virtual networking and hybrid connections

• Site slots for staged deployments

Mobile services plus

a whole lot more

MOBILE APPS

Azure Mobile Services

Storage

Authentication

Logic

Push

Scheduler

Structured Storage

Powered by SQL Database

Supports rich querying capabilities

Dynamic Schematization

Data management in: Azure Portal

SQL Portal (Silverlight)

SQL Management Studio

REST API

Azure CLI Tools

SQL CLI

Microsoft Azure

Server Side Table Scripts

Node.js scripts

Intercept CRUD requests

to tables

Passes through to SQL by

default

Fully customizable

.NET Web API

backend in

Visual Studio

MongoDB, Table Storage,

SQL out of the box

Custom API

Non-table based endpoints

Accessible from GET

POST

PUT

PATCH

DELETE

For node.js logic in scripts like table endpoints

For .NET delivered through a WebAPI

Expose any functionality you want

120Microsoft Azure

Web Apps

WEB APPS

Full capability set available including:

• .NET, Node.js, Java, PHP, and Python

• WebJobs for long running tasks

• Integrated VS publish, remote debug…

• CI with GitHub, BitBucket, VSO

• Auto-load balance, Autoscale, Geo DR

• Virtual networking and hybrid connections

• Site slots for staged deployments

Web apps run as-is

no changes required

Azure App Service Web App

Public Site Extensions Private Site Extensions

Web Site Kudu Web Jobs

Monaco MSDeploy Build/Upload Your Own

Gallery

App Service Web App

WebJobs

Light-weight CPU Intensive Tasks

run.cmd, run.bat run.exe run.ps1 run.sh run.php run.py run.js

BlobTrigger, TableTrigger, QueueTrigger, ServicebusTrigger

Scale: Singleton, Multi-instance

Job Type: On-Demand, Scheduled, Continuous

WebJobs SDK Feature:

Deployment: Portal, Visual Studio, CLI, Git

WebJobs

WebJobs

Logic Apps

Continous Delivery with App Service

Continuous integration

Continuous Deployment for Web Apps

Web App

Production Slot

Source Control / Code Repo Web App

Staging Slot

Commits

Agility through Continuous Deployment

Auto-Swap

Changes

Hooks

Git pull

Developer

GitHubVisual Studio

Online

Git BitBucketCodePlex DropBox FTP

Choose your own adventure!

Source Control for Web/API/Mobile Apps

AutoScale

AutoScale

AutoScale

AutoScale

App Service Environment

New Premium Tier Feature

Dedicated compute resources and network resources

Increased Scaling Options

Directly created in a Virtual Network

Support all Web App features and capabilities

Support Web, Mobile and API Apps

Global Scale

App Service Environment (ASE)

Presenter

App Service Environment

top related