Architecting for the
Windows Azure Platform
David Chou
david.chou@microsoft.com blogs.msdn.com/dachou
Application Models
Web Hosting
Massive scale infrastructure Burst & overflow capacity
High Performance Computing
Parallel & distributed processing Massive modeling & simulation
Temporary, ad-hoc sites
Advanced analytics
Application Hosting
Hybrid applications Composite applications
Information Sharing
Reference data Common data repositories
Automated agents / jobs
Knowledge discovery & mgmt
Media Hosting & Processing
CGI rendering Content transcoding
Collaborative Processes
Multi-enterprise integration B2B & e-commerce
Media streaming
Supply chain management
Health & life sciences Domain-specific services
Distributed Storage
External backup and storage
Case Study
Background
Web-based ERP and accounting software to help mid-sized businesses automate customized business processes Business needs:
• Launch a SaaS offering which includes on demand infrastructure and billing • Maintain a 24/7 production environment • Minimize development efforts for both on-premise and SaaS offerings
Solution
Cloud-based SaaS deployment Windows Azure
SQL Azure
Benefits
Application migration completed in 3 weeks with 2 developers
Technical implementation
• Web – IIS 7, ASP.NET 3.5 • Server – SQL Server 2005/2008, Windows Server 2003/2008 • Tools – Visual Studio 2008, .NET Framework 3.5
Customers can implement solution without investing in onpremise infrastructure; can save ~$8,000 for startup costs
Lowered capital expenditures Improved time-to-market and agility in meeting customer needs More strategic use of IT resources
Case Study
Background
Online service providing productivity tools to help students conduct research, write better papers, and get help on-demand Technical implementation
• Client – Windows Mobile 6 • Web – IIS 6, ASP.NET 3.5
Solution
Hybrid cloud application Cloud-based extensions and services mash-ups with onpremise implementation Windows Azure application .NET Services service bus, access control, & workflows
• Server – Windows Server 2003, SQL Server 2005
• Services – Bing Search, Windows Live Messenger Web Toolkit • Tools – Visual Studio 2008, .NET Framework 3.5, .NET Compact Framework 3.5
Benefits
$500,000 savings in dev. costs 40% faster time-to-market More effective development Cost-effective scalability and enhanced availability
Case Study
Browser
Internet Clipping Toolbar
Full Featured Javascript Editor
Local / Network File Folder
JSON / AJAX/ HTTP IE 6/7/8* and Firefox • Rich Web 2.0 Technologies: Javascript Java Ajax CSS XHTML
F W — L B — C a c h e
Eduify Workflows
Local Storage
ASPX Pages
Eduify Business Objects
Common Services
Notification Logging Security
SQL Server
ASP.NET / CLR IIS
Facebook Connect Integration
Bing Search
Integration for Citation Check
Third Party Mashups
Case Study
Live Presence
IM Integration
Search Citation / Plagiarism Connected w/ Services
Mash-up with Microsoft Services
Cloud-Based Extensions
Certain ASPX | Workflows | Service Bus | Access Controls
On-Premise Implementation
ASP.NET
Workflows
Business Objects
Common Services
SQL Server
Service Bus
Local Storage
Internet-Scale Application Architecture
Design
Horizontal scaling Service-oriented composition
Data & Content
De-normalization Logical partitioning
Eventual consistency
Fault tolerant (expect failures)
Distributed in-memory cache
Diverse data storage options (persistent & transient, relational & unstructured, text & binary, read & write, etc.)
Security
Claims-based authentication & access control Federated identity Data encryption & key mgmt.
Processes
Loosely coupled components Parallel & distributed processing Asynchronous distributed communication Idempotent (handle duplicity) Isolation (separation of concerns)
Management
Policy-driven automation
Aware of application lifecycles Handle dynamic data schema and configuration changes
Internet-Scale Application Architecture
Presentation
• ASP.NET C#, PHP, Java • Distributed in-memory cache
Services
• • • • •
.NET C#, Java, native code Distributed in-memory cache Asynchronous processes Distributed parallel processes Transient file storage
Connectivity
• • • • •
Message queues Service orchestrations Identity federation Claims-based access control External services connectivity
SERVICE BUS
ACCESS CONTROL
WORK FLOWS
Storage
• • • • • •
Relational & transactional data Federated databases Unstructured, de-normalized data Logical partitioning Persistent file & blob storage Encrypted storage
Application Patterns
Cloud Web Application
Web Browser
Mobile Browser
Silverlight Application
WPF Application
User
Enterprise Application
Enterprise Web Svc
Enterprise Data Enterprise Identity
ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Table Storage Service User Data Application Data Reference Data
Web Svc ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Blob Storage Service
Jobs (Worker ASP.NET ASP.NET (Web Role) Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role)
Application Service
Data Service
Storage Service
Queue Service Access Control Service
Service Bus
Workflow Service
Identity Service
Private Cloud
Public Cloud Services
Application Patterns
Composite Services Application
Web Browser
Mobile Browser
Silverlight Application
WPF Application
User
Enterprise Application
Enterprise Web Svc
Enterprise Data Enterprise Identity
ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Table Storage Service User Data Application Data Reference Data
Web Svc ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Blob Storage Service
Jobs (Worker ASP.NET ASP.NET (Web Role) Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role)
Application Service
Data Service
Storage Service
Queue Service Access Control Service
Service Bus
Workflow Service
Identity Service
Private Cloud
Public Services
Application Patterns
Cloud Agent Application
Web Browser
Mobile Browser
Silverlight Application
WPF Application
User
Enterprise Application
Enterprise Web Svc
Enterprise Data Enterprise Identity
ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Table Storage Service User Data Application Data Reference Data
Web Svc ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Blob Storage Service
Jobs (Worker ASP.NET ASP.NET (Web Role) Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role)
Application Service
Data Service
Storage Service
Queue Service Access Control Service
Service Bus
Workflow Service
Identity Service
Private Cloud
Public Services
Application Patterns
B2B Integration Application
Web Browser
Mobile Browser
Silverlight Application
WPF Application
User
Enterprise Application
Enterprise Web Svc
Enterprise Data Enterprise Identity
ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Table Storage Service User Data Application Data Reference Data
Web Svc ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Blob Storage Service
Jobs (Worker ASP.NET ASP.NET (Web Role) Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role)
Application Service
Data Service
Storage Service
Queue Service Access Control Service
Service Bus
Workflow Service
Identity Service
Private Cloud
Public Services
Application Patterns
Grid / Parallel Computing Application
Web Browser
Mobile Browser
Silverlight Application
WPF Application
User
Enterprise Application
Enterprise Web Svc
Enterprise Data Enterprise Identity
ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Table Storage Service User Data Application Data Reference Data
Web Svc ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Blob Storage Service
Jobs (Worker ASP.NET ASP.NET (Web Role) Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role)
Application Service
Data Service
Storage Service
Queue Service Access Control Service
Service Bus
Workflow Service
Identity Service
Private Cloud
Public Services
Application Patterns
Hybrid Enterprise Application
Web Browser
Mobile Browser
Silverlight Application
WPF Application
User
Enterprise Application
Enterprise Web Svc
Enterprise Data Enterprise Identity
ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Table Storage Service User Data Application Data Reference Data
Web Svc ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) Blob Storage Service
Jobs (Worker ASP.NET ASP.NET (Web Role) Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role)
Application Service
Data Service
Storage Service
Queue Service Access Control Service
Service Bus
Workflow Service
Identity Service
Private Cloud
Public Services
The Microsoft Cloud
Categories of Services
Application Services
Software Services
Platform Services
Infrastructure Services
Platform of Choice
http://www.azure.com
Sign up at the Windows Azure Platform developers’ portal
Windows Azure access Developer tools White papers Sample applications
Plan pilot applications, proofs of concept, and architectural design sessions with Windows Azure partners
Thank you
david.chou@microsoft.com blogs.msdn.com/dachou
© 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.