SlideShare a Scribd company logo
CloudBread
2회 캠프
http://aka.ms/cbp
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 App
DEMO
클라이언트 디바이스와
CloudBread 게임서버의
은밀한~ 통신
HTTP
REST API
JSON
이벤트 조회 API : SelGameEvents 를 호출한다.
HTTP Request 요청 구조
HTTP Response 응답 구조
Unity App에서 본 그대로~!
{
memberID = “member1”
}
{
EventID =“eventID1”, EventName=“크리스탈1”, 기간=…
EventID =“eventID2”, EventName=“좋은템1”, 기간=…
EventID =“eventID13, EventName=“보너스아이템”, 기간=…
}
이벤트 조회 API : SelGameEvents 를 호출한다.
HTTP Request 요청 구조
HTTP Response 응답 구조
Unity App에서 본 그대로~!
{
memberID = “member1”
}
{
EventID =“eventID1”, EventName=“크리스탈1”, 기간=…
EventID =“eventID2”, EventName=“좋은템1”, 기간=…
EventID =“eventID13, EventName=“보너스아이템”, 기간=…
}
API ???
API 리스트
Game Logic = Behavior
Game Logic -> API
API 추가, 수정이 간편!
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 데모
Postman collection 다운로드 :
https://goo.gl/W1SxUn
공지사항 - Notice
공지사항
CBSelNotices
이벤트 - Event
이벤트
CBSelGameEvents
선물 - Gift
이벤트
CBSelGiftItemToMe
게임정보-GameInfo, 랭킹-Rank, 아이템-Item
게임정보
CBComSelMemberGameInfoes
랭킹
GetMemberRankbyMeberID
GetRangeRankerInfo
CBRank-GetTopXRanker
멤버아이템-memberitem
멤버아이템
CBSelMemberItems
게임내 아이템 추가+상태 변경
게임후 아이템 추가+상태 변경
아이템 사용
AddUseMemberItem
아이템 앱 내 구매 - Purchase
구매
CBComSelMemberItemPurc
hase
Postman
Hands on
Postman collection 다운로드 :
https://goo.gl/W1SxUn
CloudBread
Unity App “CODING"
HTTP Request 실습
 유니티 WWW 클래스 사용
UnityEngine.WWW
Unity HTTP Request 실습
HTTP Request 실습
HTTP Request 실습
Unity Demo
홍윤석
코딩 Demo : https://goo.gl/4GGXhK
CloudBread DB구조
API 소개
2회 CloudBread 캠프
DB 구조, API 소개
프린트본
54
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로 수정
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로 수정
ItemID ItemName Price Category
Item
57
- 클라이언트에 아이템 정보 저장? 서버에 저장? 장단점
- 서버에 저장시 프로모션, 밸런스 조절 등이 용이
- Item을 클라이언트에 저장하는 것도 방법이나, 전체적
인 CloudBread 활용을 위해 itemList 테이블에 저장을 강
력 추천
- CloudBread에서 Item = 플레이어의 소유물이기도 하고,
게이머의 돈 등을 지정도 가능해요.
- Item테이블의 컨셉 = 상점의 목록
- “구매”라는 behavior를 통해 “MemberItem – 회원아이
템”으로 저장되는 로직
- CBComSelItemList1으로 1개 아이템 조회
- CBSelItemListAll로 전체 아이템 조회
- (추가/수정은 관리자 전용)
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 추가/수정 처리(트렌젝션 처리)
Member
GameInf
oStageID
MemberI
D
StageNa
me
StageSta
tus
Category Mission
Stage
59
- 스테이지는 게임의 “플레이” 단위를 지칭
- 마찬가지로, 1:다의 관계를 가지고 있고, 스테이지별
보상, 최고점수, 기록 등을 보관에 용이합니다.
- 부족한 컬럼들은 json 데이터로 활용
- CBSelMemberGameInfoStages으로 member의 stage
들을 조회
- CBComSelMemberGameInfoStages으로 1개 stage 정
보 조회
- CBComUdtMemberGameInfoStages으로 1개 stage 정
보 수정
- CBComInsMemberGameInfoStages으로 1개 stage 정
보 추가
- CBUdtMemberGameInfoStage으로 gameinfo와 stage
를 수정(트렌젝션)
Member
ItemPur
chaseID
Member
ID
ItemID 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를 철회 처리(자
동화/관리자페이지 처리)
EventID Gategory ItemID
ItemCoun
t
Title
Event
61
- 이벤트 처리 입니다.
- 이벤트는 관리자 페이지에서 추가되며 기본 duration
으로 조회 처리
- 이벤트는 로그인 후 또는 클라이언트 개발자가 아무때
나, 스테이지 클리어시 호출해 표시 가능
- 내가 참여할 수 있는 이벤트만 표시되고, 관리자 페이
지에서 만들때 duration을 이용해 조절 가능
- Device, OS 등으로 클라이언트에서 표시 여부 결정 가
능
- CBSelGameEvents로 회원이 참여 가능한 이벤트 조회
- 이벤트 추가 수정은 관리자 페이지에서 처리
GameEvent
MemberID
EventID MemberID
EventMember
62
- 이벤트멤버
- 한번 참여한 이벤트에 또 참여할 수 없도록 이벤트에
참여한 회원을 기록하는 테이블
- CBUdtGameEventMemberToItem으로 memberitem에
이벤트의 품목을 추가하고, eventmember에 이벤트 참
여를 기록(트렌젝션)
CouponID Category ItemID ItemCount Status
Coupon
63
- 쿠폰
- 쿠폰 정보를 저장하고, 대량 쿠폰 저장도 가능
- 관리자 페이지에서 쿠폰을 생성, 대량쿠폰도 생성 가
능(3월 26일 현재 쿼리 사용)
- Group이나 카테고리 정보를 이용해 "예약 신청자 1
천명 쿠폰", "게임 카페 쿠폰 100개" 등으로 조회해
쿠폰 대리 전달 업체나 마케팅 업체에 excel 파일로 전
달 가능
- 쿠폰번호는 GUID로 생성됨
- CBCOMSelCoupon으로 쿠폰 존재 여부 체크
CouponMe
mberID
CouponID MemberID
CouponMember
64
- 쿠폰멤버
- 쿠폰 사용을 기록하는 테이블
- 쿠폰을 어떤 사용자가 사용했는지 여부가 기록
- CBUdtCouponMember로 memberitem에 추가,
componmember에 추가해 쿠폰 사용 불가 처리(트렌
젝션)
- CBUdtCouponMember을 활용해 gameinfo에 게이머
의 gameinfo 속성을 업데이트도 가능(Postman의
CBUdtCouponMembe-GAMEINFO 참조)
GiftID ItemID ItemCount
FromMem
berID
ToMemberI
D
Gift
65
- 선물
- 선물을 주는 사람과 받는 사람, 줄 item이 기록됨
- CBSelGiftItemToMe으로 나에게 온 선물들을 조회
- CBUdtMoveGift로 나에게 온 선물 1개를 memberitem
으로 이동(트렌젝션)
- CBUdtSendGift로 선물함에 선물을 보냄, 내
memberitem을 삭제(트랜젝션)
- CBComSelGiftDepository으로 1개의 gitf를 조회
- CBComUdtGiftDepository으로 gift를 수정
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로 사용자의 랭크 순위
를 조회
-
인증
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)와 별개로 처리됨
- 안전한 게임 통신을 위해 인증과 암호화 구성을 권장함
암호화
68
- Crypt 처리로 web.config의 설정을 이용해 AES256 암호화 처리 가능
- 클라이언트에서 암호화 구성을 수행해 CloudBread API를 호출
- 암호화되어 전달된 텍스트를 CloudBread가 복호화해 서버에 저장
- 암호화 설정시 자동 클라이언트에 암호화된 문자열 response
- CloudBread-Encrypt-Text-Tool로 암호화 복호화를 개발시 테스트 가능
- Postman에 기본 설정된 예제(Encrypt로 시작)를 활용 가능
- DEMO 용도로, “cb2-crypt-demo” 서버 이용
Socket 서버
69
- 실시간 통신
- Socket.io로 개발
- Android, iOS 등 다양한 SDK를 지원(유니티 포함)
- 그룹 제공
- 클라이언트는 인증을 위해 CBSocketAuth API를 CloudBread 에 요청
- 토큰은 Redis 캐시에 저장됨
- 클라이언트는 토큰 정보를 Socket서버로 보냄
- Socket 서버가 CloudBread에 토큰 Validate 하고 실시간 통신 시작
CloudBread Socket
Demo
한바환
라이브 데모 : http://goo.gl/S5OzJ0
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 서버
CloudBread
service 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
김정현
Demo 영상 : https://youtu.be/TvtXkRAymcg
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 인증
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
Facebook authentication in
Unity Demo
홍윤석
Demo : https://youtu.be/3aWLD_V1jaI
영상 17분 부터 인증 코딩 시작
CloudBread 배포
CloudBread 배포
가이드 문서 : https://goo.gl/4LNGIw
Demo : https://youtu.be/PqFB60g6TCc
(2.Mobile app 연속배포 과정)
데이터베이스 연결 문자열
(connection String)
가이드 문서 : https://goo.gl/HMNJU8
Demo : https://youtu.be/WACxMpbGWYg
(3.DB접근을 위한 키 가져오기)
CloudBread DB 설치
Demo : https://youtu.be/yj_w4q84lag
(4.DB 개체생성)
CloudBread 설정
Demo : https://youtu.be/sqrFa2gn1zw
(5.생성된DB에 app 접근하기)
CloudBread Socket 배포/설정
Demo : https://youtu.be/woMIke_N9Rc
(6.소켓 설치)
CloudBread Scheduler 배포
Demo : https://youtu.be/aPjdAOb83qE
(7.스케쥴러 서비스 연동)
CloudBread adminweb
연속배포
Demo : https://youtu.be/SfFxsSxE3V4
(8.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
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 Service
Build 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
131Microsoft 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 RepoWeb 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

More Related Content

What's hot

아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
Brian Hong
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon Web Services Korea
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
iFunFactory Inc.
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
NAVER D2
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
Hyunjik Bae
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)Brian Hong
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
Amazon Web Services Korea
 
Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님
Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님
Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님
NAVER D2
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 finalGi Bong Kim
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
iFunFactory Inc.
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음
nexusz99
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님
NAVER D2
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
iFunFactory Inc.
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
NAVER D2
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
Dylan Ko
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
영석 양
 
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
Changje Jeong
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
Brian Hong
 

What's hot (20)

아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님
Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님
Microsoft Azure 클라우드 에서 Elasticsearch 서비스 사용 - 이건복 님
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 final
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
 
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 

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

게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
Amazon Web Services Korea
 
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
Tae-Seong Park
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
 
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022
Amazon Web Services Korea
 
Scouter Tutorial & Sprint
Scouter Tutorial & SprintScouter Tutorial & Sprint
Scouter Tutorial & Sprint
GunHee Lee
 
AWS & GAME Service - 2
AWS & GAME Service - 2AWS & GAME Service - 2
AWS & GAME Service - 2
지현 이
 
[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희
NAVER D2
 
모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향
AWSKRUG - AWS한국사용자모임
 
기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...
기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...
기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...
Amazon Web Services Korea
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
Sang Don Kim
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Amazon Web Services Korea
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
donghoonlee18659041
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
DomainDriven DomainDriven
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
GunHee Lee
 
20200923 amazon personalize service webinar presentation file_public
20200923 amazon personalize service webinar presentation file_public20200923 amazon personalize service webinar presentation file_public
20200923 amazon personalize service webinar presentation file_public
YongHyeokRhee
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
Jaeseung Ha
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
Amazon Web Services Korea
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista Community
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
Jinwoong Kim
 

Similar to 2회 오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread (20)

게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...
 
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022
 
Scouter Tutorial & Sprint
Scouter Tutorial & SprintScouter Tutorial & Sprint
Scouter Tutorial & Sprint
 
AWS & GAME Service - 2
AWS & GAME Service - 2AWS & GAME Service - 2
AWS & GAME Service - 2
 
[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희
 
모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향
 
기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...
기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...
기계 학습 접목을 통한 전자 제조사의 플랫폼 사업자로의 진화 – 이종우 솔루션스 AWS 아키텍트, 박승환 삼성전자 엔지니어:: AWS Cl...
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
20200923 amazon personalize service webinar presentation file_public
20200923 amazon personalize service webinar presentation file_public20200923 amazon personalize service webinar presentation file_public
20200923 amazon personalize service webinar presentation file_public
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 

More from Dae Kim

SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
Dae Kim
 
Machine Learning developer in Business
Machine Learning developer in BusinessMachine Learning developer in Business
Machine Learning developer in Business
Dae Kim
 
Cloud and Machine Learning in real world business
Cloud and Machine Learning in real world businessCloud and Machine Learning in real world business
Cloud and Machine Learning in real world business
Dae Kim
 
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
Dae Kim
 
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
Dae Kim
 
오픈소스 프로젝트, 이렇게 클라우드로 시작하자
오픈소스 프로젝트, 이렇게 클라우드로 시작하자오픈소스 프로젝트, 이렇게 클라우드로 시작하자
오픈소스 프로젝트, 이렇게 클라우드로 시작하자
Dae Kim
 
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
Dae Kim
 
Visual Studio Tech Update - OSS on Azure
Visual Studio Tech Update - OSS on AzureVisual Studio Tech Update - OSS on Azure
Visual Studio Tech Update - OSS on Azure
Dae Kim
 
XECON2015 - 오픈소스 소프트웨어 on 클라우드
XECON2015 - 오픈소스 소프트웨어 on 클라우드XECON2015 - 오픈소스 소프트웨어 on 클라우드
XECON2015 - 오픈소스 소프트웨어 on 클라우드
Dae Kim
 

More from Dae Kim (9)

SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
 
Machine Learning developer in Business
Machine Learning developer in BusinessMachine Learning developer in Business
Machine Learning developer in Business
 
Cloud and Machine Learning in real world business
Cloud and Machine Learning in real world businessCloud and Machine Learning in real world business
Cloud and Machine Learning in real world business
 
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
 
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
 
오픈소스 프로젝트, 이렇게 클라우드로 시작하자
오픈소스 프로젝트, 이렇게 클라우드로 시작하자오픈소스 프로젝트, 이렇게 클라우드로 시작하자
오픈소스 프로젝트, 이렇게 클라우드로 시작하자
 
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
 
Visual Studio Tech Update - OSS on Azure
Visual Studio Tech Update - OSS on AzureVisual Studio Tech Update - OSS on Azure
Visual Studio Tech Update - OSS on Azure
 
XECON2015 - 오픈소스 소프트웨어 on 클라우드
XECON2015 - 오픈소스 소프트웨어 on 클라우드XECON2015 - 오픈소스 소프트웨어 on 클라우드
XECON2015 - 오픈소스 소프트웨어 on 클라우드
 

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

  • 3. 무료 오픈소스 프로젝트 - CloudBread - 앱 개발에 집중 - 파라미터에 맞춰 호출 - 예제 테스트 앱 제공 - REST 호출 함수 만들 필요 없음 - 앱의 코드는 바뀌지 않음 - IaaS보다 진화한 PaaS 클라우드 - Scale Up – Out 선택은 자유 - 서비스 구조에 맞는 기능 선택 - 보안 구조 / 데이터 암호화 선택 가능 - GM 관리자 도구 제공 - 기본 배치(DAU, HAU, DARPU) 제공 - 무료 기술 교육 제공(헤카톤/캠프) (대부분 이미 다 만들어진) 무료 오픈소스(MIT) 프로젝트 모바일 게임과 앱에 최적화된 게임 서버 엔진
  • 14. 아이템 앱 내 구매 - Purchase
  • 15. Push
  • 16. 인증 - 3rd party authentication
  • 22. 이벤트 조회 API : SelGameEvents 를 호출한다. HTTP Request 요청 구조 HTTP Response 응답 구조 Unity App에서 본 그대로~! { memberID = “member1” } { EventID =“eventID1”, EventName=“크리스탈1”, 기간=… EventID =“eventID2”, EventName=“좋은템1”, 기간=… EventID =“eventID13, EventName=“보너스아이템”, 기간=… }
  • 23. 이벤트 조회 API : SelGameEvents 를 호출한다. HTTP Request 요청 구조 HTTP Response 응답 구조 Unity App에서 본 그대로~! { memberID = “member1” } { EventID =“eventID1”, EventName=“크리스탈1”, 기간=… EventID =“eventID2”, EventName=“좋은템1”, 기간=… EventID =“eventID13, EventName=“보너스아이템”, 기간=… } API ???
  • 24. API 리스트 Game Logic = Behavior Game Logic -> API API 추가, 수정이 간편!
  • 25. Behavior 리스트 http://aka.ms/cbp -> wiki –> Behavior 리스트 문서
  • 26. Behavior = 행위 Object = 대상 데이터베이스!
  • 27. 회원 : Member 관리자 : Admin 구매 : Purchase 아이템 : Item 멤버아이템 : MemberItem 게임정보 : GameInfo 스테이지 : Stage 선물 : Gift 공지사항 : Notice 이벤트 : Event 쿠폰 : Coupon
  • 28. CloudBread DB 디자인 http://aka.ms/cbp -> wiki –> database 디자인 문서
  • 29. Postman 데모 Postman collection 다운로드 : https://goo.gl/W1SxUn
  • 43. 아이템 앱 내 구매 - Purchase
  • 45. Postman Hands on Postman collection 다운로드 : https://goo.gl/W1SxUn
  • 48.  유니티 WWW 클래스 사용 UnityEngine.WWW
  • 52. Unity Demo 홍윤석 코딩 Demo : https://goo.gl/4GGXhK
  • 54. 2회 CloudBread 캠프 DB 구조, API 소개 프린트본 54
  • 55. 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로 수정
  • 56. 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로 수정
  • 57. ItemID ItemName Price Category Item 57 - 클라이언트에 아이템 정보 저장? 서버에 저장? 장단점 - 서버에 저장시 프로모션, 밸런스 조절 등이 용이 - Item을 클라이언트에 저장하는 것도 방법이나, 전체적 인 CloudBread 활용을 위해 itemList 테이블에 저장을 강 력 추천 - CloudBread에서 Item = 플레이어의 소유물이기도 하고, 게이머의 돈 등을 지정도 가능해요. - Item테이블의 컨셉 = 상점의 목록 - “구매”라는 behavior를 통해 “MemberItem – 회원아이 템”으로 저장되는 로직 - CBComSelItemList1으로 1개 아이템 조회 - CBSelItemListAll로 전체 아이템 조회 - (추가/수정은 관리자 전용)
  • 58. 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 추가/수정 처리(트렌젝션 처리)
  • 59. Member GameInf oStageID MemberI D StageNa me StageSta tus Category Mission Stage 59 - 스테이지는 게임의 “플레이” 단위를 지칭 - 마찬가지로, 1:다의 관계를 가지고 있고, 스테이지별 보상, 최고점수, 기록 등을 보관에 용이합니다. - 부족한 컬럼들은 json 데이터로 활용 - CBSelMemberGameInfoStages으로 member의 stage 들을 조회 - CBComSelMemberGameInfoStages으로 1개 stage 정 보 조회 - CBComUdtMemberGameInfoStages으로 1개 stage 정 보 수정 - CBComInsMemberGameInfoStages으로 1개 stage 정 보 추가 - CBUdtMemberGameInfoStage으로 gameinfo와 stage 를 수정(트렌젝션)
  • 60. Member ItemPur chaseID Member ID ItemID 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를 철회 처리(자 동화/관리자페이지 처리)
  • 61. EventID Gategory ItemID ItemCoun t Title Event 61 - 이벤트 처리 입니다. - 이벤트는 관리자 페이지에서 추가되며 기본 duration 으로 조회 처리 - 이벤트는 로그인 후 또는 클라이언트 개발자가 아무때 나, 스테이지 클리어시 호출해 표시 가능 - 내가 참여할 수 있는 이벤트만 표시되고, 관리자 페이 지에서 만들때 duration을 이용해 조절 가능 - Device, OS 등으로 클라이언트에서 표시 여부 결정 가 능 - CBSelGameEvents로 회원이 참여 가능한 이벤트 조회 - 이벤트 추가 수정은 관리자 페이지에서 처리
  • 62. GameEvent MemberID EventID MemberID EventMember 62 - 이벤트멤버 - 한번 참여한 이벤트에 또 참여할 수 없도록 이벤트에 참여한 회원을 기록하는 테이블 - CBUdtGameEventMemberToItem으로 memberitem에 이벤트의 품목을 추가하고, eventmember에 이벤트 참 여를 기록(트렌젝션)
  • 63. CouponID Category ItemID ItemCount Status Coupon 63 - 쿠폰 - 쿠폰 정보를 저장하고, 대량 쿠폰 저장도 가능 - 관리자 페이지에서 쿠폰을 생성, 대량쿠폰도 생성 가 능(3월 26일 현재 쿼리 사용) - Group이나 카테고리 정보를 이용해 "예약 신청자 1 천명 쿠폰", "게임 카페 쿠폰 100개" 등으로 조회해 쿠폰 대리 전달 업체나 마케팅 업체에 excel 파일로 전 달 가능 - 쿠폰번호는 GUID로 생성됨 - CBCOMSelCoupon으로 쿠폰 존재 여부 체크
  • 64. CouponMe mberID CouponID MemberID CouponMember 64 - 쿠폰멤버 - 쿠폰 사용을 기록하는 테이블 - 쿠폰을 어떤 사용자가 사용했는지 여부가 기록 - CBUdtCouponMember로 memberitem에 추가, componmember에 추가해 쿠폰 사용 불가 처리(트렌 젝션) - CBUdtCouponMember을 활용해 gameinfo에 게이머 의 gameinfo 속성을 업데이트도 가능(Postman의 CBUdtCouponMembe-GAMEINFO 참조)
  • 65. GiftID ItemID ItemCount FromMem berID ToMemberI D Gift 65 - 선물 - 선물을 주는 사람과 받는 사람, 줄 item이 기록됨 - CBSelGiftItemToMe으로 나에게 온 선물들을 조회 - CBUdtMoveGift로 나에게 온 선물 1개를 memberitem 으로 이동(트렌젝션) - CBUdtSendGift로 선물함에 선물을 보냄, 내 memberitem을 삭제(트랜젝션) - CBComSelGiftDepository으로 1개의 gitf를 조회 - CBComUdtGiftDepository으로 gift를 수정
  • 66. 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로 사용자의 랭크 순위 를 조회 -
  • 67. 인증 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)와 별개로 처리됨 - 안전한 게임 통신을 위해 인증과 암호화 구성을 권장함
  • 68. 암호화 68 - Crypt 처리로 web.config의 설정을 이용해 AES256 암호화 처리 가능 - 클라이언트에서 암호화 구성을 수행해 CloudBread API를 호출 - 암호화되어 전달된 텍스트를 CloudBread가 복호화해 서버에 저장 - 암호화 설정시 자동 클라이언트에 암호화된 문자열 response - CloudBread-Encrypt-Text-Tool로 암호화 복호화를 개발시 테스트 가능 - Postman에 기본 설정된 예제(Encrypt로 시작)를 활용 가능 - DEMO 용도로, “cb2-crypt-demo” 서버 이용
  • 69. Socket 서버 69 - 실시간 통신 - Socket.io로 개발 - Android, iOS 등 다양한 SDK를 지원(유니티 포함) - 그룹 제공 - 클라이언트는 인증을 위해 CBSocketAuth API를 CloudBread 에 요청 - 토큰은 Redis 캐시에 저장됨 - 클라이언트는 토큰 정보를 Socket서버로 보냄 - Socket 서버가 CloudBread에 토큰 Validate 하고 실시간 통신 시작
  • 71. WEB APPS How to install CloudBread-Socket.IO Type
  • 74. WEB APPS Allow web-socket Connect to Redis How to install CloudBread-Socket.IO
  • 76. Front-End API 서버 Socket 서버 AdminWeb 서버
  • 78. 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
  • 79. 직접 다 클라우드에 만들자 한방에!
  • 81.  Your application code  Required resources Your infrastructure code
  • 82. Azure: Resources (IaaS, PaaS) You: Code (application, infrastructure)
  • 83. 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자 - 하나이상의 특수문자 필수
  • 84. ARM DEMO & Hands on 김정현 Demo 영상 : https://youtu.be/TvtXkRAymcg
  • 86. 인증 - 3rd party authentication
  • 87. Azure Mobile App 인증이란?  Azure 에서 제공하는 회원 아이디 관리, 회원 인증 관리 등의 편리한 기능
  • 88. 어떻게 회원 인증 처리를 할까? HTTP Rest Request 를 할 때마다 암호화된 Token 를 같이 보내자! CloudBread on Azure가 발급하는 Token 을 가지고 있을때만 대답하자! (Response) 컨셉 Request Header 에 올바른 Token을 넣었을 때 ”Hello” 정상적인 응답을 받음!
  • 89. 어떻게 회원 인증 처리를 할까? HTTP Rest Request 를 할 때마다 회원 ID (Token) 를 같이 보내자! CloudBread on Azure 가 발급하는 Token 을 가지고 있을때만 대답하자! (Response) 컨셉 Request Header 에 틀린 Token을 넣었을 때 ”[Error] ” 응답을 못 받음!
  • 90. 이렇게 편리한 Token 어떻게 받지? ID : LoveCloudBread PW : ************** 페이스북 계정 Google + 계정 Microsoft 계정 CloudBread(MS Azure) 각 사이트에서 발급한 토큰 자체 인증… 구현… ㅠㅠ 어차피 유저들이 안써…
  • 92. 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 유니티용 없음…
  • 95.  Settings -> Advanced  http://<your ID>.azurewebsites.net/login/facebook
  • 98. Facebook authentication in Unity Demo 홍윤석 Demo : https://youtu.be/3aWLD_V1jaI 영상 17분 부터 인증 코딩 시작
  • 100. CloudBread 배포 가이드 문서 : https://goo.gl/4LNGIw Demo : https://youtu.be/PqFB60g6TCc (2.Mobile app 연속배포 과정)
  • 101. 데이터베이스 연결 문자열 (connection String) 가이드 문서 : https://goo.gl/HMNJU8 Demo : https://youtu.be/WACxMpbGWYg (3.DB접근을 위한 키 가져오기)
  • 102. CloudBread DB 설치 Demo : https://youtu.be/yj_w4q84lag (4.DB 개체생성)
  • 103. CloudBread 설정 Demo : https://youtu.be/sqrFa2gn1zw (5.생성된DB에 app 접근하기)
  • 104. CloudBread Socket 배포/설정 Demo : https://youtu.be/woMIke_N9Rc (6.소켓 설치)
  • 105. CloudBread Scheduler 배포 Demo : https://youtu.be/aPjdAOb83qE (7.스케쥴러 서비스 연동)
  • 106. CloudBread adminweb 연속배포 Demo : https://youtu.be/SfFxsSxE3V4 (8.admin web 연속배포)
  • 107.
  • 109. Why need Socket.IO? To enable servers real-time communicate with clients
  • 110. WEB APPS How to install CloudBread-Socket.IO Needs Type
  • 111. WEB APPS How to install CloudBread-Socket.IO /tools/tasks/deploy.js Match your web app credentials
  • 112. CloudBread – 추상화 디자인 아키텍처 데이터 저장소 – SQL (암호화) 로그 데이터 저장소 – NoSQL (암호화) FE 모바일 응답 서버 #N 배치성 작업(일배치/시배치/월배치) 및 비실시간성 데이터 처리를 위한 큐(Queue) 저장소 중간 작업자 배치 작업 처리기 어뷰징 규칙 / 푸쉬알림 로그 라우팅 처리기 #N 작업 스케쥴러(Trigger) 데이터 출력 캐시 랭킹 서비스를 위한 캐시 관리자 페이지
  • 113. 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
  • 114. 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
  • 115. 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
  • 116. 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
  • 117. 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
  • 118. 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
  • 119. 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
  • 120. Azure App Service Build and scale great cloud apps Web Apps Mobile Apps Logic Apps API Apps
  • 121. App Service - one integrated offering Web Apps Web apps that scale with your business Mobile Apps Build Mobile apps for any device
  • 122. Develop apps with… .NET | Node.js | PHP | Python | Java
  • 123. 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
  • 125. 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
  • 127. 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
  • 128. 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
  • 129. 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
  • 131. 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
  • 132. 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
  • 134. 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
  • 140. Continuous Deployment for Web Apps Web App Production Slot Source Control / Code RepoWeb App Staging Slot Commits Agility through Continuous Deployment Auto-Swap Changes Hooks Git pull Developer
  • 141. GitHubVisual Studio Online Git BitBucketCodePlex DropBox FTP Choose your own adventure! Source Control for Web/API/Mobile Apps
  • 147.  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)
  • 148.