2회 오픈소스 게임 서버 엔진 스터디 캠프 - cloudbread

Post on 17-Jan-2017

330 Views

Category:

Mobile

7 Downloads

Preview:

Click to see full reader

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 디자인문서

Postman 데모

Postman collection 다운로드 : https://goo.gl/W1SxUn

공지사항 - Notice

공지사항CBSelNotices

이벤트 - Event

이벤트CBSelGameEvents

선물 - Gift

이벤트CBSelGiftItemToMe

게임정보-GameInfo, 랭킹-Rank, 아이템-Item

게임정보CBComSelMemberGameInfoes

랭킹GetMemberRankbyMeberID

GetRangeRankerInfoCBRank-GetTopXRanker

멤버아이템-memberitem

멤버아이템CBSelMemberItems

게임내아이템추가+상태변경

게임후아이템추가+상태변경

아이템사용AddUseMemberItem

아이템앱내구매 - Purchase

구매CBComSelMemberItemPurc

hase

PostmanHands on

Postman collection 다운로드 : https://goo.gl/W1SxUn

CloudBread Unity App “CODING"

HTTP Request 실습

유니티 WWW 클래스사용UnityEngine.WWW

Unity HTTP Request 실습

HTTP Request 실습

HTTP Request 실습

Unity Demo홍윤석

코딩 Demo : https://goo.gl/4GGXhK

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 하고실시간통신시작

CloudBread SocketDemo한바환

라이브 데모 : http://goo.gl/S5OzJ0

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자

- 하나이상의특수문자필수

ARM DEMO & Hands on

김정현

Demo 영상 : https://youtu.be/TvtXkRAymcg

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 DB 설치

Demo : https://youtu.be/yj_w4q84lag(4.DB 개체생성)

CloudBread 설정

Demo : https://youtu.be/sqrFa2gn1zw(5.생성된DB에 app 접근하기)

CloudBread Socket 배포/설정

Demo : https://youtu.be/woMIke_N9Rc(6.소켓설치)

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

top related