150
CloudBread 2 회 캠프 http://aka.ms/cbp

2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

  • Upload
    dae-kim

  • View
    329

  • Download
    7

Embed Size (px)

Citation preview

Page 1: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread2회캠프

http://aka.ms/cbp

Page 2: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Welcome to CloudBread!

Page 3: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

- 앱 개발에집중

- 파라미터에 맞춰호출

- 예제 테스트앱 제공

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

- 앱의 코드는바뀌지 않음

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

- Scale Up – Out 선택은자유

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

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

- GM 관리자 도구제공

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

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

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

Page 4: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

목표CloudBread 연동!!!

Page 5: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 6: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

게임데이터처리

Page 7: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

공지사항 - Notice

Page 8: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

이벤트 - Event

Page 9: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

선물 - Gift

Page 10: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 11: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

멤버아이템-memberitem

Page 12: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 13: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 14: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

아이템앱내구매 - Purchase

Page 15: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Push

Page 16: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

인증 - 3rd party authentication

Page 17: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

서버정보+리소스 - serverinfo

Page 18: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Imagine

어떻게서버와통신을?

Page 19: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread Unity AppDEMO

Page 20: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

은밀한~ 통신

Page 21: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

HTTPREST APIJSON

Page 22: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

HTTP Request 요청구조

HTTP Response 응답구조

Unity App에서본그대로~!

{memberID = “member1”

}

{EventID =“eventID1”, EventName=“크리스탈1”, 기간=…EventID =“eventID2”, EventName=“좋은템1”, 기간=…EventID =“eventID13, EventName=“보너스아이템”, 기간=…

}

Page 23: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

HTTP Request 요청구조

HTTP Response 응답구조

Unity App에서본그대로~!

{memberID = “member1”

}

{EventID =“eventID1”, EventName=“크리스탈1”, 기간=…EventID =“eventID2”, EventName=“좋은템1”, 기간=…EventID =“eventID13, EventName=“보너스아이템”, 기간=…

}

API ???

Page 24: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

API 리스트Game Logic = Behavior

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

Page 25: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

-> wiki –> Behavior 리스트문서

Page 26: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Behavior = 행위Object = 대상

데이터베이스!

Page 27: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

회원 : Member

관리자 : Admin

구매 : Purchase

아이템 : Item

멤버아이템 :

MemberItem

게임정보 : GameInfo

스테이지 : Stage

선물 : Gift

공지사항 : Notice

이벤트 : Event

쿠폰 : Coupon

Page 28: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

-> wiki –> database 디자인문서

Page 29: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Postman 데모

Postman collection 다운로드 : https://goo.gl/W1SxUn

Page 30: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

공지사항 - Notice

Page 31: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

공지사항CBSelNotices

Page 32: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

이벤트 - Event

Page 33: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

이벤트CBSelGameEvents

Page 34: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

선물 - Gift

Page 35: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

이벤트CBSelGiftItemToMe

Page 36: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 37: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

게임정보CBComSelMemberGameInfoes

랭킹GetMemberRankbyMeberID

GetRangeRankerInfoCBRank-GetTopXRanker

Page 38: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

멤버아이템-memberitem

Page 39: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

멤버아이템CBSelMemberItems

Page 40: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 41: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 42: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

아이템사용AddUseMemberItem

Page 43: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

아이템앱내구매 - Purchase

Page 44: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

구매CBComSelMemberItemPurc

hase

Page 45: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

PostmanHands on

Postman collection 다운로드 : https://goo.gl/W1SxUn

Page 46: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread Unity App “CODING"

Page 47: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

HTTP Request 실습

Page 48: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 49: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Unity HTTP Request 실습

Page 50: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

HTTP Request 실습

Page 51: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

HTTP Request 실습

Page 52: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Unity Demo홍윤석

코딩 Demo : https://goo.gl/4GGXhK

Page 53: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread DB구조API 소개

Page 54: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

2회 CloudBread 캠프DB 구조, API 소개

프린트본

54

Page 55: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

MemberID PWD Email Name1

Member

55

- Memberid / PWD 신경끕니다.(잠시뒤 “인증!!!”)

- Postman CBSelLoginIDDupeCheck 을이용해중복검사

- Email과 name1 은게임에서중요

- Email은나중에 CS 및사용자식별으로필요

- Name1은 “닉네임”으로 leader board 등에서활용

- 넣을때는 InsRegMember를이용합니다.

- InsRegMember로회원등록을쓰는이유는 Members와gameinfo에동시에입력하는로직 .

- Members = 계정, Gameinfo는게이머의속성

- Gameinfo의 point는"랭킹"에이용되니숫자만사용

- Name1의닉네임과 gameinfo의 point가랭킹으로활용

- CBComSelMember로조회

- CBCOMUdtMember로수정

Page 56: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

MemberID Level Exp Point

GameInfo

56

- GameInfo는게이머의속성

- “게이머”의전역정보저장소. MemberItem과다름

- 차차차의여러대의자동차 + 자동차별로등록된속성(최고속력, 차레벨가속도…) 어떻게저장?

1) Memberitem에 1개의자동차 + cCol1~10에저장

2) 여분의컬럼이부족할경우 json으로저장추천

3) 카테고리컬럼을활용해식별자로사용

- 돈, 현금성아이템정보는 gameinfo에저장할까요? 아니면 memberitem에저장할까요?

가능하면 memberitem을쓰세요. 랭크나플레이어전역정보를제외하면 item에올리고 memberitem에저장을추천

- Gameinfo의 point는 "랭킹"에이용되니숫자만사용

- Name1의닉네임과 gameinfo의 point가랭킹으로활용

- CBComSelMemberGameInfoes로조회

- CBComUdtMemberGameInfoes로수정

Page 57: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

ItemID ItemName Price Category

Item

57

- 클라이언트에아이템정보저장? 서버에저장? 장단점

- 서버에저장시프로모션, 밸런스조절등이용이

- Item을클라이언트에저장하는것도방법이나, 전체적인 CloudBread 활용을위해 itemList 테이블에저장을강력추천

- CloudBread에서 Item = 플레이어의소유물이기도하고, 게이머의돈등을지정도가능해요.

- Item테이블의컨셉 = 상점의목록

- “구매”라는 behavior를통해 “MemberItem – 회원아이템”으로저장되는로직

- CBComSelItemList1으로 1개아이템조회

- CBSelItemListAll로전체아이템조회

- (추가/수정은관리자전용)

Page 58: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

MemberItemID MemberID ItemID ItemCount ItemStatus

MemberItems

58

- Member : Item = 1:다관계

- 차차차의여러대의자동차 + 자동차별로등록된속성(최고속력, 차레벨가속도…) 어떻게저장?

1) Memberitem에 1개의자동차 + cCol1~10에저장

2) 여분의컬럼이부족할경우 json으로저장추천

3) 카테고리컬럼을활용해식별자로사용

- 돈, 현금성아이템정보는 gameinfo에저장할까요? 아니면 memberitem에저장할까요?

가능하면 memberitem을쓰세요. 랭크나플레이어전역정보를제외하면 item에올리고 memberitem에저장을추천

- CBSelMemberItems으로회원이소유한아이템들조회

- CBComSelMemberItem으로 1개의 memberitem조회

- CBComUdtMemberItem으로 1개의 memberitem 수정

- CBComInsMemberItem으로 memberitem 추가

- CBAddUseMemberItem으로 membergameinfo 수정+memberitem 추가/수정처리(트렌젝션처리)

Page 59: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Member

GameInf

oStageID

MemberI

D

StageNa

me

StageSta

tusCategory Mission

Stage

59

- 스테이지는게임의 “플레이” 단위를지칭

- 마찬가지로, 1:다의관계를가지고있고, 스테이지별보상, 최고점수, 기록등을보관에용이합니다.

- 부족한컬럼들은 json 데이터로활용

- CBSelMemberGameInfoStages으로 member의 stage들을조회

- CBComSelMemberGameInfoStages으로 1개 stage 정보조회

- CBComUdtMemberGameInfoStages으로 1개 stage 정보수정

- CBComInsMemberGameInfoStages으로 1개 stage 정보추가

- CBUdtMemberGameInfoStage으로 gameinfo와 stage를수정(트렌젝션)

Page 60: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Member

ItemPur

chaseID

Member

IDItemID Quantity Price PGinfo

Purchase

60

- 구매처리입니다.

- 구매 = 현금성구매를의미하고결재가포함된정보를저장합니다.

- 구매 = item의구매를의미하며 item은 memberitem에저장합니다.(가상화폐도포함하며 memberitem에돈이나현금성아이템도보관)

- 구매는모두트렌젝션처리가이루어집니다.

- CBAddMemberItemPurchase으로 memberitem에item을추가하고, gameinfo를업데이트하고, purchase를추가(트렌젝션처리)

- CBComSelMemberItemPurchase으로 1개의 purchase를조회

- CBComUdtMemberItemPurchase으로 1개의 purchase를수정

- CBComInsMemberItemPurchase로 1개의 purchase를추가

- CBUdtReturnItem으로 1개의 purchase를철회처리(자동화/관리자페이지처리)

Page 61: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

EventID Gategory ItemIDItemCoun

tTitle

Event

61

- 이벤트처리입니다.

- 이벤트는관리자페이지에서추가되며기본 duration으로조회처리

- 이벤트는로그인후또는클라이언트개발자가아무때나, 스테이지클리어시호출해표시가능

- 내가참여할수있는이벤트만표시되고, 관리자페이지에서만들때 duration을이용해조절가능

- Device, OS 등으로클라이언트에서표시여부결정가능

- CBSelGameEvents로회원이참여가능한이벤트조회

- 이벤트추가수정은관리자페이지에서처리

Page 62: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

GameEvent

MemberIDEventID MemberID

EventMember

62

- 이벤트멤버

- 한번참여한이벤트에또참여할수없도록이벤트에참여한회원을기록하는테이블

- CBUdtGameEventMemberToItem으로 memberitem에이벤트의품목을추가하고, eventmember에이벤트참여를기록(트렌젝션)

Page 63: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CouponID Category ItemID ItemCount Status

Coupon

63

- 쿠폰

- 쿠폰정보를저장하고, 대량쿠폰저장도가능

- 관리자페이지에서쿠폰을생성, 대량쿠폰도생성가능(3월 26일현재쿼리사용)

- Group이나카테고리정보를이용해"예약신청자 1천명쿠폰", "게임카페쿠폰 100개"등으로조회해쿠폰대리전달업체나마케팅업체에 excel 파일로전달가능

- 쿠폰번호는 GUID로생성됨

- CBCOMSelCoupon으로쿠폰존재여부체크

Page 64: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CouponMe

mberIDCouponID MemberID

CouponMember

64

- 쿠폰멤버

- 쿠폰사용을기록하는테이블

- 쿠폰을어떤사용자가사용했는지여부가기록

- CBUdtCouponMember로 memberitem에추가, componmember에추가해쿠폰사용불가처리(트렌젝션)

- CBUdtCouponMember을활용해 gameinfo에게이머의 gameinfo 속성을업데이트도가능(Postman의CBUdtCouponMembe-GAMEINFO 참조)

Page 65: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

GiftID ItemID ItemCountFromMem

berID

ToMemberI

D

Gift

65

- 선물

- 선물을주는사람과받는사람, 줄 item이기록됨

- CBSelGiftItemToMe으로나에게온선물들을조회

- CBUdtMoveGift로나에게온선물 1개를 memberitem으로이동(트렌젝션)

- CBUdtSendGift로선물함에선물을보냄, 내memberitem을삭제(트랜젝션)

- CBComSelGiftDepository으로 1개의 gitf를조회

- CBComUdtGiftDepository으로 gift를수정

Page 66: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Nickname Point Rank

Rank(Leader Board)

66

- 랭킹

- Rank는 DB가아닌메모리기반 NoSQL DB인 Redis에저장됨(기본설정)

- 기동되면서 DB의 nickname과 point를읽어서 Redis에저장해전체대상 SQL DB와동기화

- 동기화된후 Rank 수정이필요할시 API로 rank 추가/수정

- Postman CBRank-SetMemberPoint로 rank 추가/수정

- Postman GetTopXRanker로 topranker 리스트조회

- Postman GetRangeRankerInfo로순위범위의 member를조회

- Postman GetMemberRankByID로사용자의랭크순위를조회

-

Page 67: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

인증

67

- Facebook, google id, Microsoft id, twitter id 인증가능

-인증을하면 memberid는자동 sid로치환됨

- Sid는인증제공자(facebook 등)이제공하는회원의고유값

- DEMO 용도로 cb2-auth-demo 서버

- Sid는서버에서만저장, 조회에처리되고클라이언트로내려오지않음

- CloudBread의모든 API는 Sid가존재하면(서버에인증구성이완료되면) 자동으로클라이언트가보내는 memberid를무시하고 sid로치환시킴

-개발단계에서는 memberid를보내고배포단계에서 sid를이용도가능

- CloudBread의암호화(Encryption)와별개로처리됨

-안전한게임통신을위해인증과암호화구성을권장함

Page 68: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

암호화

68

- Crypt 처리로 web.config의설정을이용해 AES256 암호화처리가능

-클라이언트에서암호화구성을수행해 CloudBread API를호출

-암호화되어전달된텍스트를 CloudBread가복호화해서버에저장

-암호화설정시자동클라이언트에암호화된문자열 response

- CloudBread-Encrypt-Text-Tool로암호화복호화를개발시테스트가능

- Postman에기본설정된예제(Encrypt로시작)를활용가능

- DEMO 용도로, “cb2-crypt-demo” 서버이용

Page 69: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Socket 서버

69

-실시간통신

- Socket.io로개발

- Android, iOS 등다양한 SDK를지원(유니티포함)

-그룹제공

-클라이언트는인증을위해 CBSocketAuth API를 CloudBread 에요청

-토큰은 Redis 캐시에저장됨

-클라이언트는토큰정보를 Socket서버로보냄

- Socket 서버가 CloudBread에토큰 Validate 하고실시간통신시작

Page 70: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread SocketDemo한바환

라이브 데모 : http://goo.gl/S5OzJ0

Page 71: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WEB APPS

How to install CloudBread-Socket.IO

Type

Page 72: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

About Socket.IO

한바환

Page 73: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Web Socket

Page 74: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WEB APPS

Allow web-socket

Connect to Redis

How to install CloudBread-Socket.IO

Page 75: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread Admin-Web 데모김대우

Page 76: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 77: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBreadservice architecture

Page 78: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 79: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 80: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

ARM 배포소개김정현

Page 81: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Your application code

Required resources Your infrastructure code

Page 82: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 83: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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자

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

Page 84: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

ARM DEMO & Hands on

김정현

Demo 영상 : https://youtu.be/TvtXkRAymcg

Page 85: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Authentication 인증

Page 86: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

인증 - 3rd party authentication

Page 87: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Azure Mobile App 인증이란?

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

Page 88: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

HTTP Rest Request 를할때마다

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

CloudBread on Azure가발급하는

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

(Response)

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

”Hello”

정상적인응답을받음!

Page 89: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

HTTP Rest Request 를할때마다

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

CloudBread on Azure 가발급하는

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

(Response)

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

”[Error] ”

응답을못받음!

Page 90: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

ID : LoveCloudBread

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

페이스북계정

Google + 계정

Microsoft 계정

CloudBread(MS Azure)

각사이트에서발급한토큰

자체인증… 구현…ㅠㅠ

어차피유저들이안써…

Page 91: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Azure Mobile App 인증

Page 92: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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 유니티용없음…

Page 93: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

https://developers.facebook.com

Page 94: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 95: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Settings -> Advanced

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

Page 96: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 97: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 98: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Facebook authentication in Unity Demo

홍윤석

Demo : https://youtu.be/3aWLD_V1jaI영상 17분 부터 인증 코딩 시작

Page 99: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread 배포

Page 100: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread 배포

가이드문서 : https://goo.gl/4LNGIwDemo : https://youtu.be/PqFB60g6TCc

(2.Mobile app 연속배포과정)

Page 101: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

데이터베이스연결문자열(connection String)

가이드문서 : https://goo.gl/HMNJU8Demo : https://youtu.be/WACxMpbGWYg

(3.DB접근을위한키가져오기)

Page 102: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread DB 설치

Demo : https://youtu.be/yj_w4q84lag(4.DB 개체생성)

Page 103: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread 설정

Demo : https://youtu.be/sqrFa2gn1zw(5.생성된DB에 app 접근하기)

Page 104: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread Socket 배포/설정

Demo : https://youtu.be/woMIke_N9Rc(6.소켓설치)

Page 105: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread Scheduler 배포

Demo : https://youtu.be/aPjdAOb83qE(7.스케쥴러서비스연동)

Page 106: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

CloudBread adminweb연속배포

Demo : https://youtu.be/SfFxsSxE3V4(8.admin web 연속배포)

Page 107: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
Page 108: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Appendix

Page 109: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 110: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WEB APPS

How to install CloudBread-Socket.IO

Needs

Type

Page 111: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WEB APPS

How to install CloudBread-Socket.IO

/tools/tasks/deploy.js

Match your web app credentials

Page 112: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

데이터저장소 – SQL

(암호화)

로그데이터저장소 – NoSQL

(암호화)

FE 모바일응답서버 #N

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

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

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

작업스케쥴러(Trigger)

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

관리자페이지

Page 113: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 114: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 115: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 116: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 117: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 118: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 119: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 120: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Azure App ServiceBuild and scale great cloud apps

Web Apps

Mobile Apps

Logic Apps

API Apps

Page 121: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

App Service - one integrated offering

Web Apps

Web apps that scale with your business

Mobile Apps

Build Mobile apps for any device

Page 122: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 123: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 124: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Mobile Apps

Page 125: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 126: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Azure Mobile Services

Storage

Authentication

Logic

Push

Scheduler

Page 127: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 128: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 129: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

131Microsoft Azure

Page 130: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Web Apps

Page 131: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 132: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 133: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WebJobs

Page 134: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 135: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WebJobs

Page 136: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

WebJobs

Page 137: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Logic Apps

Page 138: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Continous Delivery with App Service

Page 139: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Continuous integration

Page 140: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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

Page 141: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

GitHubVisual Studio

Online

Git BitBucketCodePlex DropBox FTP

Choose your own adventure!

Source Control for Web/API/Mobile Apps

Page 142: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

AutoScale

Page 143: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

AutoScale

Page 144: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

AutoScale

Page 145: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

AutoScale

Page 146: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

App Service Environment

Page 147: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

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)

Page 148: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
Page 149: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

Presenter

Page 150: 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread

App Service Environment