real world azure - dev
DESCRIPTION
MSDN Events Presents – for the Developer & Architect from In this session, we will discuss: Cloud computing architectures in general and the Azure architecture in particular Several aspects of Azure from the developer’s and architect’s perspective Azure roles (web, web service and worker) Azure storage options Azure security and identity options How Azure-based applications can be integrated with on-premise applications Configuration, deployment and scaling Azure-based applications How development teams can optimize their applications for better management and monitoringTRANSCRIPT
MSDN Events Presents:Real World Azureclint edmonson | architect evangelist | www.notsotrivial.netmike benkovich | developer evangelist | www.benkotips.com
This is Jim
Patterns for Cloud Computing
Jim has many questions about cloud computing
Patterns for Cloud Computing
The more he reads, the more confused he gets
Patterns for Cloud Computing
“What is Cloud Computing?”
Patterns for Cloud Computing
“What can I use the Cloud for?”
Patterns for Cloud Computing
“What is Microsoft’s roadmap in this space?”
Patterns for Cloud Computing
Session Objectives
Session Objectives
Define Cloud Computing
Highlight the implementation of a Real World Azure scenario
Break down the parts
Defining Cloud Computing
Defining Cloud Computing
Jim has heard all the buzzwords
Defining Cloud Computing
Service Oriented Architecture
Defining Cloud Computing
Rich Internet Applications
Defining Cloud Computing
Software as a Service
Defining Cloud Computing
Software + Services
Defining Cloud Computing
Are any of these cloud computing?
Defining Cloud Computing
Styles of application architecture
Defining Cloud Computing
These styles can work in the cloud, but they are not cloud
computing
Defining Cloud Computing
Where do your applications “live”?
Defining Cloud Computing
On PremisesHostedCloud
Vendor’s Problem
Defining Cloud Computing
“What is Microsoft doing in Cloud Computing?”
Defining Cloud Computing
3 x Critical Concepts
Defining Cloud Computing
Roles
Web RoleWorker Role
Defining Cloud Computing
Storage
Table, Blob, Relational
Defining Cloud Computing
Messaging
Queues
Patterns for Cloud Computing
Using the Cloud for Scale
“Isn’t the cloud good for applications that need to scale dynamically?”
Patterns for Cloud Computing
For example, tax applications
Patterns for Cloud Computing
“How does this work?”
Patterns for Cloud Computing
Let’s do some white boarding for Jim…
Patterns for Cloud Computing
Using the Cloud for Scale
Web TierBrowserRequest
B/L Tier Database
Response
“Wow! What a great site!”
Using the Cloud for Scale
Web Tier B/L Tier Database
Browser
Browser
Browser
Browser
Browser
“Server Busy”
Using the Cloud for Scale
Web Tier B/L Tier Database
Browser
“Timeout”
Browser
Browser
Browser
Browser
How would Jim do this today on premises?
Using the Cloud for Scale
Web Tier
B/L Tier Database
Browser
Browser
Browser
Browser
Browser
Web Tier
Web Tier
N L B
How would Jim do this today on premises?
Using the Cloud for Scale
Database
Browser
Browser
Browser
Browser
Browser
Web Tier B/L Tier
B/L Tier
B/L Tier
N L B
How would Jim do this today on premises?
Using the Cloud for Scale
Database
Browser
Browser
Browser
Browser
Browser
B/L Tier
B/L Tier
B/L Tier
N L B
Web Tier
Web Tier
Web Tier
N L B
How would Jim do this today on premises?
Using the Cloud for Scale
Browser
Browser
Browser
Browser
Browser
B/L Tier
B/L Tier
B/L Tier
N L B
Database
p1 p2 p3
Web Tier
Web Tier
Web Tier
N L B
How would Jim do this today on premises?
Not without consequences...
Using the Cloud for Scale
Browser
Browser
Browser
Browser
Browser
B/L Tier
B/L Tier
B/L Tier
N L B
Database
p1 p2 p3
Web Tier
Web Tier
Web Tier
N L B
“That took a lot of work - and money!”
How would Jim do this today on premises?
Using the Cloud for Scale
Browser B/L Tier
B/L Tier
B/L Tier
N L B
Database
p1 p2 p3
Web Tier
Web Tier
Web Tier
N L B
“Not so great now…”
“Hmmm... Most of this stuff is sitting idle...”
“That took a lot of work - and money!”
How would Jim do this today on premises?
Using the Cloud for Scale
Usage
Jan Apr Jul Oct
Datacenter peak load
Idle time
How can Windows Azure help?
Using the Cloud for Scale
Web RoleBrowserRequest
Worker Role
Azure Storag
eResponse
“Wow! What a great site!”
Using the Cloud for Scale
Web RoleWorker
Role
AzureStorag
e
Browser
“Server Busy”
Browser
Browser
Browser
Browser
Using the Cloud for Scale
Web Role
Worker Role
AzureStorag
e
Browser
Browser
Browser
Browser
Browser
Web Role
Web Role
N L B
You don’t see this bit
Using the Cloud for Scale
Web Role
AzureStorag
e
Browser
Browser
Browser
Browser
Browser
Web Role
Web Role
N L B
Worker Role
Worker Role
Worker Role
N L B
Using the Cloud for Scale
Web Role
AzureStorag
e
Browser
Browser
Browser
Browser
Browser
Web Role
Web Role
N L B
Worker Role
Worker Role
Worker Role
N L B
p1 p2 p3
What’s going on behind the scenes?
Windows Azure
FabricController
Web Portal(API)
LB
LB
DNS
YourService
LB
LB
DNS
Service Deployment
YourService
FabricController
Web Portal(API)
Service ModelServiceService
DNSconfig
LB
LB
DNS
Service Scaling
YourService
FabricController
Web Portal(API)
Service
Service
Service
Model
Service
Service
ServiceService
Service
LB
LB
DNS
Service Monitoring & Recovery
YourService
FabricController
Web Portal(API)
Service
Service
Service
Model !
Service
On to the Case Study…
56
RXD Incubation Project• Project Vision• Project Austin delivers a next-generation, micro-community
based opportunity management and collaboration experience to our managed partners …
• Project Goals• Gain first-hand experience on Azure
• Cloud Storage – Security – Integration – Web – SQL Azure• Explore a business scenario that leverages the promises of the
cloud• Provide enterprise feedback to the Azure team• Deliver a working prototype in FY09
Project Austin Overview
57
Project Austin delivers a next-generation, micro-community based opportunity management and collaboration experience that brings a managed feel to the unmanaged space, allowing Microsoft to observe and participate in the sales process at scale through dynamic, customer-driven collaboration.
Project Austin leverages Windows Azure, CRM Services, and SharePoint Services to provide a rich set of customer and partner capabilities in the cloud while integrating with existing on-premise solutions.
Project Austin significantly enhances our understanding of our customers and partners by facilitating relationships with and between customers, partners, and Microsoft, while providing data that allows Microsoft to identify and promote world-class selling techniques and content.
Project Austin Vision
58
Web Role• Multi-Tenant; Web App; Web Service
Integration• Worker Role; .NET Service Bus; Siebel
Data Storage• Tables; Blobs; Queues; SQL Azure
Live ID Integration• Web Auth; Access Control Service; WIF; RPS
Technical Overview
59
Community
Community
Community
Community
Micro CommunityFactory
CommunityGroups
Community Group A Community Group B
Foundation Services
Compute
Identity Security Storage Eventing Config Content …
High Level Services
Navigation
Personalization
Search
Customization
Membership
Content
Identity
Security
Groups
Integration
…
…
Micro Community
Personalization MembershipContent Personalization MembershipContent
(TODO: Insert Austin Screenshots or walkthrough application)
Warning – this session contains information about Microsoft Technologies that are in the CTP (pre-Beta) stages. Specifics of the technology may change before final release.
Feedback.
We are here to help. Send us your questions, doubts, concerns, challenges, adoration, regrets, denials, and alibis.
We will start a discussion and help you out.
The Development Experience…
68
Visual Studio• Templates• Debugging
.NET platform• .NET, IIS7, WCF
“The cloud on your desktop”• Complete offline cloud simulation• Like Cassini (web development server)
Consistent, Familiar Development
69
1. Write code on your development machine2. Test locally3. Build package w/VS Tools4. Upload your package to the web portal5. Push “deploy”
6. Monitor, upgrade, scale…
Publishing Your Service To The Cloud
Demo: Developer Experience
71
Windows Server 2008 x64
.NET Start Native Code User Mode
Roles
Web Role Worker Role
Windows Server 2008 x64
IIS 7 FastCGI - PHP Native Code Full Trust User Mode
Demo: Guest Book
Bid Now Service
Service Models & Roles
Web B (port 8081)
Worker X
Worker Y
Worker Z
Web A(port 80)
Main Web100 instances
Admin2 instances
Image Resize2 instances
Auction Processing25 instances
Notifications10 instances
74
Debugging the cloud really means logging
Simple logging API today
More functionality over time
Debugging in the Cloud
Storage in the Cloud…
Blobs, Tables, Relational
Blobs, Tables, Relational
79
Blobs stored in Containers 1 or more Containers per account
• Scoping is at container level• …/Container/blobpath
Blobs• Capacity 50GB in CTP• Metadata, accessed independently • name/value pairs (8kb total)
Private or Public container access Use Blobs for file system
Blobs
Using the Cloud for Storage
Client Azure Blob Storage
REST API
PutBlob PUT http://account.blob.core.windows./net/containername/blobname
Blob Container
http://account.blob.core.windows.net/containername/blobname
PutBlob = 64Mb MAXMetaData = 8Kb per Blob
Using the Cloud for Storage
Client Azure Blob Storage
REST API
GetBlob GET http://account.blob.core.windows./net/containername/blobname
Blob Container
http://account.blob.core.windows.net/containername/blobname
Using the Cloud for Storage
Client Azure Blob Storage
REST API
GetBlob GET http://account.blob.core.windows./net/containername/blobnameRange: bytes=329300 - 730000
Blob Container
http://account.blob.core.windows.net/containername/blobname
Using the Cloud for Storage
Client Azure Blob Storage
REST API
PutBlock(blobname, blockid, data)PutBlockList(blobname, blockid1, …, blockidN)
Blob Container
http://account.blob.core.windows.net/containername/blobname
PutBlock = 4Mb MAX to a maximum of 50GbBlockId = 64 bytes
Blobs, Tables, Relational
Using the Cloud for Storage
Worker Role
AzureTable
Storage
Each Table:
PartitionKey (e.g. DocumentName) to ensure scalabilityRowKey (e.g. version number)[fields] for data
http://account.table.core.windows.net
REST: GET http://account.table.core.windows.net/Customer?$filter=%20PartitionKey%20eq%20value LINQ:var customers = from o in context.CreateQuery<customer>(“Customer”) where o.PartitionKey == value select o;
86
Entities and properties (rows & columns) Tables scoped by account Designed for billions+ Scale-out using partitions
• Partition key & row key• Operations performed on partitions• Efficient queries• No limit on number of partitions
Use ADO.NET Data Services
Tables
87
Provides structured storage• Massively scalable tables (TBs of data)• Highly available• Durable
Familiar and easy-to-use API• ADO.NET Data Services – .NET 3.5 SP1• .NET classes and LINQ• REST – with any platform or language
Introduction to Tables
88
For scalable applications:• Billions of rows, TBs of data• Automatic load management (hot data)
For online applications:• High availability• Built-in replication• Flexible schema (no big “schema migration”)• Optimistic concurrency
Advantages
89
No join No group by No order by
Think: relational DB partitioned to the max
Not a Relational Database
90
Table• A Table is a set of Entities (rows)• An Entity is a set of Properties (columns)
Entity• Two “key” properties form unique ID• PartitionKey – enables scale• RowKey – uniquely ID within a partition
Data Model
91
Getting all of dunnry’s blog posts is fast• Single partition
Getting all posts after 2008-03-27 is slow• Traverse all partitions
Key Example – Blog PostsPartition Key
AuthorRow Key
PermalinkProperty 3ChangedOn
Property 4Title
smarx i-love-tables 2009-07-04 I Love Tables!
smarx tables-are-awesome 2009-07-12 Tables are
Awesome!
dunnry cheetos 2008-03-27 I Love Cheetos
dunnry blogging-again 2009-07-15 Finally Blogging
Again
dunnry phluffyfotos 2008-04-09 PhluffyFotos!
Partition 1
Partition 2
92
Partition Key – how data is partitioned Row Key – unique in partition, defines sort
Goals• Keep partitions small (increased scalability)• Specify partition key in common queries• Query/sort on row key
Keys
93
Tradeoff between locality and scalability Considerations
• Entity group transactions• Query efficiency• Scalability• Flexible Partitioning
Choosing a Partition Key
94
Pick potential keys (common query filters) Order keys by importance If needed, include an additional unique key Use two most important keys as PK, RK Consider concatenating to form keys
A Method of Choosing Keys
96
Non-key queries are scans Improve performance by scoping
• Usually by partition key• But what about by table?
3 tables• Top 1,000 popular items• Top 10,000 popular items• Everything
Now arbitrary “top 1,000” queries are fast Better locality than clever partition keys
Multiple Tables, Same Keys
Demo: Guest Book Table Storage
98
Azure tables are *not* a relational database• Requires a mind shift• Azure tables scale• 3 - 9s availability• Azure tables support exactly one key• PartitionKey + RowKey
• Case Matters• No foreign keys• No referential integrity• No stored procedures
Leverage the community
Lessons LearnedAzure Storage
99
Azure storage Client Library• No longer just a “sample”
Azure storage is available via REST• Not limited to Azure hosted apps• Not limited to Microsoft platform or tools• Getting the signature correct is the hard part• Console tools are easy to write• Ultimate flexibility• Use the REST interface early as you’re versioning your tables
Lessons LearnedAzure Storage
100
REST is *not* TDS• Be prepared to parse• LINQ and XML classes help• Sometimes, string parsing is the best choice• Don’t forget to close your HTTP connections
Azure storage names are picky• So are Azure key values• It’s possible to create an entity in a table and not be able to
update or delete it
Lessons LearnedAzure Storage - RESTful
101
Often better to pull back more than you need vs. multiple roundtrips
LINQ on results in memory is fast & flexible• foreach works well too• don’t forget the break;
Sort and cache tables on the web tier• Use XML Serialization to write the results to local
storage• It’s generally faster to hydrate from local storage
• Not as fast as caching in memory
Lessons LearnedAzure Storage – Roundtrips are expensive
102
Using List<> with entity types• List<> binds well• LINQ works well with List<>• So does foreach• List<> serializes well• Add intelligence to your entities• Compare, Equals, ToString, etc.
Lessons LearnedAzure Storage – List<>
Blobs, Tables, Relational
SQL Server Data Services (MIX08)
Using the Cloud for Storage
DB ServerClient RDBMS
TDSData
This is what I’m doing on premises...
Using the Cloud for Storage
DB ServerClient RDBMS
TDSData
So, this is what I would like to do in the cloud...
SQL Data Services (MIX09)
SQL Azure (July 2009)
Using the Cloud for Storage
SQL AzureClient RDBMS
TDSData
So, this is what I would like to do…
Using the Cloud for Storage
SQL AzureBrowser RDBMS
TDSWeb Role
HTTP
Using the Cloud for Storage
SQL AzureBrowser RDBMS
TDS
Web RoleHTTP
Worker Role
Queue
Migration!
Using the Cloud for Storage
Browser RDBMS
Web TierHTTP
Bus. Logic
“The Data Center”
SQL Server
TDS
Using the Cloud for Storage
SQL AzureBrowser RDBMS
TDS
Web RoleHTTP
Worker Role
Queue
“The Cloud”
Demo: SQL Azure CTP
CTP Limitations TodaySET ANSI_NULLS ONSET ANSI_NULLS OFFPAD_INDEX = OFF
SET ANSI_PADDING OFFALLOW_ROW_LOCKS = ONALLOW_PAGE_LOCKS = ON
ON [PRIMARY]FILLFACTOR = 90
Three-part naming (e.g. dbo.TableName.ColumnName)Cannot use “WITH IGNORE_DUP_KEY” w/o the quotes
No @@servernameNo CREATE SCHEMA
(Not an exhaustive list)
117
From the database “down” it’s just SQL Server• Well, almost …• Most tools don’t work today• System catalog is different• No CLR
Above the database is taken care of for you• You can’t really change anything
Lessons LearnedSQL Azure
118
SQL Server is very familiar• SQL Azure *is* SQL Server in the cloud• Security of Azure tables is unknown
• SQL Server has a very good pedigree
A lot of our customers LOVE SQL Server• Understand Azure storage• Understand SQL Azure• Make the right recommendation
Lessons LearnedSQL Azure
119
Azure tables are *not* SQL Azure• SQL Azure is not the only storage option• SQL Azure is not always the best storage option• SQL Azure costs more• Delivers a *lot* more functionality• SQL Azure is more limited on scale [today]
Lessons LearnedSQL Azure
Queues
121
Simple asynchronous dispatch queue• Create and delete queues
Message:• Retrieved at least once• Max size 8kb• Operations:• Enqueue• Dequeue• RemoveMessage
Queues
Azure Queues
Queue
Msg 1
Msg 2
Msg 3
Msg 4
Worker Role
Worker Role
PutMessage
Web Role
GetMessage (Timeout)
RemoveMessage
Msg 2Msg 1
Worker Role
Msg 2
Patterns in the Cloud
Using the Cloud for Multi Tenancy
“I like the idea of scaling Web roles…”
Patterns for Cloud Computing
“…but need to serve multiple customers”
Patterns for Cloud Computing
“Without creating separate codebases!”
Patterns for Cloud Computing
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Customer #1
How would Jim do this today on premises?
#2 - Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Customer #2
Web TierBrowser B/L Tier Database
Customer #1
Web TierBrowser B/L Tier Database
Customer #3
How would Jim do this today on premises?
Gets expensive pretty quickly
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
Schema Customizations
UI Customizations
Schema Customizations
UI Customizations
3 options for data in multi tenant environment
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
Option 1: Everyone Uses the Same Database/Schema
Fixed Schema
Pros: Simplest approach, easy to maintain/upgrade.Cons: No customizations. Restoring of tenant data.
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier
Database
Browser
Browser
Customer #1
Customer #2
Customer #3
Option 2: Give Each Customer Their Own Database/Schema
Customer #1
Database
Database
Customer #2
Customer #3
Pros: Flexible. Tenant restore is easier. High Isolation.Cons: Can be costly. Difficult to upgrade db schemas.
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
Option 3: Fixed Database/Schema, with customizations
Fixed Schemawith
Customizations
Pros: Customers can add their own custom fieldsCons: Non standard way of customizing the schema. Tenant restore is difficult.
Using the Cloud for Multi Tenancy
TenantID
Tenant
int
TenantNamenvarchar
EmployeeId
Employee
int
FirstName nvarchar
LastName nvarchar
CustomizationID
Customization
int
Value nvarchar
TypeID
Type
int
Name nvarchar
CLRType nvarchar
1
*
*
1
*
1
*
*
Using the Cloud for Multi Tenancy
TenantID
Tenant
1
TenantNameUK Branch
EmployeeId
Employee
1
FirstName Gordon
LastName Brown
CustomizationID
Customization
1
Value SW1A 2AA
TypeID
Type
1
Name PostalCode
CLRType string
1
*
*
1
*
1
*
*
Using the Cloud for Multi Tenancy
TenantID
Tenant
2
TenantNameUS Branch
EmployeeId
Employee
2
FirstName Barack
LastName Obama
CustomizationID
Customization
2
Value 20500
TypeID
Type
2
Name ZipCode
CLRType string
1
*
*
1
*
1
*
*
Using the Cloud for Multi Tenancy
TenantID
Tenant
2
TenantNameUS Branch
EmployeeId
Employee
2
FirstName Barack
LastName Obama
CustomizationID
Customization
2
Value 20500
TypeID
Type
2
Name ZipCode
CLRType string
1
*
*
1
*
1
*
*
Fixed SchemaApplies to All
Tenants
CustomizableTenant by
Tenant Basis
Could be both
Schema Customizations
UI Customizations
#2 - Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
URL Handing
Can ASP.NET MVC Help?
Single Controller per Tenant
http://employeedata.cloudapp.net/contoso (ContosoController)
http://employeedata.cloudapp.net/fabrikam(FabrikamController)
Shared Controller per Tenant
http://employeedata.cloudapp.net/contoso (EmployeeController)
http://employeedata.cloudapp.net/fabrikam(EmployeeController)
Shared Controller per Tenant (with URL mask)
http://hr.contoso.co.uk(http://employeedata.cloudapp.net/employees)
http://hr.fabrikam.com(http://employeedata.cloudapp.net/employees)
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
http://hr.chase.co.uk
http://hr.citigroup.com
http://employeedata.cloudapp.net
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
http://hr.chase.co.uk -> CNAME (employeedata.cloudapp.net)
http://hr.citigroup.com -> CNAME (employeedata.cloudapp.net)
http://employeedata.cloudapp.net
Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
http://hr.chase.co.uk -> CNAME (employeedata.cloudapp.net)
http://hr.citigroup.com -> CNAME (employeedata.cloudapp.net)
Use custom routing in ASP.NET MVC
http://employeedata.cloudapp.net
Demo: Multi-Tenant Routing with ASP.NET MVC
Tentative
Patterns for Moving to the Cloud
Using the Cloud for Communications
Jim’s organization needs to communicate with other organizations
Patterns for Cloud Computing
“This has always been a very tricky and expensive process to get working”
Patterns for Cloud Computing
“Does the cloud offer anything to help?”
Patterns for Cloud Computing
How would Jim have done this before?
Using the Cloud for Communications
Client Server
Company 1 Company 2Telco provided WAN
FTPClient
FTPServer
Using the Cloud for Communications
Client Server
Company 1 Company 2Telco provided WAN
FTPClient
FTPServer
Internet
Using the Cloud for Communications
Client Server
Company 1 Company 2Telco provided WAN
Browser
Internet
ExtranetSite
DMZ
What does the cloud provide?
Using the Cloud for Communications
ClientREST
Azure Queue
http://app.queue.core.windows.net/
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2 x
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Master Key
Master Key
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
Proxy?
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
NAT?
65.55.33.204
192.168.14.100
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
65.55.33.204
192.168.14.100OK, so I’ll do a
HTTP poll every minute
Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
Web Role
Firewall
Firewall
65.55.33.204
192.168.14.100…and how about other
protocols other than HTTP?
How does the .NET Service Bus help?
Using the Cloud for Communications
Client
Outbound bi-directional socketKept alive in background
.NET Service Bus
sb://.../myqueue
Client
Company 1
Company 2
Firewall
Using the Cloud for Communications
Client
Outbound bi-directional socketKept alive in background
.NET Service Bus
sb://.../myqueue
Client
Company 1
Company 2
Firewall
FirewallOutbound one-way socket
Message routedaccordingly
Austin Integration with Siebel (on-premise)
bi-directional socketKept alive in background
.NET Service
Bus
Siebel
On-Premise DataCenter
Firewall Synchronization Message
Opp. Exchan
geService
BlobTabl
eQueu
e
Austin
sb://.../myqueue
Demo: Integration through the .NET Service Bus
176
High Level of Abstraction• Hardware• Server OS• Network Infrastructure• Web Server
Availability• Automated Service Management
Scalability• Instance & Partitions
Developer Experience• Familiar Developer Tools
Windows Azure Benefits
177
Resources
Blogshttp://blog.smarx.com – Steve Marxhttp://blogs.msdn.com/clemensv - Clemens Vasters (.NET
Services)
Azure Services Platform Forumshttp://www.microsoft.com/azure/blog.mspx
Azure Services Training KitDownloadable hands-on labs, demos, and presentationshttp://www.azure.com
(Transition to Architect Evangelist for wrap-up…)
TODO
• Highlight customer wins or Partner experiences
• Q&A• Collect surveys and Hand out tokens• Giveaways
179
From start to finish in two weeks West Monroe Partners asked to
develop an interactive, printable map for the 2009 Taste of Chicago’s two million visitors
Had two weeks to design and build externally facing Web functionality, ensure scalability for up to 50,000 hits per day, with no defined hosting solution in place
Taste of Chicago
“With Windows Azure and Live Services, we built a solution that uses the equivalent of 25 servers, and yet it required no up-front
capital costs and minimal ongoing operational costs.”Cory Chaplin, Technology Solutions Practice Lead, West Monroe Partners
[case study]
180
“Be This Close”Country Music Festival 2009
[play it online]
Compelling Silverlight/DeepZoom experience leveraging Windows Azure as the storage mechanism
Less than 1 hour to get up and running on Azure
850 high resolution photos broken into x,000 tiles
Week a half to build Azure support
“Windows Azure was a breeze to use and didn't let us down.”Ben Henderson, Firefly Logic
181
Customer Costs Reduced 60 Percent Delivers enterprise line of
business data to mobile workers anytime, anywhere, at minimal cost to the enterprise.
Aggregated LOB data, LOB access rules, and, optionally, even LOBs themselves are stored in the cloud in Microsoft SQL Data Services.
Cumulux
[case study]
“With software-plus-services, we can get our customers up and running on mPortal in two weeks versus two months—a 75
percent time-to-market improvement over on-premises deployment.”
Ranjith Ramakrishnan, Chief Technology Officer for Cumulux
How do I qualify?• Building software or software services• Privately held• In business for less than 3 years• Less than US $1 million in annual revenue
What do I get?• MSDN Premium• Phone and Online Technical Support• Profiled on Microsoft and other web properties
contact brian [email protected]
© 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.
[email protected]://davebost.com/blog