Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

20

Transcript of Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Page 1: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.
Page 2: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Deep Dive into Developing Line-of-Business Applications running in the Cloud

Bhushan Nene Grzegorz GogolowiczPrincipal Architect Senior ArchitectMicrosoft MicrosoftSession Code: DEV304

Page 3: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Canonical LOB Requirements

•On-demand scalability: Data, Transaction Processing, Batch, Front End

•Targets SMB to Enterprise

•Federation•SSO•Live ID

•User Experience (Full UI customization)

•Business Logic•Data Model

•On Demand Tenant Provisioning

•Data Partitioning for Tenant Isolation

•Metering

Multi-Tenancy Customization & Extensibility

Scalable Architecture

Claims-based Security

Page 4: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

ScenarioImagine your favorite coffee chain interested in rewarding their frequent customersISV offers Customer Loyalty program as a service in Windows AzureCoffee chain signs up for the program and customizes user experience, business process, and data modelExisting on-premise Point-of-Sale system integrates with Customer Loyalty serviceCoffee chain customers use self service portal to track points & rewards

Page 5: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Tenant On-boardingdemo

Page 6: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design: Tenant On-boardingConfig Data

Tenant ConfigApp Config, Tenant Master …

T1, T2

Tenant Data

Azure Tables

SQL Azure DBs

T1, T2T4, T5

Tenant Admin Portal

(ASP.NET Web App)

STS(ASP.NET Web App)

Identity Mgmt Services (WCF)

IdentityT1, T2

SAML

SAML

1

2

3

4

5

67

8

Page 7: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design Considerations & Best Practices

Data Storage Choice: Azure Table / SQL AzureTenant Data Partitioning

Azure Table: Per Tenant TableSQL Azure: Per Tenant DB

Data Model customizationAzure Table: Entity PropertySQL Azure: Table Column

Claims Aware web application

Page 8: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Point-of-Sale User Experience & Transaction Processing

demo

Page 9: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design: Point-of-Sale Transaction

Config Data

Tenant ConfigApp Config, Tenant Master …

T1, T2

Riviera Web Services

(WCF)

STS(WCF Web Services)

Identity

T1, T2

SAML

SAML

Tenant Data

Azure Tables SQL Azure DBs

T1, T2

T4, T5

1 2

3

45 6

78

Point-of-Sale(WPF App)

Creds

Azure Queue

Riviera Worker Role

EntLib (Caching, Logging)

Azure Queue

Azure Queue

Page 10: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design Considerations & Best Practices

Scalable Async Transaction ProcessingScaling on-demand: Management APIEnterprise Library

Caching: Service Bus to sync distributed cache, Velocity in futureLogging

Claims aware web services: WCF & WIFBusiness Process Customization: WF XOMLAzure Table design: table partitioning heterogeneous entities, property indexing

Page 11: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design Considerations – Table PartitioningPartition Key Row Key Properties1 K1 LastName: Swanson, FirstName: Trent1 K2 Points: 201 K3~{guid} RewardType: Percent, RewardValue:101 K3~{guid} RewardType: Amount, RewardValue:52 K1 LastName: Johnson, FirstName: Mike2 K2 Points: 602 K3~{guid} RewardType: Percent, RewardValue:20

Partition KeyRow Key PropertiesT1 1~K1 LastName: Swanson, FirstName: TrentT1 1~K2 Points: 20T1 1~K3~{guid} RewardType: Percent, RewardValue:10T1 K3~{guid} RewardType: Amount, RewardValue:5T1 2~K1 LastName: Johnson, FirstName: MikeT1 2~K2 Points: 60T1 2~K3~{guid} RewardType: Percent, RewardValue:20

• Get All Data for Trent: PartiionKey=1• Get Trent’s Points: PartitionKey=1 && RowKey=K2• Get Trent’s Rewards: PartitionKey=1 && (RowKey > K3 && RowKey < K4)

Querying Heterogeneous Entities

Page 12: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Self Service Portaldemo

Page 13: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design: Self Service Portal

Tenant DataAzure Tables & BLOBs

SQL Azure DBs

Config DataT1, T2, T3

T4, T5, T6

Tenant Config

T1, T2, T3Member SelfService

PortalLoyalty

MemberLoyalty

Membership Services (WCF)

ASP.NET Web App

SelfService AppCustom fields

Dynamic data bindingThemes

Custom XAMLCustom XAP

XAP

1

3

4

2

56

7

Page 14: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design Considerations & Best Practices

Deep UI customization beyond meta-data driven layout

Custom code in the Cloud?Custom code in Silverlight and browser sandbox

Themes, IconsCustom Property BindingLoose XAMLCustom XAP: HTTP handler, Azure Blob storage

Page 15: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Design Considerations & Best Practices

Custom domain nameWeb services securityWindows Live ID

AuthenticationAnd Beyond: Messenger API, Live Mesh (future)

Huron: Data Hub in the CloudE.g. Sync member data to on-premise DB for mass mailing

Page 16: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

question & answer

Page 17: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

www.microsoft.com/teched

Sessions On-Demand & Community

http://microsoft.com/technet

Resources for IT Professionals

http://microsoft.com/msdn

Resources for Developers

www.microsoft.com/learning

Microsoft Certification & Training Resources

Resources

Page 18: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Related ContentBreakout Sessions

• ARC201 - 11/09/2009 09:00-10:15 [David Chappell]The Windows Azure Platform: When And Why To Use It

• SVR202 - 11/10/2009 09:00-10:15 [Jan Schenk]Windows Azure Flight Tour – Looking At The Clouds From Above

• INT305 - 11/10/2009 13:30-14:45 [Kurt Claeys]Code Walkthrough of a Cloud Application Running on the Windows Azure Platform

• DAT303 - 11/11/2009 13:30-14:45 [David Robinson]Building Applications with Microsoft SQL Azure and Windows Azure

Page 19: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

Complete an evaluation on CommNet and enter to win an Xbox 360 Elite!

Page 20: Bhushan NeneGrzegorz Gogolowicz Principal ArchitectSenior ArchitectMicrosoft Session Code: DEV304.

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,

IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.