SlideShare a Scribd company logo
1 of 98
게임서버의 무한확장, 유니티 개발자를 위한
오픈소스 게임서버 엔진
프로젝트
김대우
DAEWOO.KIM@LIVE.COM
About
• https://www.linkedin.com/profile/view?id=185670127
• SQLER.com 운영자
• Microsoft 근무
• 개발자 및 플랫폼 총괄 부서
// 게임 서버
• Web 앱
• 하이브리드 앱
• Dedicated 서버, Socket 서버, P2P 서버
• Stateless 서버, Restful 서버, Web API 서버
• SQL, NoSQL, Transactional Data, Log Data
CloudBread는
HTTP 기반 Stateless 게임 서버 엔진
&
프레임워크
게임서버 !=Cloud
• 클라우드는 다르다?
• IDC 센터에서 잘 동작했던 방식?
• Virtualization / Standard VM
• 클라우드는 싸다? - PAYG
• 기존의 운영 방식 != Cloud의 운영 방식
• Instance High Availability 필수
• 클라우드의 무한한 리소스 활용(?) - 설계가
다르다
게임서버 Why? What?
• IAP 수익 모델
• Sustaining
• CS / 분쟁
• BaaS, KAKAO, 상용, OSS(?)
셀프 호스팅 vs IaaS vs PaaS
게임서버 : Cloud
• Cloud가 제공하는 개발자를 위한 (미친) 구성요소
• PaaS / DaaS 모델 최대 활용
• Stateless 환경
• 클라우드에서 검증된(or HA구성 가능한)
오픈소스
• 클라우드 인프라는 무한하지만 우리의
아키텍처는 유한하다. Limit을 알고 쓰자
게임서버.NOW
• Game Studio / Publisher / 인디 개발자
• 결재 모듈만 / 회원모듈만 / 리더보드만
• Unity 개발하기도 바쁨
• CRUD(?)
• DB / 백업 / 고가용성 / 확장성 / 저장프로시저 /
인덱스
게임서버.NOW
• Game Studio / Publisher / 인디 개발자
• 결재 모듈만 / 회원모듈만 / 리더보드만
• Unity 개발하기도 바쁨
• CRUD(?)
• DB / 백업 / 고가용성 / 확장성 / 저장프로시저 /
인덱스
무슨빵?
우리 주말은 좀 쉬자 프로젝트 - CloudBread
- 앱 개발에 집중
- 파라미터에 맞춰 호출
- 예제 테스트 앱 제공
- REST 호출 함수 만들 필요 없음
- 앱의 코드는 바뀌지 않음
- IaaS보다 진화한 PaaS
클라우드
- Scale Up – Out 선택은 자유
- 서비스 구조에 맞는 기능 선택
- 보안 구조 / 데이터 암호화 선택
가능
- GM 관리자 도구 제공
- 기본 배치(분/시/일) 제공
- 무료 기술 교육 제공(헤카톤/캠프)
(대부분 이미 다 만들어진) 무료 오픈소스(MIT) 프로젝트
모바일 게임과 앱에 최적화된 게임 서버 엔진
프로젝트 링크
• 프로젝트 Github
• https://github.com/CloudBreadProject/CloudBread
• 프로젝트 페이스북
• https://www.facebook.com/groups/cloudBreadProje
ct/
CloudBread – 추상화 디자인 아키텍처
데이터 저장소 – SQL
(암호화)
로그 데이터 저장소 – NoSQL
(암호화)
FE 모바일 응답 서버 #N
배치성 작업(일배치/시배치/월배치)
및 비실시간성 데이터 처리를 위한
큐(Queue) 저장소
중간 작업자
배치 작업 처리기
어뷰징 규칙 / 푸쉬알림
로그 라우팅 처리기 #N
작업 스케쥴러(Trigger)
데이터 출력 캐시
랭킹 서비스를 위한 캐시
관리자 페이지
DEMO
DEMO
DEMO
DEMO
DEMO
무슨 생각으로 만들었나?
사용자의 행동 “Behavior”
 사용자의 활동을 기록 (약 100여개)
 하다보니 기록이 “일반화“ – 예를 들면
 Github wiki 참조
Actor behavior Behavior Name
회원가입
로그인Id 중복 체크 SelLoginIDDupeCheck
회원가입 InsRegMember
익명 회원 가입 InsAnonymousRegMember
메일 주소로 메일 전송 - 회원 가입 확인(메일 주소 체크) 등 SelSendEmailToMember
Email 주소를 통한 접속 여부 체크 (내 메일 주소로 온 링크 눌러야 회원가입
완료) 웹페이지 인터렉션 필요) - Mobile Service의 인증제어가 포함되지
않은 standard Web Api
인풋이 id/pwd가 아니라 다른 정보(id/pwd 묶어서 한 파라미터로 보내면
서버에서 decypt해 받아 id/pwd로 SP에서 조회해 처리
UdtConfirmedEmailAddress
로그인 후 사용자 정보 조회 SelLoginInfo
로그인 후 Members 에 기록 update(최근로그인일시 등 members 테이블
정보)
UdtLoginInfo
로그아웃 or 종료 + 최근 로그아웃 일시 저장 UdtLogOut
회원 정보 수정 UdtMemberinfo
로그인 암호 분실로 비밀번호 초기화 UdtMemberPwdReset
로그인 후 공지사항 조회 SelNotices
이벤트 조회 SelGameEvents
이벤트의 아이템 받고 받음을 기록 UdtGameEventMemberToItem
쿠폰조회 SelCoupons
쿠폰등록 UdtCouponMember
사용자의 행동 “Behavior”
 로그인 Behavior
사용자의 행동 “Behavior”
 Controller - Procedure
사용자의 행동 “Behavior”
 Stored procedure
사용자의 행동 “Behavior”
 아이템 목록(Actor의 소유물) – SelMemberItem
사용자의 행동 “Behavior”
 공지사항 조회 – SelNotice
 이벤트 조회 - SelGameEvents
뭔가 쫌 "없어" 보이는
CB 게임서버 DEMO
클라이언트 디바이스와 CB 게임서버의
통신
클라이언트와 FE 서버는 어떻게 연애를?
 HTTP로 호출
 클라이언트에 라이브러리 참조 하면 “훨씬” 더 쉬움
비동기 호출
함수만 call 하면 됨
Microsoft가 OSS로 제공하는(iOS, Android,
WinPhone …) 전용 라이브러리
 서버 호출 함수
Invoke()
사용자의 행동 Behavior
 실제 예를 들면
로그인ID중복체크 : SelLoginIDDupeCheck
- ID 정보를 서버로 전달하면 서버는 중복ID인지 아닌지를 응답
 요청
{
memberID = “member1”
}
 응답
0 또는 1
사용자의 행동 Behavior
 회원가입 : InsRegMember
- 회원 가입 정보 전달
 {
memberID = “member1”, email
=“abc@email.com”, name=“코난”, …
}
 응답
2 – (영향을 받은 row의 숫자)
사용자의 행동 Behavior
 이벤트 조회: SelGameEvents
{
memberID = “member1”
}
 응답
{
EventID =“eventID1”, EventName=“크리스탈1”, 기간=…
EventID =“eventID2”, EventName=“좋은템1”, 기간=…
EventID =“eventID13, EventName=“보너스아이템”, 기간=…
}
클라이언트 테스트 앱 – Android
클라이언트 테스트 앱 – win8
InvokeApiAsync (API명, json데이터)
Unity는?
클라이언트 테스트 앱 – Unity3D
Bitrave – Unity 플러그인 형태로 개발
https://github.com/bitrave/azure-mobile-services-for-unity3d
http://www.deadlyfingers.net/azure/unity3d-leaderboard-demo-
using-bitrave-azure-plugin/
CloudBread 클라이언트
DEMO
관리자 페이지
 CRUD
 개발 속도
 그룹별 권한관리(Admin / Operator /
Reader)
 MVC 모델 그대로~(MVC를 아신다면…)
관리자 페이지
 CRUD
 개발 속도
 그룹별 권한관리(Admin / Operator /
Reader)
 MVC 모델 그대로~(MVC를 아신다면…)
테이블 설명
 Members : 회원 정보
 MemberGameInfoes : 회원 게임정보 (1:1)
 AdminMembers : 관리자 정보
 MemberItemPurchases : 회원 구매 테이블 (1:N)
 ItemList : 아이템 – 사용자에게 소속될 수 있는 개체 리스트
 MemberItem : 회원-아이템 (1:N)
 MemberGameInfoStages : 회원-스테이지(1:N)
 GiftDepositories : 선물보관
 Notice : 공지사항
 GameEvents : 이벤트
 GameEventMember : 이벤트에 참여한 멤버
 Coupon : 쿠폰
 CouponMember : 쿠폰을 사용한 멤버
 MemberAccountBlockLog : 계정 사용 정지 기록 테이블
 ServerInfo : 서버정보
테이블 설명 - Github
 현재 Excel 파일 (죄송)
 곧, Github wiki에 올라갈 예정
CloudBread 관리자
페이지
DEMO
JSON에 대하여
 개발자 – 기획자
 Format
 빠른 기획 to the 게임
데이터 저장 유연성
 Schema DB vs Non Schema – NoSQL 상호보완적
 sCol1~sCol10 컬럼은 여분의 컬럼
 기획한 게임의 Property가 1:1로 매칭되지 않아도 걱정 말자
 Property를 입력할 컬럼이 부족할 경우 sCol을 활용한다.
- 여러 값을 하나의 컬럼에 저장
- JSON 데이터를 저장도 추천
- NVARCHAR MAX
- Search에 이용될 수 있거나 긴 Property 값은 sCol 저장 하지
않는다.
데이터 저장 유연성
 Schema DB vs Non Schema – NoSQL 상호보완적
 sCol1~sCol10 컬럼은 여분의 컬럼
 기획한 게임의 Property가 1:1로 매칭되지 않아도 걱정 말자
 Property를 입력할 컬럼이 부족할 경우 sCol을 활용한다.
- 여러 값을 하나의 컬럼에 저장
- JSON 데이터를 저장도 추천
- NVARCHAR MAX
- Search에 이용될 수 있거나 긴 Property 값은 sCol 저장 하지
않는다.
데이터 암호화
 무엇을 암호화 할 것인가?
String or Value
 Password 암호화 SHA512
 데이터 암호화 AES256
데이터 암호화
 무엇을 암호화 할 것인가?
String or Value
 Password 암호화 SHA512
 데이터 암호화 AES256
웹서버와 DB서버 / 저장소 로깅 처리
 모바일 서비스에 특화
 배포된 앱만 접근 인증
 SSL 기본 제공
 친숙한 MVC 모델 (View가 없죠.)
 API Controller – DB (저장프로시저) 루틴
 API Controller – Storage (로그데이터 – 저장소) 루틴
 쓰기 속도 향상 방안
스케쥴 작업
 통계 작업 – DAU, 매출현황 등
 클라우드의 여러가지 스케쥴링 작업 방식
- 가상머신 + 쿼츠(Quartz Enterprise Scheduler) / 비추천
- 스케쥴러 + Queue + Worker Role / 추천
- Azure Web App(or Mobile Service) + Web job / 추천
 CloudBread는 Worker Role 방식
차기 계획
• 문서화 작업 마무리(OTL)
• Schedule Task (배치)
• Push 처리
• …
Cloud Scalability
• 개발 / 테스트 서버를 IaaS 쓰면 그대로 올라
간다는데요(?)
너 집에 아직 안갔니(?)
• 먼저, 서비스의 Limit을 명확하게 알자
• 코드로 충분한 테스트를 수행
• PaaS + Scale out 이 최선의 답안
• 우리보다 똑똑한 친구들이 월급 받으면서 만든 클라우드
최적화 기능들을 적재 적소에서 쓰자
프로젝트 참여
• 프로젝트 Github
• https://github.com/CloudBreadProject/CloudBread
• 프로젝트 페이스북
• https://www.facebook.com/groups/cloudBreadProje
ct/
Appendix – 배포 절차
Github CloudBread Project Wiki와 같음
개발 환경 구성
 프로젝트 다운로드
https://github.com/CloudBreadProject/CloudBread
 압축을 풀고 Visual Studio 솔루션 파일 실행
 만약, Windows 8에서 실행가능하다는 메세지가 뜰 경우
Windows 8 스토어앱이 테스트 프로젝트로 포함되어 있기 때문
해당 프로젝트를 로드하지 않고 실행해도 OK
개발 환경 구성
 프로젝트 로드 완료 화면
개발 환경 구성
 클라우드 서비스 설정 - (1) 저장소(Storage) 생성
1) https://manage.windowsazure.com 접속
2) 좌하단 “새로만들기” – “데이터 서비스” – “저장소” – “빨리만들기”
3) URL에 “저장소” 이름 생성
4) 위치 / 선호도 그룹에 “일본 서부”(또는 원하는 지역) 선택
5) 복제 – “로컬 중복” 선택 (참고링크)
저장소 계정 생성은 보통 1분 이내 완료됨
개발 환경 구성
 .
개발 환경 구성
 데이터를 저장할 DB생성
BACPAC으로 생성된 DB를 Azure의 Blob에 올려두고 이 파일을 Import해
SQL Database 생성
 Azure Storage Explorer 툴 다운로드, 설치 – Azure의 저장소를 UI로 관리
가능한 도구 - http://azurestorageexplorer.codeplex.com/
 https://manage.windowsazure.com 접속해 저장소 이름과 엑세스 키 확인
1) 저장소이름 – 목록에서 조금 전 생성한 저장소 선택 – 상단에
“저장소이름”
2) 저장소 엑세스키 – 맨 아래 “엑세스키 관리” 클릭
3) “기본 엑세스키” 가 저장소 엑세스키
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 Azure Storage Explorer 실행
1) Add Acoount 클릭
2) Storage Account Name에 위의 “저장소 이름” 입력
3) Storage Account Key에 위의 “기본 엑세스키” 입력
4) Test Access 수행하고 성공하면 “Save”
개발 환경 구성
 .
개발 환경 구성
 Azure Storage Explorer 접속 후
1) New – Blob Container 선택
2) “cloudbreadblob” 생성
3) 생성 후 cloudbreadblob에서 “upload” 클릭
4) 다운로드 받은 프로젝트 – tools 폴더의 BACPAC 파일 선택 후 업로드
(CB0330_withTestData.bacpac)
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 업로드한 BACPAC 파일로 DB생성
1) Azure 관리자 포털 접속 : https://manage.windowsazure.com
2) 좌하단 “새로만들기” – “데이터서비스” – “SQL 데이터베이스” –
“가져오기”
3) BACPAC URL에서 폴더 클릭 – 저장소 선택 – BACPAC 파일 선택 후
열기 클릭
4) 이름 – “CloudBreadDB” 입력
5) 서비스 계층 – 가장 싼 “Basic” 선택 (추후 아무때나 Scale Up 가능)
6) 서버 – “새 SQL 데이터베이스 서버” 선택(만약 기존 사용 서버가 있다면
사용도 가능)
7) 서버 로그인 ID / PWD 넣고 지역은 “일본 서부”(또는 원하는 지역) 선택
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 프론트엔드 서버를 위한 Azure Mobile Service 생성
Azure 관리자 포털에서 좌하단 “새로 만들기” – “계산” – “모바일 서비스” –
“만들기”
1) URL 입력
2) 데이터베이스는 “기존 SQL 데이터베이스 사용” 선택
3) 지역 “일본 서부”
4) 백 엔드 – “.NET” 선택 – 다음 클릭
5) 데이터베이스 선택 – 조금 전 BACPAC을 업로드해 새로 생성한 서버
선택
6) 생성한 데이터베이스 서버 로그인 ID / PWD 입력
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 관리자 페이지를 위한 Azure Website 생성
Azure 관리자 포털에서 좌하단 “새로 만들기” – “계산” – “웹앱” – “빨리
만들기”
1) URL 입력
2) 앱 서비스 계획 “일본 서부” 선택(저의 캡처 화면과 약간 다를 수
있습니다.)
개발 환경 구성
 .
개발 환경 구성
 Visual Studio에서 배포 수행 – web.config 파일 수정
1) Visual Studio의 CloudBread 프로젝트의 web.config 파일을 열고
2) <ConnectionStrings> 요소의 항목들을 수정
DB서버주소 DB명
유저아이디 패스워드
저장소계정이름 저장
소키
개발 환경 구성
 Visual Studio에서 배포 수행 – DB서버/DB명/id/pwd
“연결 문자열”에 대해 설정 경험이 있다면 바로
관리자 포털에서 “SQL 데이터베이스” 선택 – “대시보드”탭 – “연결 문자열
표시”를 복사해 web.config 파일에 복사
1) DB서버 주소 – 관리자 포털 확인
2) 관리자 포털에서 “SQL 데이터베이스” 선택
3) 목록들 중 생성한 데이터베이스 클릭
4) 하단에 “서버” 부분에 서버 주소 또는 “대시보드” 부분에 “서버 이름”
항목에서 서버 주소 확인 가능
5) DB명은 “CloudBreadDB”로 설정(다른 이름일 경우 포털의 SQL
데이터베이스에서 확인해 설정
6) id / pwd는 관리자 포털에서 “SQL 데이터베이스” 선택 – “대시보드”탭 –
“연결 문자열 표시”를 보면 id를 볼 수 있고 비밀번호는 입력한 비밀번호
입력
개발 환경 구성
 Visual Studio에서 배포 수행 – 저장소 계정이름 / 저장소키
관리자 포털 – “저장소” – 생성한 저장소 선택 – 하단 “엑세스 키 관리” 에서
“저장소 계정 이름”과 “기본 엑세스 키”를 web.config 파일에 복사해 이용
 수정된 web.config 저장
개발 환경 구성
 Visual Studio에서 프론트 엔드 – CloudBread 프로젝트 배포 수행
1) Visual Studio 솔루션 익스플로러에서 “CloudBread” 프로젝트 마우스
우클릭 – “게시(Publish)” 클릭
2) “게시 대상 선택” 에서 “Microsoft Azure Mobile Service” 선택
3) Visual Studio에서 Microsoft ID로 로그인 하면, 조금 전 생성한 Azure
Mobile Service 리스트에서 선택 가능
4) 자동으로 게시를 위한 프로필 정보를 가져옴 “다음” 클릭
5) Database 연결 문자열 설정 화면 나옴 – 다음 클릭
참고로, Azure는 개발시의 연결 문자열과 배포시 연결 문자열 처리를
위해 web.config의 연결 문자열을 이렇게 배포시 오버라이드 할 수 있음.
배포 후에도 Azure 관리자 포털 – 해당 서비스의 “구성” 탭에서
연결문자열을 오버라이드도 가능. 현재는 web.config 파일을 배포 환경에
맞춰 설정한 상태이기 때문에 따로 수정하지 않고 통과.
6) 게시(Publish) 클릭 후 게시 수행
7) 게시가 완료되면 브라우저가 열리고 자동으로 프론트엔드 사이트 열림
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 Visual Studio에서 프론트 엔드 – CloudBread 프로젝트 배포 테스트
1) 배포가 완료되면 CloudBread 테스트 가능. API 웹사이트이며
CloudBread가 제공하는 API를 브라우저에서 호출 테스트 가능
2) 왼쪽 아래 “try it out” 수행
3) 프러덕션 환경이기 때문에 “응용프로그램 키”가 있어야 접근 가능 –
인증창이 뜨고 인증창의 비밀번호 부분에 Azure Mobile service의
“응용프로그램 키”를 복사해 넣으면 통과됨. 실제 모바일 디바이스에서는
클라이언트의 앱이나 게임에 배포 되어야 함(예제 응용프로그램 참조)
4) Azure 관리자 포털 – “모바일 서비스” – 생성한 모바일 서비스 선택 후
하단 “키 관리” 버튼을 눌러 “응용프로그램 키” 복사
5) CloudBread가 제공하는 API 리스트가 나오고 “CBSelGameEvents”
선택 후 상단 “try it out” 하고 “Send”를 누르면 Json 메세지를 보내고
리턴값을 받음. 현재 테스트를 위한 기본 데이터가 포함되어 있어서
작동하는 것임.
정상적으로 데이터가 보이면 CloudBread 프로젝트 배포 완료
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 Visual Studio에서 프론트 엔드 – CloudBreadAdminWeb 프로젝트 배포
1) 관리자 페이지 배포 과정이고 CloudBread 프로젝트 배포와 유사함
2) CloudBreadAdminWeb 프로젝트 루트의 “web.config” 파일을 열고 연결
문자열 편집 필요
3) 총 세 부분이고
개발 환경 구성
 1) Visual Studio 솔루션 익스플로러에서 “CloudBreadAdminWeb”
프로젝트 마우스 우클릭 – “게시(Publish)” 클릭
2) “게시 대상 선택” 에서 “Microsoft Azure Website” 선택
3) Visual Studio에서 Microsoft ID로 로그인 하면, 조금 전 생성한 Azure
Websites 리스트에서 선택 가능
4) 자동으로 게시를 위한 프로필 정보를 가져옴 “다음” 클릭
5) Database 연결 문자열 설정 화면 나옴 – 다음 클릭
참고로, Azure는 개발시의 연결 문자열과 배포시 연결 문자열 처리를
위해 web.config의 연결 문자열을 이렇게 배포시 오버라이드 할 수 있음.
배포 후에도 Azure 관리자 포털 – 해당 서비스의 “구성” 탭에서
연결문자열을 오버라이드도 가능. 현재는 web.config 파일을 배포 환경에
맞춰 설정한 상태이기 때문에 따로 수정하지 않고 통과.
6) 게시(Publish) 클릭 후 게시 수행
7) 게시가 완료되면 브라우저가 열리고 자동으로 프론트엔드 사이트 열림
개발 환경 구성
 1) 게시가 완료되면 로그인 페이지가 열리고 기본 테스트 계정으로 입력된
CBAdmin / P@ssw0rd
로 로그인
2) 로그인이 완료되면 상단 메뉴를 통해 CloudBread 전체 데이터에 대한
조회,삽입,수정,삭제 과정이 가능
개발 환경 구성
 .
개발 환경 구성
 .
로컬 개발 환경 구성
 서버 개발자이고 로컬에 개발환경이 필요할 경우
 로컬이나 사내망에 SQL서버를 설치해 개발에 사용할 경우 web.config
파일의 연결 문자열을 (local) 등으로 수정해 사용해 로컬에서 작업 가능
 SQL서버가 설치되어 있을 경우 BACPAC 파일 가져오기를 수행

More Related Content

What's hot

KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음nexusz99
 
왜 레진코믹스는 구글앱엔진을 선택했나
왜 레진코믹스는 구글앱엔진을 선택했나왜 레진코믹스는 구글앱엔진을 선택했나
왜 레진코믹스는 구글앱엔진을 선택했나소리 강
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표NAVER D2
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT윤석 홍
 
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기Juhong Park
 
[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab
[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab
[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLabAmazon Web Services Korea
 
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로Seok-ju Yun
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Youngtaek Oh
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기NAVER D2
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님NAVER D2
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hostingiFunFactory Inc.
 

What's hot (20)

KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음
 
왜 레진코믹스는 구글앱엔진을 선택했나
왜 레진코믹스는 구글앱엔진을 선택했나왜 레진코믹스는 구글앱엔진을 선택했나
왜 레진코믹스는 구글앱엔진을 선택했나
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT
 
Chef 소개
Chef 소개Chef 소개
Chef 소개
 
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
[Line Developer Day 2014] 라인 글로벌 게임 서버 개발하기
 
[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab
[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab
[Gaming on AWS] 모바일 게임을 위한 서버 플랫폼 서비스 Hive5 - BytecodeLab
 
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로Amazon web service를 활용한 모바일 게임 서버 개발   퍼즐 주주의 사례를 중심으로
Amazon web service를 활용한 모바일 게임 서버 개발 퍼즐 주주의 사례를 중심으로
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 

Similar to 모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트

성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
AWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAlexLee226686
 
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 2020Jinwoong Kim
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...Amazon Web Services Korea
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트Dong-Jin Park
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena DollyJi-Woong Choi
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...Amazon Web Services Korea
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Jeongkyu Shin
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview민태 김
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기Amazon Web Services Korea
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 

Similar to 모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트 (20)

성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
AWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdf
 
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
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
Amazed by aws 2nd session
Amazed by aws 2nd sessionAmazed by aws 2nd session
Amazed by aws 2nd session
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
 
모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
2015 oce garuda
2015 oce garuda2015 oce garuda
2015 oce garuda
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 

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 BusinessDae 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 businessDae Kim
 
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇마이크로소프트 봇 프레임워크로 만드는 인공지능 봇
마이크로소프트 봇 프레임워크로 만드는 인공지능 봇Dae Kim
 
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포
마이크로소프트 앱 플랫폼을 이용한 어플리케이션 개발과 배포Dae Kim
 
오픈소스 프로젝트, 이렇게 클라우드로 시작하자
오픈소스 프로젝트, 이렇게 클라우드로 시작하자오픈소스 프로젝트, 이렇게 클라우드로 시작하자
오픈소스 프로젝트, 이렇게 클라우드로 시작하자Dae Kim
 
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBreadDae 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 AzureDae 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 클라우드
 

모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트

  • 1. 게임서버의 무한확장, 유니티 개발자를 위한 오픈소스 게임서버 엔진 프로젝트 김대우 DAEWOO.KIM@LIVE.COM
  • 2. About • https://www.linkedin.com/profile/view?id=185670127 • SQLER.com 운영자 • Microsoft 근무 • 개발자 및 플랫폼 총괄 부서
  • 3.
  • 4. // 게임 서버 • Web 앱 • 하이브리드 앱 • Dedicated 서버, Socket 서버, P2P 서버 • Stateless 서버, Restful 서버, Web API 서버 • SQL, NoSQL, Transactional Data, Log Data
  • 5. CloudBread는 HTTP 기반 Stateless 게임 서버 엔진 & 프레임워크
  • 6. 게임서버 !=Cloud • 클라우드는 다르다? • IDC 센터에서 잘 동작했던 방식? • Virtualization / Standard VM • 클라우드는 싸다? - PAYG • 기존의 운영 방식 != Cloud의 운영 방식 • Instance High Availability 필수 • 클라우드의 무한한 리소스 활용(?) - 설계가 다르다
  • 7. 게임서버 Why? What? • IAP 수익 모델 • Sustaining • CS / 분쟁 • BaaS, KAKAO, 상용, OSS(?)
  • 8. 셀프 호스팅 vs IaaS vs PaaS
  • 9. 게임서버 : Cloud • Cloud가 제공하는 개발자를 위한 (미친) 구성요소 • PaaS / DaaS 모델 최대 활용 • Stateless 환경 • 클라우드에서 검증된(or HA구성 가능한) 오픈소스 • 클라우드 인프라는 무한하지만 우리의 아키텍처는 유한하다. Limit을 알고 쓰자
  • 10. 게임서버.NOW • Game Studio / Publisher / 인디 개발자 • 결재 모듈만 / 회원모듈만 / 리더보드만 • Unity 개발하기도 바쁨 • CRUD(?) • DB / 백업 / 고가용성 / 확장성 / 저장프로시저 / 인덱스
  • 11. 게임서버.NOW • Game Studio / Publisher / 인디 개발자 • 결재 모듈만 / 회원모듈만 / 리더보드만 • Unity 개발하기도 바쁨 • CRUD(?) • DB / 백업 / 고가용성 / 확장성 / 저장프로시저 / 인덱스
  • 13. 우리 주말은 좀 쉬자 프로젝트 - CloudBread - 앱 개발에 집중 - 파라미터에 맞춰 호출 - 예제 테스트 앱 제공 - REST 호출 함수 만들 필요 없음 - 앱의 코드는 바뀌지 않음 - IaaS보다 진화한 PaaS 클라우드 - Scale Up – Out 선택은 자유 - 서비스 구조에 맞는 기능 선택 - 보안 구조 / 데이터 암호화 선택 가능 - GM 관리자 도구 제공 - 기본 배치(분/시/일) 제공 - 무료 기술 교육 제공(헤카톤/캠프) (대부분 이미 다 만들어진) 무료 오픈소스(MIT) 프로젝트 모바일 게임과 앱에 최적화된 게임 서버 엔진
  • 14. 프로젝트 링크 • 프로젝트 Github • https://github.com/CloudBreadProject/CloudBread • 프로젝트 페이스북 • https://www.facebook.com/groups/cloudBreadProje ct/
  • 15. CloudBread – 추상화 디자인 아키텍처 데이터 저장소 – SQL (암호화) 로그 데이터 저장소 – NoSQL (암호화) FE 모바일 응답 서버 #N 배치성 작업(일배치/시배치/월배치) 및 비실시간성 데이터 처리를 위한 큐(Queue) 저장소 중간 작업자 배치 작업 처리기 어뷰징 규칙 / 푸쉬알림 로그 라우팅 처리기 #N 작업 스케쥴러(Trigger) 데이터 출력 캐시 랭킹 서비스를 위한 캐시 관리자 페이지
  • 16. DEMO
  • 17. DEMO
  • 18. DEMO
  • 19. DEMO
  • 20. DEMO
  • 22. 사용자의 행동 “Behavior”  사용자의 활동을 기록 (약 100여개)  하다보니 기록이 “일반화“ – 예를 들면  Github wiki 참조 Actor behavior Behavior Name 회원가입 로그인Id 중복 체크 SelLoginIDDupeCheck 회원가입 InsRegMember 익명 회원 가입 InsAnonymousRegMember 메일 주소로 메일 전송 - 회원 가입 확인(메일 주소 체크) 등 SelSendEmailToMember Email 주소를 통한 접속 여부 체크 (내 메일 주소로 온 링크 눌러야 회원가입 완료) 웹페이지 인터렉션 필요) - Mobile Service의 인증제어가 포함되지 않은 standard Web Api 인풋이 id/pwd가 아니라 다른 정보(id/pwd 묶어서 한 파라미터로 보내면 서버에서 decypt해 받아 id/pwd로 SP에서 조회해 처리 UdtConfirmedEmailAddress 로그인 후 사용자 정보 조회 SelLoginInfo 로그인 후 Members 에 기록 update(최근로그인일시 등 members 테이블 정보) UdtLoginInfo 로그아웃 or 종료 + 최근 로그아웃 일시 저장 UdtLogOut 회원 정보 수정 UdtMemberinfo 로그인 암호 분실로 비밀번호 초기화 UdtMemberPwdReset 로그인 후 공지사항 조회 SelNotices 이벤트 조회 SelGameEvents 이벤트의 아이템 받고 받음을 기록 UdtGameEventMemberToItem 쿠폰조회 SelCoupons 쿠폰등록 UdtCouponMember
  • 24. 사용자의 행동 “Behavior”  Controller - Procedure
  • 26. 사용자의 행동 “Behavior”  아이템 목록(Actor의 소유물) – SelMemberItem
  • 27. 사용자의 행동 “Behavior”  공지사항 조회 – SelNotice  이벤트 조회 - SelGameEvents
  • 28. 뭔가 쫌 "없어" 보이는 CB 게임서버 DEMO
  • 29. 클라이언트 디바이스와 CB 게임서버의 통신
  • 30. 클라이언트와 FE 서버는 어떻게 연애를?  HTTP로 호출  클라이언트에 라이브러리 참조 하면 “훨씬” 더 쉬움 비동기 호출 함수만 call 하면 됨 Microsoft가 OSS로 제공하는(iOS, Android, WinPhone …) 전용 라이브러리  서버 호출 함수 Invoke()
  • 31. 사용자의 행동 Behavior  실제 예를 들면 로그인ID중복체크 : SelLoginIDDupeCheck - ID 정보를 서버로 전달하면 서버는 중복ID인지 아닌지를 응답  요청 { memberID = “member1” }  응답 0 또는 1
  • 32. 사용자의 행동 Behavior  회원가입 : InsRegMember - 회원 가입 정보 전달  { memberID = “member1”, email =“abc@email.com”, name=“코난”, … }  응답 2 – (영향을 받은 row의 숫자)
  • 33. 사용자의 행동 Behavior  이벤트 조회: SelGameEvents { memberID = “member1” }  응답 { EventID =“eventID1”, EventName=“크리스탈1”, 기간=… EventID =“eventID2”, EventName=“좋은템1”, 기간=… EventID =“eventID13, EventName=“보너스아이템”, 기간=… }
  • 38. 클라이언트 테스트 앱 – Unity3D Bitrave – Unity 플러그인 형태로 개발 https://github.com/bitrave/azure-mobile-services-for-unity3d http://www.deadlyfingers.net/azure/unity3d-leaderboard-demo- using-bitrave-azure-plugin/
  • 40. 관리자 페이지  CRUD  개발 속도  그룹별 권한관리(Admin / Operator / Reader)  MVC 모델 그대로~(MVC를 아신다면…)
  • 41. 관리자 페이지  CRUD  개발 속도  그룹별 권한관리(Admin / Operator / Reader)  MVC 모델 그대로~(MVC를 아신다면…)
  • 42. 테이블 설명  Members : 회원 정보  MemberGameInfoes : 회원 게임정보 (1:1)  AdminMembers : 관리자 정보  MemberItemPurchases : 회원 구매 테이블 (1:N)  ItemList : 아이템 – 사용자에게 소속될 수 있는 개체 리스트  MemberItem : 회원-아이템 (1:N)  MemberGameInfoStages : 회원-스테이지(1:N)  GiftDepositories : 선물보관  Notice : 공지사항  GameEvents : 이벤트  GameEventMember : 이벤트에 참여한 멤버  Coupon : 쿠폰  CouponMember : 쿠폰을 사용한 멤버  MemberAccountBlockLog : 계정 사용 정지 기록 테이블  ServerInfo : 서버정보
  • 43. 테이블 설명 - Github  현재 Excel 파일 (죄송)  곧, Github wiki에 올라갈 예정
  • 45. JSON에 대하여  개발자 – 기획자  Format  빠른 기획 to the 게임
  • 46. 데이터 저장 유연성  Schema DB vs Non Schema – NoSQL 상호보완적  sCol1~sCol10 컬럼은 여분의 컬럼  기획한 게임의 Property가 1:1로 매칭되지 않아도 걱정 말자  Property를 입력할 컬럼이 부족할 경우 sCol을 활용한다. - 여러 값을 하나의 컬럼에 저장 - JSON 데이터를 저장도 추천 - NVARCHAR MAX - Search에 이용될 수 있거나 긴 Property 값은 sCol 저장 하지 않는다.
  • 47. 데이터 저장 유연성  Schema DB vs Non Schema – NoSQL 상호보완적  sCol1~sCol10 컬럼은 여분의 컬럼  기획한 게임의 Property가 1:1로 매칭되지 않아도 걱정 말자  Property를 입력할 컬럼이 부족할 경우 sCol을 활용한다. - 여러 값을 하나의 컬럼에 저장 - JSON 데이터를 저장도 추천 - NVARCHAR MAX - Search에 이용될 수 있거나 긴 Property 값은 sCol 저장 하지 않는다.
  • 48. 데이터 암호화  무엇을 암호화 할 것인가? String or Value  Password 암호화 SHA512  데이터 암호화 AES256
  • 49. 데이터 암호화  무엇을 암호화 할 것인가? String or Value  Password 암호화 SHA512  데이터 암호화 AES256
  • 50. 웹서버와 DB서버 / 저장소 로깅 처리  모바일 서비스에 특화  배포된 앱만 접근 인증  SSL 기본 제공  친숙한 MVC 모델 (View가 없죠.)  API Controller – DB (저장프로시저) 루틴  API Controller – Storage (로그데이터 – 저장소) 루틴  쓰기 속도 향상 방안
  • 51. 스케쥴 작업  통계 작업 – DAU, 매출현황 등  클라우드의 여러가지 스케쥴링 작업 방식 - 가상머신 + 쿼츠(Quartz Enterprise Scheduler) / 비추천 - 스케쥴러 + Queue + Worker Role / 추천 - Azure Web App(or Mobile Service) + Web job / 추천  CloudBread는 Worker Role 방식
  • 52. 차기 계획 • 문서화 작업 마무리(OTL) • Schedule Task (배치) • Push 처리 • …
  • 53. Cloud Scalability • 개발 / 테스트 서버를 IaaS 쓰면 그대로 올라 간다는데요(?) 너 집에 아직 안갔니(?) • 먼저, 서비스의 Limit을 명확하게 알자 • 코드로 충분한 테스트를 수행 • PaaS + Scale out 이 최선의 답안 • 우리보다 똑똑한 친구들이 월급 받으면서 만든 클라우드 최적화 기능들을 적재 적소에서 쓰자
  • 54. 프로젝트 참여 • 프로젝트 Github • https://github.com/CloudBreadProject/CloudBread • 프로젝트 페이스북 • https://www.facebook.com/groups/cloudBreadProje ct/
  • 55.
  • 56. Appendix – 배포 절차 Github CloudBread Project Wiki와 같음
  • 57. 개발 환경 구성  프로젝트 다운로드 https://github.com/CloudBreadProject/CloudBread  압축을 풀고 Visual Studio 솔루션 파일 실행  만약, Windows 8에서 실행가능하다는 메세지가 뜰 경우 Windows 8 스토어앱이 테스트 프로젝트로 포함되어 있기 때문 해당 프로젝트를 로드하지 않고 실행해도 OK
  • 58. 개발 환경 구성  프로젝트 로드 완료 화면
  • 59. 개발 환경 구성  클라우드 서비스 설정 - (1) 저장소(Storage) 생성 1) https://manage.windowsazure.com 접속 2) 좌하단 “새로만들기” – “데이터 서비스” – “저장소” – “빨리만들기” 3) URL에 “저장소” 이름 생성 4) 위치 / 선호도 그룹에 “일본 서부”(또는 원하는 지역) 선택 5) 복제 – “로컬 중복” 선택 (참고링크) 저장소 계정 생성은 보통 1분 이내 완료됨
  • 61. 개발 환경 구성  데이터를 저장할 DB생성 BACPAC으로 생성된 DB를 Azure의 Blob에 올려두고 이 파일을 Import해 SQL Database 생성  Azure Storage Explorer 툴 다운로드, 설치 – Azure의 저장소를 UI로 관리 가능한 도구 - http://azurestorageexplorer.codeplex.com/  https://manage.windowsazure.com 접속해 저장소 이름과 엑세스 키 확인 1) 저장소이름 – 목록에서 조금 전 생성한 저장소 선택 – 상단에 “저장소이름” 2) 저장소 엑세스키 – 맨 아래 “엑세스키 관리” 클릭 3) “기본 엑세스키” 가 저장소 엑세스키
  • 64. 개발 환경 구성  Azure Storage Explorer 실행 1) Add Acoount 클릭 2) Storage Account Name에 위의 “저장소 이름” 입력 3) Storage Account Key에 위의 “기본 엑세스키” 입력 4) Test Access 수행하고 성공하면 “Save”
  • 66. 개발 환경 구성  Azure Storage Explorer 접속 후 1) New – Blob Container 선택 2) “cloudbreadblob” 생성 3) 생성 후 cloudbreadblob에서 “upload” 클릭 4) 다운로드 받은 프로젝트 – tools 폴더의 BACPAC 파일 선택 후 업로드 (CB0330_withTestData.bacpac)
  • 69. 개발 환경 구성  업로드한 BACPAC 파일로 DB생성 1) Azure 관리자 포털 접속 : https://manage.windowsazure.com 2) 좌하단 “새로만들기” – “데이터서비스” – “SQL 데이터베이스” – “가져오기” 3) BACPAC URL에서 폴더 클릭 – 저장소 선택 – BACPAC 파일 선택 후 열기 클릭 4) 이름 – “CloudBreadDB” 입력 5) 서비스 계층 – 가장 싼 “Basic” 선택 (추후 아무때나 Scale Up 가능) 6) 서버 – “새 SQL 데이터베이스 서버” 선택(만약 기존 사용 서버가 있다면 사용도 가능) 7) 서버 로그인 ID / PWD 넣고 지역은 “일본 서부”(또는 원하는 지역) 선택
  • 73. 개발 환경 구성  프론트엔드 서버를 위한 Azure Mobile Service 생성 Azure 관리자 포털에서 좌하단 “새로 만들기” – “계산” – “모바일 서비스” – “만들기” 1) URL 입력 2) 데이터베이스는 “기존 SQL 데이터베이스 사용” 선택 3) 지역 “일본 서부” 4) 백 엔드 – “.NET” 선택 – 다음 클릭 5) 데이터베이스 선택 – 조금 전 BACPAC을 업로드해 새로 생성한 서버 선택 6) 생성한 데이터베이스 서버 로그인 ID / PWD 입력
  • 77. 개발 환경 구성  관리자 페이지를 위한 Azure Website 생성 Azure 관리자 포털에서 좌하단 “새로 만들기” – “계산” – “웹앱” – “빨리 만들기” 1) URL 입력 2) 앱 서비스 계획 “일본 서부” 선택(저의 캡처 화면과 약간 다를 수 있습니다.)
  • 79. 개발 환경 구성  Visual Studio에서 배포 수행 – web.config 파일 수정 1) Visual Studio의 CloudBread 프로젝트의 web.config 파일을 열고 2) <ConnectionStrings> 요소의 항목들을 수정 DB서버주소 DB명 유저아이디 패스워드 저장소계정이름 저장 소키
  • 80. 개발 환경 구성  Visual Studio에서 배포 수행 – DB서버/DB명/id/pwd “연결 문자열”에 대해 설정 경험이 있다면 바로 관리자 포털에서 “SQL 데이터베이스” 선택 – “대시보드”탭 – “연결 문자열 표시”를 복사해 web.config 파일에 복사 1) DB서버 주소 – 관리자 포털 확인 2) 관리자 포털에서 “SQL 데이터베이스” 선택 3) 목록들 중 생성한 데이터베이스 클릭 4) 하단에 “서버” 부분에 서버 주소 또는 “대시보드” 부분에 “서버 이름” 항목에서 서버 주소 확인 가능 5) DB명은 “CloudBreadDB”로 설정(다른 이름일 경우 포털의 SQL 데이터베이스에서 확인해 설정 6) id / pwd는 관리자 포털에서 “SQL 데이터베이스” 선택 – “대시보드”탭 – “연결 문자열 표시”를 보면 id를 볼 수 있고 비밀번호는 입력한 비밀번호 입력
  • 81. 개발 환경 구성  Visual Studio에서 배포 수행 – 저장소 계정이름 / 저장소키 관리자 포털 – “저장소” – 생성한 저장소 선택 – 하단 “엑세스 키 관리” 에서 “저장소 계정 이름”과 “기본 엑세스 키”를 web.config 파일에 복사해 이용  수정된 web.config 저장
  • 82. 개발 환경 구성  Visual Studio에서 프론트 엔드 – CloudBread 프로젝트 배포 수행 1) Visual Studio 솔루션 익스플로러에서 “CloudBread” 프로젝트 마우스 우클릭 – “게시(Publish)” 클릭 2) “게시 대상 선택” 에서 “Microsoft Azure Mobile Service” 선택 3) Visual Studio에서 Microsoft ID로 로그인 하면, 조금 전 생성한 Azure Mobile Service 리스트에서 선택 가능 4) 자동으로 게시를 위한 프로필 정보를 가져옴 “다음” 클릭 5) Database 연결 문자열 설정 화면 나옴 – 다음 클릭 참고로, Azure는 개발시의 연결 문자열과 배포시 연결 문자열 처리를 위해 web.config의 연결 문자열을 이렇게 배포시 오버라이드 할 수 있음. 배포 후에도 Azure 관리자 포털 – 해당 서비스의 “구성” 탭에서 연결문자열을 오버라이드도 가능. 현재는 web.config 파일을 배포 환경에 맞춰 설정한 상태이기 때문에 따로 수정하지 않고 통과. 6) 게시(Publish) 클릭 후 게시 수행 7) 게시가 완료되면 브라우저가 열리고 자동으로 프론트엔드 사이트 열림
  • 86. 개발 환경 구성  Visual Studio에서 프론트 엔드 – CloudBread 프로젝트 배포 테스트 1) 배포가 완료되면 CloudBread 테스트 가능. API 웹사이트이며 CloudBread가 제공하는 API를 브라우저에서 호출 테스트 가능 2) 왼쪽 아래 “try it out” 수행 3) 프러덕션 환경이기 때문에 “응용프로그램 키”가 있어야 접근 가능 – 인증창이 뜨고 인증창의 비밀번호 부분에 Azure Mobile service의 “응용프로그램 키”를 복사해 넣으면 통과됨. 실제 모바일 디바이스에서는 클라이언트의 앱이나 게임에 배포 되어야 함(예제 응용프로그램 참조) 4) Azure 관리자 포털 – “모바일 서비스” – 생성한 모바일 서비스 선택 후 하단 “키 관리” 버튼을 눌러 “응용프로그램 키” 복사 5) CloudBread가 제공하는 API 리스트가 나오고 “CBSelGameEvents” 선택 후 상단 “try it out” 하고 “Send”를 누르면 Json 메세지를 보내고 리턴값을 받음. 현재 테스트를 위한 기본 데이터가 포함되어 있어서 작동하는 것임. 정상적으로 데이터가 보이면 CloudBread 프로젝트 배포 완료
  • 93. 개발 환경 구성  Visual Studio에서 프론트 엔드 – CloudBreadAdminWeb 프로젝트 배포 1) 관리자 페이지 배포 과정이고 CloudBread 프로젝트 배포와 유사함 2) CloudBreadAdminWeb 프로젝트 루트의 “web.config” 파일을 열고 연결 문자열 편집 필요 3) 총 세 부분이고
  • 94. 개발 환경 구성  1) Visual Studio 솔루션 익스플로러에서 “CloudBreadAdminWeb” 프로젝트 마우스 우클릭 – “게시(Publish)” 클릭 2) “게시 대상 선택” 에서 “Microsoft Azure Website” 선택 3) Visual Studio에서 Microsoft ID로 로그인 하면, 조금 전 생성한 Azure Websites 리스트에서 선택 가능 4) 자동으로 게시를 위한 프로필 정보를 가져옴 “다음” 클릭 5) Database 연결 문자열 설정 화면 나옴 – 다음 클릭 참고로, Azure는 개발시의 연결 문자열과 배포시 연결 문자열 처리를 위해 web.config의 연결 문자열을 이렇게 배포시 오버라이드 할 수 있음. 배포 후에도 Azure 관리자 포털 – 해당 서비스의 “구성” 탭에서 연결문자열을 오버라이드도 가능. 현재는 web.config 파일을 배포 환경에 맞춰 설정한 상태이기 때문에 따로 수정하지 않고 통과. 6) 게시(Publish) 클릭 후 게시 수행 7) 게시가 완료되면 브라우저가 열리고 자동으로 프론트엔드 사이트 열림
  • 95. 개발 환경 구성  1) 게시가 완료되면 로그인 페이지가 열리고 기본 테스트 계정으로 입력된 CBAdmin / P@ssw0rd 로 로그인 2) 로그인이 완료되면 상단 메뉴를 통해 CloudBread 전체 데이터에 대한 조회,삽입,수정,삭제 과정이 가능
  • 98. 로컬 개발 환경 구성  서버 개발자이고 로컬에 개발환경이 필요할 경우  로컬이나 사내망에 SQL서버를 설치해 개발에 사용할 경우 web.config 파일의 연결 문자열을 (local) 등으로 수정해 사용해 로컬에서 작업 가능  SQL서버가 설치되어 있을 경우 BACPAC 파일 가져오기를 수행

Editor's Notes

  1. 적란운
  2. Github의 tools 폴더에 위치
  3. http://42base13.net/azure-mobile-services-to-make-leaderboard-for-unity-game/