Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads.
게임서버의 무한확장, 유니티 개발자를 위한
오픈소스 게임서버 엔진
프로젝트
김대우
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, Transact...
CloudBread는
HTTP 기반 Stateless 게임 서버 엔진
&
프레임워크
게임서버 !=Cloud
• 클라우드는 다르다?
• IDC 센터에서 잘 동작했던 방식?
• Virtualization / Standard VM
• 클라우드는 싸다? - PAYG
• 기존의 운영 방식 != Cloud의 운영...
게임서버 Why? What?
• IAP 수익 모델
• Sustaining
• CS / 분쟁
• BaaS, KAKAO, 상용, OSS(?)
셀프 호스팅 vs IaaS vs PaaS
게임서버 : Cloud
• Cloud가 제공하는 개발자를 위한 (미친) 구성요소
• PaaS / DaaS 모델 최대 활용
• Stateless 환경
• 클라우드에서 검증된(or HA구성 가능한)
오픈소스
• 클라우드 인...
게임서버.NOW
• Game Studio / Publisher / 인디 개발자
• 결재 모듈만 / 회원모듈만 / 리더보드만
• Unity 개발하기도 바쁨
• CRUD(?)
• DB / 백업 / 고가용성 / 확장성 / 저...
게임서버.NOW
• Game Studio / Publisher / 인디 개발자
• 결재 모듈만 / 회원모듈만 / 리더보드만
• Unity 개발하기도 바쁨
• CRUD(?)
• DB / 백업 / 고가용성 / 확장성 / 저...
무슨빵?
우리 주말은 좀 쉬자 프로젝트 - CloudBread
- 앱 개발에 집중
- 파라미터에 맞춰 호출
- 예제 테스트 앱 제공
- REST 호출 함수 만들 필요 없음
- 앱의 코드는 바뀌지 않음
- IaaS보다 진화한 Pa...
프로젝트 링크
• 프로젝트 Github
• https://github.com/CloudBreadProject/CloudBread
• 프로젝트 페이스북
• https://www.facebook.com/groups/clou...
CloudBread – 추상화 디자인 아키텍처
데이터 저장소 – SQL
(암호화)
로그 데이터 저장소 – NoSQL
(암호화)
FE 모바일 응답 서버 #N
배치성 작업(일배치/시배치/월배치)
및 비실시간성 데이터 처리를...
DEMO
DEMO
DEMO
DEMO
DEMO
무슨 생각으로 만들었나?
사용자의 행동 “Behavior”
 사용자의 활동을 기록 (약 100여개)
 하다보니 기록이 “일반화“ – 예를 들면
 Github wiki 참조
Actor behavior Behavior Name
회원가입
로그인...
사용자의 행동 “Behavior”
 로그인 Behavior
사용자의 행동 “Behavior”
 Controller - Procedure
사용자의 행동 “Behavior”
 Stored procedure
사용자의 행동 “Behavior”
 아이템 목록(Actor의 소유물) – SelMemberItem
사용자의 행동 “Behavior”
 공지사항 조회 – SelNotice
 이벤트 조회 - SelGameEvents
뭔가 쫌 "없어" 보이는
CB 게임서버 DEMO
클라이언트 디바이스와 CB 게임서버의
통신
클라이언트와 FE 서버는 어떻게 연애를?
 HTTP로 호출
 클라이언트에 라이브러리 참조 하면 “훨씬” 더 쉬움
비동기 호출
함수만 call 하면 됨
Microsoft가 OSS로 제공하는(iOS, Android,
...
사용자의 행동 Behavior
 실제 예를 들면
로그인ID중복체크 : SelLoginIDDupeCheck
- ID 정보를 서버로 전달하면 서버는 중복ID인지 아닌지를 응답
 요청
{
memberID = “member...
사용자의 행동 Behavior
 회원가입 : InsRegMember
- 회원 가입 정보 전달
 {
memberID = “member1”, email
=“abc@email.com”, name=“코난”, …
}
 응답...
사용자의 행동 Behavior
 이벤트 조회: SelGameEvents
{
memberID = “member1”
}
 응답
{
EventID =“eventID1”, EventName=“크리스탈1”, 기간=…
Even...
클라이언트 테스트 앱 – Android
클라이언트 테스트 앱 – win8
InvokeApiAsync (API명, json데이터)
Unity는?
클라이언트 테스트 앱 – Unity3D
Bitrave – Unity 플러그인 형태로 개발
https://github.com/bitrave/azure-mobile-services-for-unity3d
http://www....
CloudBread 클라이언트
DEMO
관리자 페이지
 CRUD
 개발 속도
 그룹별 권한관리(Admin / Operator /
Reader)
 MVC 모델 그대로~(MVC를 아신다면…)
관리자 페이지
 CRUD
 개발 속도
 그룹별 권한관리(Admin / Operator /
Reader)
 MVC 모델 그대로~(MVC를 아신다면…)
테이블 설명
 Members : 회원 정보
 MemberGameInfoes : 회원 게임정보 (1:1)
 AdminMembers : 관리자 정보
 MemberItemPurchases : 회원 구매 테이블 (1:N...
테이블 설명 - Github
 현재 Excel 파일 (죄송)
 곧, Github wiki에 올라갈 예정
CloudBread 관리자
페이지
DEMO
JSON에 대하여
 개발자 – 기획자
 Format
 빠른 기획 to the 게임
데이터 저장 유연성
 Schema DB vs Non Schema – NoSQL 상호보완적
 sCol1~sCol10 컬럼은 여분의 컬럼
 기획한 게임의 Property가 1:1로 매칭되지 않아도 걱정 말자
 Pro...
데이터 저장 유연성
 Schema DB vs Non Schema – NoSQL 상호보완적
 sCol1~sCol10 컬럼은 여분의 컬럼
 기획한 게임의 Property가 1:1로 매칭되지 않아도 걱정 말자
 Pro...
데이터 암호화
 무엇을 암호화 할 것인가?
String or Value
 Password 암호화 SHA512
 데이터 암호화 AES256
데이터 암호화
 무엇을 암호화 할 것인가?
String or Value
 Password 암호화 SHA512
 데이터 암호화 AES256
웹서버와 DB서버 / 저장소 로깅 처리
 모바일 서비스에 특화
 배포된 앱만 접근 인증
 SSL 기본 제공
 친숙한 MVC 모델 (View가 없죠.)
 API Controller – DB (저장프로시저) 루틴
...
스케쥴 작업
 통계 작업 – DAU, 매출현황 등
 클라우드의 여러가지 스케쥴링 작업 방식
- 가상머신 + 쿼츠(Quartz Enterprise Scheduler) / 비추천
- 스케쥴러 + Queue + Worke...
차기 계획
• 문서화 작업 마무리(OTL)
• Schedule Task (배치)
• Push 처리
• …
Cloud Scalability
• 개발 / 테스트 서버를 IaaS 쓰면 그대로 올라
간다는데요(?)
너 집에 아직 안갔니(?)
• 먼저, 서비스의 Limit을 명확하게 알자
• 코드로 충분한 테스트를 수행
• PaaS...
프로젝트 참여
• 프로젝트 Github
• https://github.com/CloudBreadProject/CloudBread
• 프로젝트 페이스북
• https://www.facebook.com/groups/clou...
Appendix – 배포 절차
Github CloudBread Project Wiki와 같음
개발 환경 구성
 프로젝트 다운로드
https://github.com/CloudBreadProject/CloudBread
 압축을 풀고 Visual Studio 솔루션 파일 실행
 만약, Windows 8에서 실행...
개발 환경 구성
 프로젝트 로드 완료 화면
개발 환경 구성
 클라우드 서비스 설정 - (1) 저장소(Storage) 생성
1) https://manage.windowsazure.com 접속
2) 좌하단 “새로만들기” – “데이터 서비스” – “저장소” – “빨...
개발 환경 구성
 .
개발 환경 구성
 데이터를 저장할 DB생성
BACPAC으로 생성된 DB를 Azure의 Blob에 올려두고 이 파일을 Import해
SQL Database 생성
 Azure Storage Explorer 툴 다운로드,...
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 Azure Storage Explorer 실행
1) Add Acoount 클릭
2) Storage Account Name에 위의 “저장소 이름” 입력
3) Storage Account Key에 위의 ...
개발 환경 구성
 .
개발 환경 구성
 Azure Storage Explorer 접속 후
1) New – Blob Container 선택
2) “cloudbreadblob” 생성
3) 생성 후 cloudbreadblob에서 “upload”...
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 업로드한 BACPAC 파일로 DB생성
1) Azure 관리자 포털 접속 : https://manage.windowsazure.com
2) 좌하단 “새로만들기” – “데이터서비스” – “SQL 데이터베...
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 프론트엔드 서버를 위한 Azure Mobile Service 생성
Azure 관리자 포털에서 좌하단 “새로 만들기” – “계산” – “모바일 서비스” –
“만들기”
1) URL 입력
2) 데이터베이스...
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 관리자 페이지를 위한 Azure Website 생성
Azure 관리자 포털에서 좌하단 “새로 만들기” – “계산” – “웹앱” – “빨리
만들기”
1) URL 입력
2) 앱 서비스 계획 “일본 서부”...
개발 환경 구성
 .
개발 환경 구성
 Visual Studio에서 배포 수행 – web.config 파일 수정
1) Visual Studio의 CloudBread 프로젝트의 web.config 파일을 열고
2) <ConnectionStr...
개발 환경 구성
 Visual Studio에서 배포 수행 – DB서버/DB명/id/pwd
“연결 문자열”에 대해 설정 경험이 있다면 바로
관리자 포털에서 “SQL 데이터베이스” 선택 – “대시보드”탭 – “연결 문자열...
개발 환경 구성
 Visual Studio에서 배포 수행 – 저장소 계정이름 / 저장소키
관리자 포털 – “저장소” – 생성한 저장소 선택 – 하단 “엑세스 키 관리” 에서
“저장소 계정 이름”과 “기본 엑세스 키”를...
개발 환경 구성
 Visual Studio에서 프론트 엔드 – CloudBread 프로젝트 배포 수행
1) Visual Studio 솔루션 익스플로러에서 “CloudBread” 프로젝트 마우스
우클릭 – “게시(Pub...
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 Visual Studio에서 프론트 엔드 – CloudBread 프로젝트 배포 테스트
1) 배포가 완료되면 CloudBread 테스트 가능. API 웹사이트이며
CloudBread가 제공하는 API를...
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 .
개발 환경 구성
 Visual Studio에서 프론트 엔드 – CloudBreadAdminWeb 프로젝트 배포
1) 관리자 페이지 배포 과정이고 CloudBread 프로젝트 배포와 유사함
2) CloudBreadAdm...
개발 환경 구성
 1) Visual Studio 솔루션 익스플로러에서 “CloudBreadAdminWeb”
프로젝트 마우스 우클릭 – “게시(Publish)” 클릭
2) “게시 대상 선택” 에서 “Microsoft A...
개발 환경 구성
 1) 게시가 완료되면 로그인 페이지가 열리고 기본 테스트 계정으로 입력된
CBAdmin / P@ssw0rd
로 로그인
2) 로그인이 완료되면 상단 메뉴를 통해 CloudBread 전체 데이터에 대한
...
개발 환경 구성
 .
개발 환경 구성
 .
로컬 개발 환경 구성
 서버 개발자이고 로컬에 개발환경이 필요할 경우
 로컬이나 사내망에 SQL서버를 설치해 개발에 사용할 경우 web.config
파일의 연결 문자열을 (local) 등으로 수정해 사용해 로컬에서 ...
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
Upcoming SlideShare
Loading in …5
×

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

6,669 views

Published on

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/

Published in: Mobile
  • Be the first to comment

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

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

куда вложить деньги чтобы заработать

www.kapli.kiev.ua/

×