2회 오픈소스 게임 서버 엔진 스터디 캠프 - cloudbread
TRANSCRIPT
CloudBread2회캠프
http://aka.ms/cbp
Welcome to CloudBread!
무료오픈소스프로젝트 - CloudBread
- 앱 개발에집중
- 파라미터에 맞춰호출
- 예제 테스트앱 제공
- REST 호출 함수만들 필요없음
- 앱의 코드는바뀌지 않음
- IaaS보다 진화한 PaaS 클라우드
- Scale Up – Out 선택은자유
- 서비스 구조에맞는 기능선택
- 보안 구조 / 데이터암호화 선택가능
- GM 관리자 도구제공
- 기본 배치(DAU, HAU, DARPU) 제공
- 무료 기술교육 제공(헤카톤/캠프)
(대부분이미다만들어진)무료오픈소스(MIT) 프로젝트모바일게임과앱에최적화된게임서버엔진
목표CloudBread 연동!!!
제가참좋아하는“국민게임”
게임데이터처리
공지사항 - Notice
이벤트 - Event
선물 - Gift
게임정보-GameInfo, 랭킹-Rank, 아이템-Item
멤버아이템-memberitem
게임내아이템추가+상태변경
게임후아이템추가+상태변경
아이템앱내구매 - Purchase
Push
인증 - 3rd party authentication
서버정보+리소스 - serverinfo
Imagine
어떻게서버와통신을?
CloudBread Unity AppDEMO
클라이언트디바이스와CloudBread 게임서버의
은밀한~ 통신
HTTPREST APIJSON
이벤트조회API : SelGameEvents를호출한다.
HTTP Request 요청구조
HTTP Response 응답구조
Unity App에서본그대로~!
{memberID = “member1”
}
{EventID =“eventID1”, EventName=“크리스탈1”, 기간=…EventID =“eventID2”, EventName=“좋은템1”, 기간=…EventID =“eventID13, EventName=“보너스아이템”, 기간=…
}
이벤트조회API : SelGameEvents를호출한다.
HTTP Request 요청구조
HTTP Response 응답구조
Unity App에서본그대로~!
{memberID = “member1”
}
{EventID =“eventID1”, EventName=“크리스탈1”, 기간=…EventID =“eventID2”, EventName=“좋은템1”, 기간=…EventID =“eventID13, EventName=“보너스아이템”, 기간=…
}
API ???
API 리스트Game Logic = Behavior
Game Logic -> APIAPI 추가, 수정이간편!
Behavior 리스트http://aka.ms/cbp
-> wiki –> Behavior 리스트문서
Behavior = 행위Object = 대상
데이터베이스!
회원 : Member
관리자 : Admin
구매 : Purchase
아이템 : Item
멤버아이템 :
MemberItem
게임정보 : GameInfo
스테이지 : Stage
선물 : Gift
공지사항 : Notice
이벤트 : Event
쿠폰 : Coupon
CloudBread DB 디자인http://aka.ms/cbp
-> wiki –> database 디자인문서
공지사항 - Notice
공지사항CBSelNotices
이벤트 - Event
이벤트CBSelGameEvents
선물 - Gift
이벤트CBSelGiftItemToMe
게임정보-GameInfo, 랭킹-Rank, 아이템-Item
게임정보CBComSelMemberGameInfoes
랭킹GetMemberRankbyMeberID
GetRangeRankerInfoCBRank-GetTopXRanker
멤버아이템-memberitem
멤버아이템CBSelMemberItems
게임내아이템추가+상태변경
게임후아이템추가+상태변경
아이템사용AddUseMemberItem
아이템앱내구매 - Purchase
구매CBComSelMemberItemPurc
hase
CloudBread Unity App “CODING"
HTTP Request 실습
유니티 WWW 클래스사용UnityEngine.WWW
Unity HTTP Request 실습
HTTP Request 실습
HTTP Request 실습
CloudBread DB구조API 소개
2회 CloudBread 캠프DB 구조, API 소개
프린트본
54
MemberID PWD Email Name1
Member
55
- Memberid / PWD 신경끕니다.(잠시뒤 “인증!!!”)
- Postman CBSelLoginIDDupeCheck 을이용해중복검사
- Email과 name1 은게임에서중요
- Email은나중에 CS 및사용자식별으로필요
- Name1은 “닉네임”으로 leader board 등에서활용
- 넣을때는 InsRegMember를이용합니다.
- InsRegMember로회원등록을쓰는이유는 Members와gameinfo에동시에입력하는로직 .
- Members = 계정, Gameinfo는게이머의속성
- Gameinfo의 point는"랭킹"에이용되니숫자만사용
- Name1의닉네임과 gameinfo의 point가랭킹으로활용
- CBComSelMember로조회
- CBCOMUdtMember로수정
MemberID Level Exp Point
GameInfo
56
- GameInfo는게이머의속성
- “게이머”의전역정보저장소. MemberItem과다름
- 차차차의여러대의자동차 + 자동차별로등록된속성(최고속력, 차레벨가속도…) 어떻게저장?
1) Memberitem에 1개의자동차 + cCol1~10에저장
2) 여분의컬럼이부족할경우 json으로저장추천
3) 카테고리컬럼을활용해식별자로사용
- 돈, 현금성아이템정보는 gameinfo에저장할까요? 아니면 memberitem에저장할까요?
가능하면 memberitem을쓰세요. 랭크나플레이어전역정보를제외하면 item에올리고 memberitem에저장을추천
- Gameinfo의 point는 "랭킹"에이용되니숫자만사용
- Name1의닉네임과 gameinfo의 point가랭킹으로활용
- CBComSelMemberGameInfoes로조회
- CBComUdtMemberGameInfoes로수정
ItemID ItemName Price Category
Item
57
- 클라이언트에아이템정보저장? 서버에저장? 장단점
- 서버에저장시프로모션, 밸런스조절등이용이
- Item을클라이언트에저장하는것도방법이나, 전체적인 CloudBread 활용을위해 itemList 테이블에저장을강력추천
- CloudBread에서 Item = 플레이어의소유물이기도하고, 게이머의돈등을지정도가능해요.
- Item테이블의컨셉 = 상점의목록
- “구매”라는 behavior를통해 “MemberItem – 회원아이템”으로저장되는로직
- CBComSelItemList1으로 1개아이템조회
- CBSelItemListAll로전체아이템조회
- (추가/수정은관리자전용)
MemberItemID MemberID ItemID ItemCount ItemStatus
MemberItems
58
- Member : Item = 1:다관계
- 차차차의여러대의자동차 + 자동차별로등록된속성(최고속력, 차레벨가속도…) 어떻게저장?
1) Memberitem에 1개의자동차 + cCol1~10에저장
2) 여분의컬럼이부족할경우 json으로저장추천
3) 카테고리컬럼을활용해식별자로사용
- 돈, 현금성아이템정보는 gameinfo에저장할까요? 아니면 memberitem에저장할까요?
가능하면 memberitem을쓰세요. 랭크나플레이어전역정보를제외하면 item에올리고 memberitem에저장을추천
- CBSelMemberItems으로회원이소유한아이템들조회
- CBComSelMemberItem으로 1개의 memberitem조회
- CBComUdtMemberItem으로 1개의 memberitem 수정
- CBComInsMemberItem으로 memberitem 추가
- CBAddUseMemberItem으로 membergameinfo 수정+memberitem 추가/수정처리(트렌젝션처리)
Member
GameInf
oStageID
MemberI
D
StageNa
me
StageSta
tusCategory Mission
Stage
59
- 스테이지는게임의 “플레이” 단위를지칭
- 마찬가지로, 1:다의관계를가지고있고, 스테이지별보상, 최고점수, 기록등을보관에용이합니다.
- 부족한컬럼들은 json 데이터로활용
- CBSelMemberGameInfoStages으로 member의 stage들을조회
- CBComSelMemberGameInfoStages으로 1개 stage 정보조회
- CBComUdtMemberGameInfoStages으로 1개 stage 정보수정
- CBComInsMemberGameInfoStages으로 1개 stage 정보추가
- CBUdtMemberGameInfoStage으로 gameinfo와 stage를수정(트렌젝션)
Member
ItemPur
chaseID
Member
IDItemID Quantity Price PGinfo
Purchase
60
- 구매처리입니다.
- 구매 = 현금성구매를의미하고결재가포함된정보를저장합니다.
- 구매 = item의구매를의미하며 item은 memberitem에저장합니다.(가상화폐도포함하며 memberitem에돈이나현금성아이템도보관)
- 구매는모두트렌젝션처리가이루어집니다.
- CBAddMemberItemPurchase으로 memberitem에item을추가하고, gameinfo를업데이트하고, purchase를추가(트렌젝션처리)
- CBComSelMemberItemPurchase으로 1개의 purchase를조회
- CBComUdtMemberItemPurchase으로 1개의 purchase를수정
- CBComInsMemberItemPurchase로 1개의 purchase를추가
- CBUdtReturnItem으로 1개의 purchase를철회처리(자동화/관리자페이지처리)
EventID Gategory ItemIDItemCoun
tTitle
Event
61
- 이벤트처리입니다.
- 이벤트는관리자페이지에서추가되며기본 duration으로조회처리
- 이벤트는로그인후또는클라이언트개발자가아무때나, 스테이지클리어시호출해표시가능
- 내가참여할수있는이벤트만표시되고, 관리자페이지에서만들때 duration을이용해조절가능
- Device, OS 등으로클라이언트에서표시여부결정가능
- CBSelGameEvents로회원이참여가능한이벤트조회
- 이벤트추가수정은관리자페이지에서처리
GameEvent
MemberIDEventID MemberID
EventMember
62
- 이벤트멤버
- 한번참여한이벤트에또참여할수없도록이벤트에참여한회원을기록하는테이블
- CBUdtGameEventMemberToItem으로 memberitem에이벤트의품목을추가하고, eventmember에이벤트참여를기록(트렌젝션)
CouponID Category ItemID ItemCount Status
Coupon
63
- 쿠폰
- 쿠폰정보를저장하고, 대량쿠폰저장도가능
- 관리자페이지에서쿠폰을생성, 대량쿠폰도생성가능(3월 26일현재쿼리사용)
- Group이나카테고리정보를이용해"예약신청자 1천명쿠폰", "게임카페쿠폰 100개"등으로조회해쿠폰대리전달업체나마케팅업체에 excel 파일로전달가능
- 쿠폰번호는 GUID로생성됨
- CBCOMSelCoupon으로쿠폰존재여부체크
CouponMe
mberIDCouponID MemberID
CouponMember
64
- 쿠폰멤버
- 쿠폰사용을기록하는테이블
- 쿠폰을어떤사용자가사용했는지여부가기록
- CBUdtCouponMember로 memberitem에추가, componmember에추가해쿠폰사용불가처리(트렌젝션)
- CBUdtCouponMember을활용해 gameinfo에게이머의 gameinfo 속성을업데이트도가능(Postman의CBUdtCouponMembe-GAMEINFO 참조)
GiftID ItemID ItemCountFromMem
berID
ToMemberI
D
Gift
65
- 선물
- 선물을주는사람과받는사람, 줄 item이기록됨
- CBSelGiftItemToMe으로나에게온선물들을조회
- CBUdtMoveGift로나에게온선물 1개를 memberitem으로이동(트렌젝션)
- CBUdtSendGift로선물함에선물을보냄, 내memberitem을삭제(트랜젝션)
- CBComSelGiftDepository으로 1개의 gitf를조회
- CBComUdtGiftDepository으로 gift를수정
Nickname Point Rank
Rank(Leader Board)
66
- 랭킹
- Rank는 DB가아닌메모리기반 NoSQL DB인 Redis에저장됨(기본설정)
- 기동되면서 DB의 nickname과 point를읽어서 Redis에저장해전체대상 SQL DB와동기화
- 동기화된후 Rank 수정이필요할시 API로 rank 추가/수정
- Postman CBRank-SetMemberPoint로 rank 추가/수정
- Postman GetTopXRanker로 topranker 리스트조회
- Postman GetRangeRankerInfo로순위범위의 member를조회
- Postman GetMemberRankByID로사용자의랭크순위를조회
-
인증
67
- Facebook, google id, Microsoft id, twitter id 인증가능
-인증을하면 memberid는자동 sid로치환됨
- Sid는인증제공자(facebook 등)이제공하는회원의고유값
- DEMO 용도로 cb2-auth-demo 서버
- Sid는서버에서만저장, 조회에처리되고클라이언트로내려오지않음
- CloudBread의모든 API는 Sid가존재하면(서버에인증구성이완료되면) 자동으로클라이언트가보내는 memberid를무시하고 sid로치환시킴
-개발단계에서는 memberid를보내고배포단계에서 sid를이용도가능
- CloudBread의암호화(Encryption)와별개로처리됨
-안전한게임통신을위해인증과암호화구성을권장함
암호화
68
- Crypt 처리로 web.config의설정을이용해 AES256 암호화처리가능
-클라이언트에서암호화구성을수행해 CloudBread API를호출
-암호화되어전달된텍스트를 CloudBread가복호화해서버에저장
-암호화설정시자동클라이언트에암호화된문자열 response
- CloudBread-Encrypt-Text-Tool로암호화복호화를개발시테스트가능
- Postman에기본설정된예제(Encrypt로시작)를활용가능
- DEMO 용도로, “cb2-crypt-demo” 서버이용
Socket 서버
69
-실시간통신
- Socket.io로개발
- Android, iOS 등다양한 SDK를지원(유니티포함)
-그룹제공
-클라이언트는인증을위해 CBSocketAuth API를 CloudBread 에요청
-토큰은 Redis 캐시에저장됨
-클라이언트는토큰정보를 Socket서버로보냄
- Socket 서버가 CloudBread에토큰 Validate 하고실시간통신시작
WEB APPS
How to install CloudBread-Socket.IO
Type
About Socket.IO
한바환
Web Socket
WEB APPS
Allow web-socket
Connect to Redis
How to install CloudBread-Socket.IO
CloudBread Admin-Web 데모김대우
Front-End API 서버Socket 서버AdminWeb 서버
CloudBreadservice architecture
CloudBread – (2) “Cumulonimbus” project architecture design - Full PaaS – most “flexible” & wide range of game & app service
Transactional Data
Azure SQL Database – Elastic #N
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
직접다클라우드에만들자한방에!
ARM 배포소개김정현
Your application code
Required resources Your infrastructure code
Azure: Resources (IaaS, PaaS)You: Code (application, infrastructure)
How to deployment
Fork the Cloudbread-ARM project
Click the [Deploy to Azure] button
Input parameters and Create resource group 주의사항● postfix app name
- 오직소문자또는숫자
- 16자이내
● SQL server login ID
- admin 이란 ID 사용불가
● SQL server login password
- 최소 8자
- 하나이상의특수문자필수
Authentication 인증
인증 - 3rd party authentication
Azure Mobile App 인증이란?
Azure 에서제공하는회원아이디관리, 회원인증관리등의편리한기능
어떻게회원인증처리를할까?
HTTP Rest Request 를할때마다
암호화된 Token 를같이보내자!
CloudBread on Azure가발급하는
Token 을가지고있을때만대답하자!
(Response)
컨셉Request Header 에올바른 Token을넣었을때
”Hello”
정상적인응답을받음!
어떻게회원인증처리를할까?
HTTP Rest Request 를할때마다
회원 ID (Token) 를같이보내자!
CloudBread on Azure 가발급하는
Token 을가지고있을때만대답하자!
(Response)
컨셉 Request Header 에틀린 Token을넣었을때
”[Error] ”
응답을못받음!
이렇게편리한 Token 어떻게받지?
ID : LoveCloudBread
PW : **************
페이스북계정
Google + 계정
Microsoft 계정
CloudBread(MS Azure)
각사이트에서발급한토큰
자체인증… 구현…ㅠㅠ
어차피유저들이안써…
Azure Mobile App 인증
1. 열심히게임을만든다. (Unity로…)
2. 페이스북개발자페이지에서앱을 생성한다.
(http://developers.facebook.com)
3. Azure 에서생성된 Mobile App 에서페이스북인증등록을한다.
4. Facebook SDK for Unity 를다운받는다.
(https://developers.facebook.com/docs/unity)
5. 예제 Copy & Paste
6. 끝!
CloudBread회원인증
페이스북로그인 CloudBread 에서발급한토큰페이스북에서발급한토큰
Facebook SDK 유니티용없음…
https://developers.facebook.com
http://<your ID>.azurewebsites.net
Settings -> Advanced
http://<your ID>.azurewebsites.net/login/facebook
Azure Portal : https://portal.azure.com
https://developers.facebook.com/docs/unity
Facebook authentication in Unity Demo
홍윤석
Demo : https://youtu.be/3aWLD_V1jaI영상 17분 부터 인증 코딩 시작
CloudBread 배포
CloudBread 배포
가이드문서 : https://goo.gl/4LNGIwDemo : https://youtu.be/PqFB60g6TCc
(2.Mobile app 연속배포과정)
데이터베이스연결문자열(connection String)
가이드문서 : https://goo.gl/HMNJU8Demo : https://youtu.be/WACxMpbGWYg
(3.DB접근을위한키가져오기)
CloudBread Scheduler 배포
Demo : https://youtu.be/aPjdAOb83qE(7.스케쥴러서비스연동)
CloudBread adminweb연속배포
Demo : https://youtu.be/SfFxsSxE3V4(8.admin web 연속배포)
Appendix
Why need Socket.IO?To enable servers real-time communicate with clients
WEB APPS
How to install CloudBread-Socket.IO
Needs
Type
WEB APPS
How to install CloudBread-Socket.IO
/tools/tasks/deploy.js
Match your web app credentials
CloudBread –추상화디자인아키텍처
데이터저장소 – SQL
(암호화)
로그데이터저장소 – NoSQL
(암호화)
FE 모바일응답서버 #N
배치성작업(일배치/시배치/월배치)
및비실시간성데이터처리를위한큐(Queue) 저장소
중간작업자배치작업처리기어뷰징규칙 / 푸쉬알림로그라우팅처리기 #N
작업스케쥴러(Trigger)
데이터출력캐시랭킹서비스를위한캐시
관리자페이지
CloudBread – (2) “Cumulonimbus” project architecture design - CloudBread Front-End 서버, Socket 서버와Admin webpage 서버
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
CloudBread – (2) “Cumulonimbus” project architecture design - Transactional Data 처리
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
CloudBread – (2) “Cumulonimbus” project architecture design - DB 캐시
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
CloudBread – (2) “Cumulonimbus” project architecture design -게임로그저장
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
CloudBread – (2) “Cumulonimbus” project architecture design -실시간통신 – Socket 서버
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
CloudBread – (2) “Cumulonimbus” project architecture design -대량로그저장
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
CloudBread – (2) “Cumulonimbus” project architecture design - Scheduler / Batch 서비스
Transactional Data
Azure SQL Database
Or SQL VM #N
Game log data
Azure Table storage #N
Azure Mobile App #1
Azure Mobile App #N
Log & schedule queue
Azure Queue storage #
Redis cache #N
Scheduler + Worker
Azure Web Job #1
Log processor + Scheduled Job
Scheduler + Worker
Azure Web Job #N
Log processor + Scheduled Job
Socket Auth, Leader
board(Ranking), Data Cache
Redis cache #N
CDN
AdminWeb
Socket Server #1
Realtime communication
Socket Server #N
Realtime communication
Azure App ServiceBuild and scale great cloud apps
Web Apps
Mobile Apps
Logic Apps
API Apps
App Service - one integrated offering
Web Apps
Web apps that scale with your business
Mobile Apps
Build Mobile apps for any device
Develop apps with….NET | Node.js | PHP | Python | Java
Benefits of App Services
Automatic OS patching
Enterprise-grade security
High availability
Automated scale out/in
Built-in load balancing
Supports many languages and platforms
.NET, Node.js, Python, Ruby and many more
Easy continuous deployment
Continuous delivery from third-party source control providers
Built-in Git repo
Mobile Apps
New capabilities for Mobile apps:
• Webjobs for long running tasks
• CI with GitHub, BitBucket, VSO
• Auto-load balance, Autoscale, Geo DR
• Virtual networking and hybrid connections
• Site slots for staged deployments
Mobile services plus
a whole lot more
MOBILE APPS
Azure Mobile Services
Storage
Authentication
Logic
Push
Scheduler
Structured Storage
Powered by SQL Database
Supports rich querying capabilities
Dynamic Schematization
Data management in: Azure Portal
SQL Portal (Silverlight)
SQL Management Studio
REST API
Azure CLI Tools
SQL CLI
Microsoft Azure
Server Side Table Scripts
Node.js scripts
Intercept CRUD requests
to tables
Passes through to SQL by
default
Fully customizable
.NET Web API
backend in
Visual Studio
MongoDB, Table Storage,
SQL out of the box
Custom API
Non-table based endpoints
Accessible from GET
POST
PUT
PATCH
DELETE
For node.js logic in scripts like table endpoints
For .NET delivered through a WebAPI
Expose any functionality you want
131Microsoft Azure
Web Apps
WEB APPS
Full capability set available including:
• .NET, Node.js, Java, PHP, and Python
• WebJobs for long running tasks
• Integrated VS publish, remote debug…
• CI with GitHub, BitBucket, VSO
• Auto-load balance, Autoscale, Geo DR
• Virtual networking and hybrid connections
• Site slots for staged deployments
Web apps run as-is
no changes required
Azure App Service Web App
Public Site Extensions Private Site Extensions
Web Site Kudu Web Jobs
Monaco MSDeploy Build/Upload Your Own
Gallery
App Service Web App
WebJobs
Light-weight CPU Intensive Tasks
run.cmd, run.bat run.exe run.ps1 run.sh run.php run.py run.js
BlobTrigger, TableTrigger, QueueTrigger, ServicebusTrigger
Scale: Singleton, Multi-instance
Job Type: On-Demand, Scheduled, Continuous
WebJobs SDK Feature:
Deployment: Portal, Visual Studio, CLI, Git
WebJobs
WebJobs
Logic Apps
Continous Delivery with App Service
Continuous integration
Continuous Deployment for Web Apps
Web App
Production Slot
Source Control / Code Repo Web App
Staging Slot
Commits
Agility through Continuous Deployment
Auto-Swap
Changes
Hooks
Git pull
Developer
GitHubVisual Studio
Online
Git BitBucketCodePlex DropBox FTP
Choose your own adventure!
Source Control for Web/API/Mobile Apps
AutoScale
AutoScale
AutoScale
AutoScale
App Service Environment
New Premium Tier Feature
Dedicated compute resources and network resources
Increased Scaling Options
Directly created in a Virtual Network
Support all Web App features and capabilities
Support Web, Mobile and API Apps
Global Scale
App Service Environment (ASE)
Presenter
App Service Environment