CloudBread는 클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 이번 CloudBread 캠프는 Unity 개발자를 위한 CloudBread 캠프로 현장에서 제공되는 Unity 예제 게임을 이용해 실제 게임서버와 연동하는 과정을 직접 코딩하는 과정으로 진행됩니다. Unity와 클라우드 기반 게임서버를 연동하는 가장 손쉬운 방법을 CloudBread 캠프에서 확인하세요.
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
CloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
CloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성
게임 서비스 아키텍처에서 관계형 데이터베이스는 핵심 컴포넌트이며 또한 전체 서비스의 성능 병목 지점이 되곤 합니다. 이 세션에서는 AWS 상에서 게임 서비스를 구현할 때, 기존 물리환경에서의 DB 성능과 동일하거나 더 높은 성능을 얻을 수 있는 구성을 설명 드리며, MS SQL 구성의 성능 데모를 시연하고자 합니다.
Unite'17 Seoul 아이펀팩토리 발표자료
1. 강연주제: 클라이언트 개발자, 서버 개발 시작하기
2. 강연자: 박근환 TD
3. 강연소개: 이 세션은 주로 게임 클라이언트 개발자로 경력을 쌓아오던 개발자가 게임 서버 솔루션 회사에서 일하면서 알게된 사실들을 바탕으로, 클라이언트 개발자가 서버 개발을 시작하려면 필요한 것들이 무엇인지, 어떻게 시작해야 하는지에 대하여 이야기합니다.
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 세 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 모바일 게임 로그 데이터 분석 이야기
연사 : 엔터메이트 공신배 팀장
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...Amazon Web Services Korea
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석
이 세션에서는 AWS 상에서 게임 데이터를 분석해봅니다. Amazon DynamoDB, 로그 서버 등에서 발생한 데이터를 Amazon S3 에 저장하여 Data Lake 를 구축하고, 저장된 데이터의 스키마는 AWS Glue 를 통해 관리합니다. 이 후에 Amazon Athena 를 통해 쿼리해보고, Amazon SageMaker 를 이용해 빠르게 머신 러닝 모델을 만들어 학습시키고 배포해봅니다. 이를 통해 AWS 상에서 데이터를 수집하고, 분석을 위한 Data Lake 를 구축한 뒤 실제 머신 러닝을 통해 이상 유저를 판독하는 실습을 진행하게 됩니다.
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...Tae-Seong Park
웹애플리케이션의 동적인 컨텐츠에 대한 SEO 를 위하여 서버사이드렌더링을 next.js와 amplify, serverless framework를 활용하여 구축한 사례를 공유드리려고 합니다. 저의 구축 후기를 보시고 반면교사를 삼으시거나 영감을 얻으셨으면 좋겠습니다.
이 슬라이드는 Amplify 간단 소개와 백엔드 구축경험까지 포함한 내용을 담고 있습니다.
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성
게임 서비스 아키텍처에서 관계형 데이터베이스는 핵심 컴포넌트이며 또한 전체 서비스의 성능 병목 지점이 되곤 합니다. 이 세션에서는 AWS 상에서 게임 서비스를 구현할 때, 기존 물리환경에서의 DB 성능과 동일하거나 더 높은 성능을 얻을 수 있는 구성을 설명 드리며, MS SQL 구성의 성능 데모를 시연하고자 합니다.
Unite'17 Seoul 아이펀팩토리 발표자료
1. 강연주제: 클라이언트 개발자, 서버 개발 시작하기
2. 강연자: 박근환 TD
3. 강연소개: 이 세션은 주로 게임 클라이언트 개발자로 경력을 쌓아오던 개발자가 게임 서버 솔루션 회사에서 일하면서 알게된 사실들을 바탕으로, 클라이언트 개발자가 서버 개발을 시작하려면 필요한 것들이 무엇인지, 어떻게 시작해야 하는지에 대하여 이야기합니다.
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 세 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 모바일 게임 로그 데이터 분석 이야기
연사 : 엔터메이트 공신배 팀장
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석 Hands on Lab (안효빈 솔루션즈 ...Amazon Web Services Korea
게임 데이터 분석을 위한 Data Lake 구축과 Machine Learning 을 활용한 분석
이 세션에서는 AWS 상에서 게임 데이터를 분석해봅니다. Amazon DynamoDB, 로그 서버 등에서 발생한 데이터를 Amazon S3 에 저장하여 Data Lake 를 구축하고, 저장된 데이터의 스키마는 AWS Glue 를 통해 관리합니다. 이 후에 Amazon Athena 를 통해 쿼리해보고, Amazon SageMaker 를 이용해 빠르게 머신 러닝 모델을 만들어 학습시키고 배포해봅니다. 이를 통해 AWS 상에서 데이터를 수집하고, 분석을 위한 Data Lake 를 구축한 뒤 실제 머신 러닝을 통해 이상 유저를 판독하는 실습을 진행하게 됩니다.
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...Tae-Seong Park
웹애플리케이션의 동적인 컨텐츠에 대한 SEO 를 위하여 서버사이드렌더링을 next.js와 amplify, serverless framework를 활용하여 구축한 사례를 공유드리려고 합니다. 저의 구축 후기를 보시고 반면교사를 삼으시거나 영감을 얻으셨으면 좋겠습니다.
이 슬라이드는 Amplify 간단 소개와 백엔드 구축경험까지 포함한 내용을 담고 있습니다.
AWS 머신러닝 솔루션을 활용한 고객 응대 자동화 구축 사례 공유 - 이창명, CTO, 위메이드 플레이 ::: Games on AWS 2022Amazon Web Services Korea
현재 위메이드 플레이에서 운영 중인 다양한 게임들에서 사용자들의 많은 문의가 고객센터에 접수되고 있습니다. 데이터를 자세히 살펴보면 대부분의 고객 불만은 간단하게 처리가 가능한 문제들인데, 이런 이슈들이 많아지다 보니 정작 중요한 문제에 대한 고객 대응이 늦어지고 있었습니다. 이를 위해 AWS 머신러닝 서비스를 적극적으로 활용하여 고객 만족도를 향상시킨 과정들을 공유해드립니다.
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study
이 세션에서는 데브시스터즈의 Case Study를 통하여 Data Lake를 만들고 사용하는데 있어 요구 되는 사항들에 대해 공유합니다. 여러 목적에 맞는 데이터를 전달하기 위해 AWS 를 활용하여 Data Lake 를 구축하게된 계기와 실제 구축 작업을 하면서 경험하게 된 것들에 대해 말씀드리고자 합니다. 기존 인프라 구조 대비 효율성 및 비용적 측면을 소개해드리고, 빅데이터를 이용한 부서별 데이터 세분화를 진행할 때 어떠한 Architecture가 사용되었는지 소개드리고자 합니다.
AWS를 사용하는 게임 고객사를 대상으로 ‘Amazon GameLift 세션’ 을 준비했습니다.
GameLift는 클라우드에서 세션 기반 멀티플레이 게임 서버를 배포, 운영, 조정하는 데 사용되는 완전 관리형 서비스로, 본 행사에서는 Amazon GameLift를 이용한 세션형 1:1 게임 배포 실습을 진행합니다.
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기Dae Kim
이 발표자료는 SOSCON2016에서 발표한 자료이며 아래 내용을 포함하고 있습니다.
개발자와 머신러닝(?)
어디에 어떻게 사용해야 하나
머신러닝 데모
학습모델 / 예측모델
지도 학습 / 비지도 학습 / 분석 알고리즘
예측모델 생성 데모
예측 모델을 API로 노출 및 Python 등에서 사용
Presentation document for kaist CS492 class - 20161103 Session subject :
Machine Learning developer in "Business"
-People using ML in business (10 min)
-Machine Learning subsets including Deep Learning Toolkit CNTK and Tensorflow (20 min)
-Building predictive model & deploy in Azure Machine Learning (20 min)
-Q&A (10 min)
Cloud and Machine Learning in real world businessDae Kim
Presentation document for kaist CS443 class - 20161101
Session subject : Cloud and Machine Learning in real world business
Github repo short URL : https://aka.ms/cs443
Agenda
Essential – Global cloud service vender(Microsoft, AWS, Google) trend(10 min)
Machine Learning & Hadoop in real world business (30 min)
Cloud and Machine Learning solution architecture debrief with “code” (30 min)
Q&A (10 min)
Microsoft Bot fraemwork code for D.Camp - d.party presentation
이 자료는 d.party 발표를 위해 제작. http://www.dcamp.kr/event/apply/1500
10분 동안 만드는 진짜 Bot
Microsoft Bot Framework를 이용해
봇을 개발 / 게시 / 등록하고, 실제 메신져 어플리케이션에서 추가해 봇과 채팅하는 어플리케이션을 개발하는 것이 목표 + Azure Machine Learning을 이용해 예측 분석을 봇을 통해 수행
CloudBread는 클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 이번 CloudBread 캠프는 Unity 개발자를 위한 CloudBread 캠프로 현장에서 제공되는 Unity 예제 게임을 이용해 실제 게임서버와 연동하는 과정을 직접 코딩하는 과정으로 진행됩니다. Unity와 클라우드 기반 게임서버를 연동하는 가장 손쉬운 방법을 CloudBread 캠프에서 확인하세요.
Visual Studio를 이용해 오픈소스 소프트웨어를 활용하는 여러 방법과 Cloud에 배포하는 방법에 대해서 소개해 드립니다. 특히, Visual Studio에서 node.js를 이용하는 방법은 물론, Git, Github, Azure Storage와 연동 방안까지 소개해 드리도록 하겠습니다.
3. 무료 오픈소스 프로젝트 - CloudBread
- 앱 개발에 집중
- 파라미터에 맞춰 호출
- 예제 테스트 앱 제공
- REST 호출 함수 만들 필요 없음
- 앱의 코드는 바뀌지 않음
- IaaS보다 진화한 PaaS 클라우드
- Scale Up – Out 선택은 자유
- 서비스 구조에 맞는 기능 선택
- 보안 구조 / 데이터 암호화 선택 가능
- GM 관리자 도구 제공
- 기본 배치(DAU, HAU, DARPU) 제공
- 무료 기술 교육 제공(헤카톤/캠프)
(대부분 이미 다 만들어진) 무료 오픈소스(MIT) 프로젝트
모바일 게임과 앱에 최적화된 게임 서버 엔진
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로 회원이 참여 가능한 이벤트 조회
- 이벤트 추가 수정은 관리자 페이지에서 처리
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 하고 실시간 통신 시작
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자
- 하나이상의 특수문자 필수
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 유니티용 없음…
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
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
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
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)