Skip to content
YoonSeok Hong edited this page Aug 2, 2017 · 12 revisions

Last update : 2016-03-27

If you're looking for English version of this paper, visit CloudBread Developer guide link, please.

CloudBread Project 가이드

이 문서에서는 개발자를 위한 CloudBread 프로젝트 사용 절차를 소개해 드립니다. CloudBread 설치 관련 문서는 **CloudBread 설치 가이드**를 참고하세요.

오픈소스 프로젝트

CloudBread는 모바일 게임과 모바일 앱을 위한 대부분의 기능을 제공하는 무료 오픈소스(MIT 라이센스) 프로젝트

100여개의 Business Logic을 기본 제공

  • 모바일 게임 개발자는 앱 개발만 집중
  • CloudBread가 제공하는 API들을 파라미터만 맞춰 호출
  • 개발 및 테스트를 위한 Postman 컬렉션과 예제 테스트 앱 제공
  • Restful API를 호출하는 함수를 따로 만들 필요 없음

클라우드를 활용한 최소~최대 규모 백엔드 서버 구축

  • 클라우드 환경을 기본 아키텍처로 개발해 클라우드의 장점을 그대로 사용
  • 서버가 확장되어도 모바일 게임과 앱의 코드는 바뀌지 않음
  • 수직확장(Scale-up)과 수형확장(Scale-out) 선택은 자유
  • 게임의 성격에 맞는 서비스만 사용 가능(실시간 통신 기능 제외, 대량로그 처리 기능 제외 등)

보안, 관리 및 통계 정보 제공

  • 인증(Authentication)과 데이터 암호화(AES256)을 선택적 사용 가능
  • GM 관리자 도구 제공 (CloudBread-Admin-Web 프로젝트)
  • 기본 통계를 위한 배치(DAU, HAU, DARPU 등) 제공
  • 무료 기술 교육 제공(해카톤 및 캠프)

CloudBread 서버와 게임 클라이언트 통신

CloudBread는 API서버(Core)와 실시간 통신을 위한 Socket 서버를 선택해 사용 가능합니다. CloudBread와 게임 클라이언트와의 통신은 아래처럼 이루어집니다. 실시간 커뮤니케이션 부분은 뒤에서 더 설명해 드립니다.

  • HTTP 프로토콜
  • Restful API
  • JSON 형식

예를 들어, 이벤트 조회 API SelGameEvents HTTP Request 구조

{
    memberID = "member1"
}

SelGameEvents가 리턴하는 HTTP Response 구조

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

SelGameEvents와 같은 API를 CloudBread에서는 Behavior로 분류하고, 각 Behavior들을 일반화한 API를 제공합니다. 즉, API Game Logic = Behavior이고 Game Logic = API이기 때문에 API 기능을 추가하거나 변경할 경우 프레임워크를 통해 손쉽게 수정도 가능합니다.

CloudBread가 제공하는 Behavior 리스트 CloudBread는 2016년 3월 기준 109개의 Behavior를 지원하고 있습니다. 전체 Behavior 리스트를 보시려면 아래 링크를 참고하세요. CloudBread behavior list wiki page

CloudBread 데이터가 저장되는 데이터베이스 Behavior가 게이머의 Action이라면, Action을 기록할 Object가 Database 입니다. 예를 들어, 다음과 같은 데이터베이스의 테이블에 정보가 기록됩니다.

정보 데이터베이스 테이블
회원 Member
관리자 Admin
구매 Purchase
아이템 Item
멤버아이템 MemberItem
게임정보 GameInfo
스테이지 Stage
선물 Gift
공지사항 Notice
이벤트 Event
쿠폰 Coupon

CloudBread의 전체 데이터베이스 구조 및 테이블 상세 스키마 정보를 보시려면 아래 링크를 참고하세요. CloudBread database design


CloudBread DEMO 및 테스트

CloudBread는 클라이언트 게임 개발자의 편의를 위해 Demo 테스트를 위한 서버와 API를 제공합니다. API를 테스트 하기 위해서는 개발자 준비사항 문서에 포함된 Postman을 다운로드 후 설치합니다. Postman은 REST API를 개발하고 테스트할때 유용한 무료 도구 입니다.

  • Postman 다운로드 : http://www.getpostman.com/ 에서 다운로드 후 Mac용 또는 Windows Chrome용을 설치
  • CloudBread에서 API를 테스트 하기 위한 API목록인 Postman Collection을 다운로드(2016-03-26버전)
  • 다운로드 한 collection 파일을 Postman에서 "Import"를 누르고 다운로드 한 collection 파일을 import수행
  • 좌측 collection 탭에 CloudBread collection이 보이면 완료

이제 CloudBread에서 제공하는 API를 DEMO 서버에서 테스트 가능합니다.

  • Demo 서버 주소는 아무때나 변경될 수 있습니다.
  • 데이터가 주기적으로 초기화 됩니다.
  • 가장 작은 Cloud 단위로 서비스 중입니다. 테스트 목적으로 잠시만 사용 부탁 드립니다.

CloudBread API 테스트

Postman collection을 잘 설치했다면 API를 호출 가능합니다.

  • 공지사항 조회 - CBSelNotices API 호출로 공지사항 데이터를 조회 가능
  • 이벤트 목록 조회 - CBSelGameEvents API 호출로 현재 사용자가 참여 가능한 이벤트를 조회 가능
  • 도착한 선물 조회 - CBSelGiftItemToMe API 호출로 현재 사용자에게 도착한 선물을 조회 가능
  • 회원의 게임정보 조회 - CBComSelMemberGameInfoes API 호출로 현재 게이머의 전역정보 조회 가능
  • 회원의 랭크 조회 - GetMemberRankbyMeberID API 호출로 특정 회원의 랭크 정보 조회 가능
  • 특정 범위의 랭크 순위 조회 - GetRangeRankerInfo API 호출로 범위 내의 랭크 정보 조회 가능
  • 1등부터 X등까지 랭크 조회 - CBRank-GetTopXRanker API 호출로 1등부터 X등까지의 랭크 정보 조회 가능
  • 회원의 아이템 목록 조회 - CBSelMemberItems API 호출로 특정 회원이 소유한 아이템 목록 조회 가능
  • 구매(IAP) 조회 - CBComSelMemberItemPurchase API 호출로 특정 회원의 구매(IAP) 정보 조회

CloudBread는 2016년 3월 기준 109개의 Behavior를 지원하고 있습니다. 전체 Behavior 리스트를 보시려면 아래 링크를 참고하세요. CloudBread behavior list wiki page

Postman은 CloudBread 개발과 테스트를 위해 이용됩니다. CloudBread의 다양한 API를 게임에서 이용하기 위해서는 게임내 호출하는 예제가 필요합니다. 다음 챕터에서 관련 내용을 보실 수 있습니다.


Unity 개발자를 위한 CloudBread API 호출 Demo

국내외에서 게임 개발에 가장 많이 이용되는 미들웨어 게임 엔진인 Unity를 이용해 CloudBread API를 호출하는 방안을 소개해 드립니다.

Demo에서 이용되는 프로젝트는 CloudBread-Client-Unity 프로젝트이며, 다음 링크에서 보실 수 있습니다.


CloudBread 데이터베이스 구조, API 실행 과정 소개

이 챕터에서는 CloudBread의 DB 구조와 API를 통해 게임 사용자 유입부터 수행하는 기본 흐름을 소개합니다.

Member 작업

Member는 기본적으로 회원의 계정 정보를 제공합니다. 즉, 로그인 및 메일주소 등의 계정 관련 정보를 저장하고 기록합니다.

MemberID MemberPWD Email Name1 ...
aaa PWD [email protected] 닉네임a ...
bbb PWD [email protected] 닉네임b ...
  • CloudBread v2.0.x 부터는 기본 외부 인증(Facebook 인증, Google ID, Microsoft ID, 카카오 인증 등)을 이용합니다.
  • Memberid는 외부 인증 제공자가 만들어주는 회원의 고유 id를 기록합니다.
  • MemberPWD는 CloudBread v2.0.x 이상부터 사용하지 않습니다. 잠시 뒤, 인증처리에서 상세하게 소개합니다.
  • 인증 과정에서 권한 부여를 통해 email이나 nickname을 받거나, 사용자 입력을 통해 email, nickname을 받습니다.
  • Postman의 CBSelLoginIDDupeCheck API를 이용해 Email과 Name1의 중복을 검사합니다.
  • Email은 나중에 CS 및 사용자 식별 목적으로 필요합니다.
  • Name1은 “닉네임”으로 Rank - leader board 등에서 활용됩니다.
  • 넣을때는 InsRegMember API를 이용합니다.
  • InsRegMember는 내부적으로 Members와 Gameinfo에 동시에 입력하는 로직을 수행합니다.
  • Members = 계정, Gameinfo는 게이머의 속성 정보 저장에 사용
  • Gameinfo의 point는 "랭킹"에 이용되니 반드시 숫자만 사용
  • Name1의 닉네임과 gameinfo의 point가 랭킹으로 활용
  • CBCOMSelMember API로 조회 작업 수행
  • CBCOMUdtMember API로 수정 작업 수행

FAQ. 모든 테이블의 sCol 등은 뭐에 쓰이나?

  • 여분의 컬럼. 해당 값이 가져야할 속성을 저장할때 부족할 경우 sCol에 JSON 형태로 저장 가능. sCol 컬럼은 VARCHAR(MAX)로 대량 데이터 저장이 가능함.

GameInfo

MemberID Level Exp Point ...
aaa 10 10000 100 ...
bbb 20 20000 200 ...
  • GameInfo는 게이머의 전역(global) 속성 값들을 저장하고, 잠시 뒤 소개될 MemberItem과는 다름
  • 1:다의 관계로 아이템과 같은 소유물 저장은 MemberItem을 사용
  • "차차차" 같은 게임의 게이머가 소유하는 여러대의 자동차 + 자동차별로 등록된 속성(최고 속력, 차레벨 가속도…) 어떻게 저장 할하는게 좋을까?
  • Memberitem에 1개의 자동차 + cCol1~10에 아이템의 속성들을 저장
  • 여분의 컬럼이 부족할 경우 sCol에 json으로 저장 추천
  • 카테고리 컬럼을 활용해 식별자로 사용
  • 게이머의 속성으로 보이는 돈, 현금성 아이템 정보는 gameinfo에 저장할까요? 아니면 memberitem에 저장할까요?
  • 가능하면 memberitem을 추천. 리더보드에 쓰이는 랭킹정보나 게임 플레이어 전역 정보를 제외하면 Item 테이블에 올리고 MemberItem에 저장을 추천
  • Gameinfo의 point는 "랭킹"에 이용되니 숫자만 사용
  • Name1의 닉네임과 gameinfo의 point가 랭킹으로 활용
  • CBComSelMemberGameInfoes로 조회
  • CBComUdtMemberGameInfoes로 수정

ItemList

아이템 목록 테이블

ItemID ItemName Price Category ...
GUID 아이템1 100 소모성아이템 ...
GUID 아이템2 200 가상화폐 ...
  • 아이템은 상점의 판매 물품 + 게이머에게 소속된 가상화폐 등을 저장하는 테이블
  • 아이템 목록을 클라이언트에 저장할 경우와 아이템 목록을 서버에 저장할 경우 각각 장단점이 존재
  • 서버에 저장시 Abusing 이나 프로모션, 밸런스 조절 등이 용이하고 이후 구매 등에서 효율적으로 처리 가능
  • CloudBread가 제공하는 API와 데이터 저장소 활용을 위해 ItemList 테이블에 저장을 추천
  • CloudBread에서 Item = 플레이어의 소유물이기도 하고, 게이머의 가상화폐(돈) 등을 지정도 가능
  • 여러 MemberItem 관련 behavior를 통해 "MemberItem"에 "아이템"이 저장되는 패턴
  • CBSelItemListAll API로 전체 아이템 조회해 클라이언트 세션에 저장 후 이용
  • CBComSelItemList1 API로 1개 아이템 조회
  • 아이템 추가/수정은 관리자 전용 작업이고 유저모드에서는 사용 불가

MemberItems

게이머가 소유한 게임내 오브젝트들을 저장

MemberItemID MemberID ItemID ItemCount ItemStatus ...
GUID aaa ItemList테이블의 ItemID1 참조값 10 상태 ...
GUID aaa ItemList테이블의 ItemID2 참조값 5 상태 ...
GUID aaa ItemList테이블의 ItemID3 참조값 3 상태 ...
GUID bbb ItemList테이블의 ItemID1 참조값 2 상태 ...
GUID bbb ItemList테이블의 ItemID2 참조값 6 상태 ...
  • Member : MemberItem = 1:다 관계로 게이머의 소유물들을 저장하는 중요 테이블
  • "차차차" 같은 게임의 여러대의 자동차 + 자동차별로 등록된 속성(최고 속력, 차레벨 가속도…) 어떻게 저장?
  • Memberitem에 1개의 자동차 + cCol1~10에 저장
  • 컬럼이 부족할 경우 json으로 sCol에 저장 추천
  • 카테고리 컬럼을 활용해 식별자로 사용
  • 돈, 현금성 아이템 정보는 gameinfo에 저장할까요? 아니면 memberitem에 저장할까요?
  • 가능하면 memberitem을 쓰세요. 랭크나 플레이어 전역 정보를 제외하면 item에 올리고 memberitem에 저장을 추천
  • 속성을 저장할 부분이 부족할 경우 sCol 여분의 컬럼을 활용해 여러 정보를 추가 저장 가능
  • CBSelMemberItems으로 회원이 소유한 아이템들을 조회
  • CBComSelMemberItem으로 1개의 memberitem조회
  • CBComUdtMemberItem으로 1개의 memberitem 수정
  • CBComInsMemberItem으로 memberitem 추가
  • CBAddUseMemberItem으로 membergameinfo 수정+ memberitem 추가/수정 처리(트렌젝션 처리)

FAQ.

  • INSERT or UPDATE가 API에 존재하는 이유 현재 버전의 CloudBread에서는 UPSERT처리시 사용자의 inventory가 존재할 경우 UPDATE, 존재하지 않을 경우 INSERT로 나눠서 호출하는 구조를 제공합니다. CloudBread는 1:다 관계의 데이터베이스 모델을 사용합니다. UPSERT 로직을 이용해 처리도 가능하지만, 속성 값 암호화 모드를 이용할 경우 UPSERT등의 사용이 불가해 집니다. CloudBread v1 개발시 ASDB(Azure SQL Database)가 v11 버전으로 암호화를 기본 제공하지 않았고, ASDB에서 CLR 이용도 불가해 어플리케이션 차원(CloudBread Core)에서 암호화 후 ASDB에 저장하는 형식만 가능 했으나, 현재 ASDB v12부터는 TDE암호화를 지원해 암호화를 여러 패턴으로 적용 가능합니다. CloudBread v3에서는 테이블 스키마를 변경해 더 유연하고 안정적인 처리를 제공할 계획 중입니다.

Stage

게이머가 진행 중인 게임내 플레이 단위

MemberGameInfoStageID MemberID StageName StageStatus Category Mission ...
GUID aaa Stage1 클리어 그룹1 스테이지미션1 ...
GUID aaa Stage2 클리어 그룹2 스테이지미션2 ...
GUID aaa Stage3 진행중 그룹1 스테이지미션3 ...
GUID bbb Stage1 클리어 그룹1 스테이지미션1 ...
GUID bbb Stage2 진행중 그룹2 스테이지미션2 ...
  • 스테이지는 게임의 "플레이" 단위를 지칭
  • 마찬가지로, Member와 1:다의 관계를 가지고 있고, 스테이지별 보상, 최고점수, 기록 등을 보관에 용이
  • 부족한 컬럼들은 Json 데이터로 활용
  • CBSelMemberGameInfoStages으로 member의 stage들을 조회
  • CBComSelMemberGameInfoStages으로 1개 stage 정보 조회
  • CBComUdtMemberGameInfoStages으로 1개 stage 정보 수정
  • CBComInsMemberGameInfoStages으로 1개 stage 정보 추가
  • CBUdtMemberGameInfoStage으로 gameinfo와 stage를 수정(트렌젝션)

Purchase

게임내 구매(IAP)와 관련된 정보를 저장하는 테이블

MemberItemPurchaseID MemberID ItemID Quantity Price PGInfo ...
GUID aaa Item테이블 참조값 10 1000 IAP결재제공사 ...
GUID aaa Item테이블 참조값 1 5000 IAP결재제공사 ...
GUID aaa Item테이블 참조값 5 10000 IAP결재제공사 ...
GUID bbb Item테이블 참조값 20 20000 IAP결재제공사 ...
GUID bbb Item테이블 참조값 30 1000 IAP결재제공사 ...
  • IAP 으로 발생하는 구매 처리를 저장하는 테이블
  • Purchase는 구매 = 현금성 구매를 의미하고 결재가 포함된 정보를 저장합니다.
  • 일반 게임내 일반 Item이 Member의 MemberItem에 소유되는 경우와 다르게 IAP가 있는 경우만 이곳에 저장합니다.
  • 구매 = item의 구매를 의미하며 item은 memberitem에 저장합니다.(가상화폐도 포함하며 memberitem에 돈이나 현금성 아이템도 보관)
  • 구매는 모두 트렌젝션 처리가 이루어집니다.
  • CBAddMemberItemPurchase으로 memberitem에 item을 추가하고, gameinfo를 업데이트하고, purchase를 추가(트렌젝션 처리)
  • CBComSelMemberItemPurchase으로 1개의 purchase를 조회
  • CBComUdtMemberItemPurchase으로 1개의 purchase를 수정
  • CBComInsMemberItemPurchase로 1개의 purchase를 추가
  • CBUdtReturnItem으로 1개의 purchase를 철회 처리(자동화/관리자페이지 처리)

Event

게이머가 참여 가능한 이벤트들을 저장하는 테이블

EventID Category ItemID ItemCount Title ...
GUID 출석보상1 Item테이블 참조값 10 출석 보상 이벤트1 ...
GUID 출석보상2 Item테이블 참조값 1 출석 보상 이벤트2 ...
GUID 기간한정이벤트1 Item테이블 참조값 5 기간 한정 이벤트1 ...
GUID 특정디바이스사용자대상이벤트 Item테이블 참조값 30 갠역시 핸드폰 사용자 대상 이벤트 ...
  • 이벤트는 관리자 페이지에서 추가되며 기본 duration으로 기본 리스트 처리
  • 이벤트는 로그인 후 또는 클라이언트 개발자가 아무때나 아래 API를 호출해 표시 가능
  • 게이머가 참여할 수 있는 이벤트만 표시되고, 관리자 페이지에서 만들때 duration을 이용해 조절 가능
  • Device, OS 등의 값을 넣어, 클라이언트 게임 내에서 표시 여부 결정 가능
  • CBSelGameEvents로 회원이 참여 가능한 이벤트 조회
  • 이벤트 추가 수정은 관리자 페이지에서 처리

EventMember

이벤트에 참여한 Member를 기록하는 테이블

GameEventMemberID EventID MemberID ...
GUID Event테이블참조값 aaa ...
GUID Event테이블참조값 aaa ...
GUID Event테이블참조값 aaa ...
GUID Event테이블참조값 bbb ...
  • 한번 참여한 이벤트에 또 참여할 수 없도록 이벤트에 참여한 회원을 기록하는 테이블
  • CBUdtGameEventMemberToItem으로 MemberItem에 이벤트의 품목을 추가하고, EventMember에 이벤트 참여를 기록(트렌젝션)

Coupon

쿠폰 목록을 저장하는 테이블

CouponID Category ItemID ItemCount Status ...
GUID 예약설치보상쿠폰1 Item테이블 참조값 10 현재상태 ...
GUID 커뮤니티공개제공쿠폰 Item테이블 참조값 1 현재상태 ...
GUID 프린트쿠폰 Item테이블 참조값 5 현재상태 ...
GUID 이벤트대행업체전달쿠폰 Item테이블 참조값 30 현재상태 ...
  • 쿠폰 정보를 저장하고, 대량 쿠폰 저장도 가능
  • 관리자 페이지에서 쿠폰을 생성, 대량쿠폰도 생성 가능(3월 26일 현재 쿼리 사용)
  • 카테고리 정보를 이용해 "예약 신청자 1천명 쿠폰", "게임 카페 쿠폰 100개" 등으로 조회해 쿠폰 대리 전달 업체나 마케팅 업체에 excel 파일로 전달 가능
  • 쿠폰번호는 GUID로 생성됨
  • CBCOMSelCoupon으로 쿠폰 존재 여부 체크

CouponMember

쿠폰을 사용한 Member를 기록하는 테이블

CouponMemberID CouponID MemberID ...
GUID Coupon테이블참조값 aaa ...
GUID Coupon테이블참조값 aaa ...
GUID Coupon테이블참조값 aaa ...
GUID Coupon테이블참조값 bbb ...
  • 쿠폰을 사용한 회원을 기록하는 목적의 테이블
  • CBUdtCouponMember로 memberitem에 추가, componmember에 추가해 쿠폰 사용 불가 처리(트렌젝션)
  • CBUdtCouponMember을 활용해 gameinfo에 게이머의 gameinfo 속성을 업데이트도 가능(Postman의 CBUdtCouponMembe-GAMEINFO 참조)

Gift

선물을 주는사람과 받을 사람, 건네줄 Item이 기록됨

GiftID ItemID ItemCount FromMemberID ToMemberID ...
GUID Item테이블 참조값 10 aaa bbb ...
GUID Item테이블 참조값 5 aaa ccc ...
GUID Item테이블 참조값 1 bbb ddd ...
GUID Item테이블 참조값 2 ccc aaa ...
  • CBSelGiftItemToMe으로 게이머에게 온 선물들을 조회
  • CBUdtMoveGift로 나에게 온 선물 1개를 memberitem으로 이동(트렌젝션)
  • CBUdtSendGift로 선물함에 선물을 보냄, 내 memberitem을 삭제(트랜젝션)
  • CBComSelGiftDepository으로 1개의 gitf를 조회
  • CBComUdtGiftDepository으로 1개의 gift를 수정

Rank(Leader Board)

랭킹(Rank - Leader board) 처리

NickName Point Rank ...
닉네임a 100 3 ...
닉네임b 500 2 ...
닉네임c 900 1 ...
  • Rank는 DB가 아닌 메모리 기반 NoSQL DB인 Redis에 저장됨(기본설정)
  • CloudBread가 최초 실행되면서 DB의 nickname과 point를 읽어서 Redis에 저장해 전체 대상 SQL DB와 동기화
  • 동기화된 후 Rank 수정이 필요할 시 API로 rank 추가/수정
  • CBRank-SetMemberPoint로 rank 추가/수정
  • GetTopXRanker로 top x ranker 리스트 조회
  • GetRangeRankerInfo로 순위 범위의 member를 조회
  • GetMemberRankByID로 사용자의 랭크 순위를 조회

인증(Authentication)

  • Facebook, google id, Microsoft id, twitter id 등의 인증이 기본 가능하며, Kakao 인증 등을 확장 가능합니다.
  • 인증을 하면 API 요청시 포함되는 MemberID는 자동 sid로 치환됨
  • sid는 인증제공자(facebook 등)이 제공하는 회원의 고유값
  • DEMO 용도로 https://cb2-auth-demo.azurewebsites.net/ 서버에서 테스트 가능
  • sid는 서버에서만 저장, 조회에 처리되고 클라이언트로 sid가 내려오지 않음(x-zumo-auth 토큰만 주고받음)
  • CloudBread의 모든 API는 sid가 존재하면(서버에 인증 구성이 완료되면) 자동으로 클라이언트가 보내는 MemberID를 무시하고 sid로 치환시킴
  • 개발 단계에서는 memberid를 보내고 배포 단계에서 sid를 이용도 가능
  • 인증(Authentication)은 CloudBread의 암호화(Encryption)와 별개로 처리됨
  • 안전한 게임 통신을 위해 반드시 인증과 암호화 구성을 권장함
  • CloudBread 서버(Azure Mobile App - 모바일 앱)에 인증 서버 구성 방안
  • Facebook : https://goo.gl/d0ZeQT
  • Google ID : https://goo.gl/4oyM4S
  • Microsoft Account : https://goo.gl/Wvn2fe
  • Twitter : https://goo.gl/ZdR4qa
  • Active Directory(자체인증) : https://goo.gl/WD76Ch 위 링크의 인증 제공자를 통해 인증을 CloudBread 서버(Azure Mobile App - 모바일 앱)에 인증을 구성
  • Unity에서 인증을 이용하는 방법은 Unity 개발자 가이드 데모 참조 - Unity 코딩 Demo youtube
  • Postman을 이용해 인증 테스트가 필요한 경우에는 HTTP Header의 "x-zumo-auth"를 인증이 구성된 사이트에서 발급 받아야 합니다.
  • 이를 위해 Windows 개발 환경일 경우 **CloudBread-Dev-Authkey-Gen-win8.1 프로젝트**를 이용 가능하며,
  • 맥북 개발 환경일 경우 CloudBread-Dev-Authkey-Gen-Android 프로젝트를 이용해 Authkey를 발급받아 HTTP Header의 "x-zumo-auth"에 입력해 요청을 테스트 가능합니다.

암호화(Encryption)

  • Crypt 처리로 web.config의 설정을 이용해 AES256 암호화 처리 가능
    <!-- Encryption configuration. 암호화 설정-->
    <add key="CloudBreadCryptSetting" value="AES256"></add>
    <add key="CloudBreadCryptKey" value="1234567890123456"></add>
    <add key="CloudBreadCryptIV" value="1234567890123456"></add>
  • 클라이언트에서 암호화 구성을 수행해 CloudBread API를 호출
  • 암호화되어 전달된 텍스트를 CloudBread가 복호화해 서버에 저장
  • 암호화 설정시 자동 클라이언트에 암호화된 문자열 response
  • **CloudBread-Encrypt-Text-Tool**로 암호화 복호화를 개발시 문자열 테스트 가능
  • Postman에 기본 설정된 예제(Encrypt로 시작)를 활용 가능
  • DEMO 용도로, "https://cb2-crypt-demo.azurewebsites.net" 서버 이용 가능

Socket 서버

  • 게이머간 실시간 통신에 이용
  • Socket.io로 개발
  • Android, iOS 등 다양한 SDK를 지원(유니티 포함)
  • 그룹 제공
  • 클라이언트는 인증을 위해 CBSocketAuth API를 CloudBread 에 요청
  • 토큰은 Redis 캐시에 저장됨
  • 클라이언트는 토큰 정보를 Socket서버로 보냄
  • Socket 서버가 CloudBread에게 token을 Validate 하고 실시간 통신 시작
  • **CloudBread-Socket 프로젝트**와 CloudBread-Socket-React 프로젝트 참조

문서의 끝입니다.

참고링크 : CloudBread 설치 가이드 문서

Clone this wiki locally