Cloud application architecture with sql azure and windows azure
-
Upload
eduardo-castro -
Category
Technology
-
view
11.715 -
download
2
description
Transcript of Cloud application architecture with sql azure and windows azure
Cloud Application Architecture with SQL Azure and Windows AzureDr. Eduardo Castro MartínezMicrosoft [email protected]
http://comunidadwindows.orghttp://ecastrom.blogspot.com
Session Objectives
Provide a big-picture view of the SQL Server in the Cloud
Provide a big-picture view of the Windows Azure platform
Describe typical scenarios for using the Windows Azure platform
Agenda
Cloud Computing PlatformUnderstanding Cloud ComputingCloud Computing Security Cloud Computing and Standards
Creating Cloud Aware ApplicationsWindows Azure Platform
4
Computing Evolution
Now40’s 70’s 80’s
•Mobility explosion•Collaboration•High level of interconexion between users•Web platform growing•Pressure over companies data centre.
Issues Facing Developers
70% of Web Development Effort is “Muck”: Data Centers Bandwidth / Power / Cooling Operations Staffing
Scaling is Difficult and Expensive: Large Up-Front Investment Invest Ahead of Demand Load is Unpredictable
Solution: Web-Scale ComputingScale capacity on demand
Turn fixed costs into variable costs
Always available
Rock-solid reliability
Simple APIs and conceptual models
Cost-effective
Reduced time to market
Focus on product & core competencies
THE CLOUD GENERAL CONCEPTS
Typical Application Grow?
Users
Servers
Add some Web Servers
Buy bigger SQL Box
Rearchitect Database to
scale out
Buy more of everything
Unusedcapacity
Workload Patterns Optimal For Cloud
Usage
Com
pu
te
Time
Average
Inactivity
Period
“On and Off “
On & off workloads (e.g. batch job)Over provisioned capacity is wasted Time to market can be cumbersome
Com
pu
te
Time
“Unpredictable Bursting“
Average Usage
Unexpected/unplanned peak in demand Sudden spike impacts performance Can’t over provision for extreme cases
Average Usage
Com
pu
te
Time
“Growing Fast“
Successful services needs to grow/scale Keeping up w/ growth is big IT challenge Complex lead time for deployment
Com
pu
te
Time
Average Usage
“Predictable Bursting“
Services with micro seasonality trends Peaks due to periodic increased demandIT complexity and wasted capacity
What is the ‘Cloud’?
The Cloud – metaphor for the internet‘Cloud Computing’Exploiting resources ‘out there’
Scalable computational powerData management and storageEnabling servicesApplications
On Premises Hosted VendorCloud
Bu
ild v
s. B
uy
Build
Buy “Packaged
”Application
An application that I buy “off the shelf” and
run myself
“Custom Built”
Application
An application that I develop and run myself
Hosted “Custom
Built”
An application that I develop myself and run at a host site
Hosted “Packaged
”
An application that I buy “off the shelf” and run at a host
site
“Custom Built”
using cloud services
An application that I develop
myself and host using
cloud platform
“Packaged”
Using cloud services
An application that I buy “off the shelf” and
host using cloud platform
“Software as a
Service”
A hosted application
that I buy as a service from a
vendor
“Platform as a
Service”
A vendor hosted
development and runtime environment
What is the ‘Cloud’?
The Cloud
3 Cloud Service Models
Cloud Software as a Service (SaaS)Use provider’s applications over a network
Cloud Platform as a Service (PaaS)Deploy customer-created applications to a cloud
Cloud Infrastructure as a Service (IaaS)Rent processing, storage, network capacity, and other fundamental computing resources
To be considered “cloud” they must be deployed on top of cloud infrastructure that has the key characteristics
12
Service Model Architectures
Cloud Infrastructure
IaaS
PaaS
SaaS
Infrastructure as a Service (IaaS) Architectures
Platform as a Service (PaaS)Architectures
Software as a Service (SaaS)
Architectures
Cloud Infrastructure
SaaS
Cloud Infrastructure
PaaS
SaaS
Cloud Infrastructure
IaaS
PaaS
Cloud Infrastructure
PaaS
Cloud Infrastructure
IaaS
13
Cloud App Architecture
Intelligent Network Load Balancer
Stateless ‘Worker’ Machines
Shared Filesyste
m
M Tiers of N stateless machines w/ Forward Caching
Partitioned Relational
DB
Async DispatchQueue
‘Monolithic’State Tier
Queue Activation
Network Activation
High Scale Application Archetype
Cloud aware Architecture
SQL Azure
Common DB
Tables
Castellan Venue
DB
Castellan Venue DB’s
ShardingPartition
Castellan Venue
DB
Castellan Venue DB’s
ShardingPartition
Castellan Venue
DB
Castellan Venue DB’s
ShardingPartition
...
Windows Azure Roles
http:// gagame .* Dynamic Worker(tasks
uploaded as blobs and sharding)
Partitioner Worker
Windows Azure StorageQueues for communication between clients and roles
-- - --- - -
-- - --- - -
Tables to record server & partition information
Blobs to store web and worker role resources
Client Applications
C# Application on Premises
Silverlight Application• Common Educational Experiences
Service Bus
WCF
On PremisesSQL Server
Configuration Statistics
Distributed Cache Worker
Sample Cloud Application Architecture
Source: [email protected]
Sample Cloud Architecture
Source: [email protected]
19
The ‘Why’ and ‘How’ of Cloud Migration
There are many benefits that explain why to migrate to clouds
Cost savings, power savings, green savings, increased agility in software deployment
Cloud security issues may drive and define how we adopt and deploy cloud computing solutions
20
Balancing Threat Exposure and Cost Effectiveness
Private clouds may have less threat exposure than community clouds which have less threat exposure than public clouds. Massive public clouds may be more cost effective than large community clouds which may be more cost effective than small private clouds. Doesn’t strong security controls mean that I can adopt the most cost effective approach?
21
Cloud Migration and Cloud Security Architectures
Clouds typically have a single security architecture but have many customers with different demands
Clouds should attempt to provide configurable security mechanisms
Organizations have more control over the security architecture of private clouds followed by community and then public
This doesn’t say anything about actual security
Higher sensitivity data is likely to be processed on clouds where organizations have control over the security model
22
Putting it Together
Most clouds will require very strong security controlsAll models of cloud may be used for differing tradeoffs between threat exposure and efficiencyThere is no one “cloud”. There are many models and architectures.How does one choose?
23
Migration Paths for Cloud Adoption
Use public cloudsDevelop private clouds
Build a private cloudProcure an outsourced private cloudMigrate data centers to be private clouds (fully virtualized)
Build or procure community cloudsOrganization wide SaaSPaaS and IaaSDisaster recovery for private clouds
Use hybrid-cloud technologyWorkload portability between clouds
24
Possible Effects ofCloud Computing
Small enterprises use public SaaS and public clouds and minimize growth of data centersLarge enterprise data centers may evolve to act as private cloudsLarge enterprises may use hybrid cloud infrastructure software to leverage both internal and public cloudsPublic clouds may adopt standards in order to run workloads from competing hybrid cloud infrastructures
An Overview of the Windows Azure Platform
The Windows Azure Platform
Windows AzureSQL AzureWindows Azure platform AppFabricDeveloper tools
Windows Azure Basics
Windows Azure can potentially provide various kinds of Windows-based environments
The current release supports both .NET and unmanaged applications
Windows Azure provides Operating System like concepts
Process ManagementComputationStorage
Azure™ Services Platform
A set of connected serversOn which developers can:
Install and run servicesStore and retrieve data
What Is The Cloud in Windows Azure?
It is an operating system for the cloudIt is designed for utility computingIt has four primary features:
Service managementComputeStorageDeveloper experience
What Is Windows Azure?
The Windows Azure Platform
SQL Azure
Windows Azure
CloudApplicatio
ns Windows Azure AppFabric
On-PremisesApplicatio
nsOthersWindows
…
Windows AzureAn illustration
Fabric
Compute Storage
Config
Application
SQL Azure
Windows Azure
Applications
Applications
OthersWindows
Windows Azure AppFabric
Windows Azure Datacenter
Your Service
Windows Azure Building Blocks
LB
Internet
Web Site(ASPX, ASMX,
WCF)
Web Site(ASPX, ASMX,
WCF)Web Role
(ASPX, WCF)
Worker Service
Worker Role
LB
StorageTables Blobs
Queue
Windows Azure Applications, Storage, and Roles
Cloud Storage (blob, table, queue)
Web RoleLB
n
Worker Role
m
Windows Azure, In One Picture
Desktop
VS Tools
WA SDK
Sto
rage
Clu
ster
MSFT Datacenters
Business Portal
Developer Portal
Com
pute
Clu
ster
……
Service Management Service
REST
REST…
Cloud VM
Runtime API
VM Setup
User Code
Azure
Partial Trust
“Dev Fabric”
Dev Environment
Fabric
Storage
VMs VMs
Windows Azure Compute Service A closer look
…
Load Balanc
er
HTTP/ HTTPS
IIS
WebRole
Instance
WorkerRole
Instance
Compute
Application
Fabric Controlle
r
Fabric Agent
Storage
Fabric Agent
Web RoleInstance
Worker Role
Instance
Windows Azure Fabric
Cloud Simple Application
Web Role Worker Role
Blob
Queue
Windows Azure for Application Developers
Portal HostedService
Storage
SDK
Develop Deploy Run
Roles
Role
Code Configuration
Load Balanced InstancesRole
Instance 1
Instance 2
http://yourapp.cloudapp.net
Web vs Worker Role
Web Role
IIS Host
Your Code
Worker RoleSystem Host
Your Code
Compute
Windows Azure Compute Service
The VMs are provided by a cloud-optimized hypervisor
Not your average VMThey run 64-bit Windows Server 2008Each VM has a one-to-one relationship with a processor core
For developers:It’s mostly standard Windows and .NET
A few things require accessing the Windows Azure Agent, e.g., logging
A desktop facsimile of Windows Azure in the cloud is provided for development via the SDK
Storage
Windows Azure Storage
Storage types:Blobs: a simple hierarchy of binary dataTables: entity storage (not relational tables)Queues: high performance quasi-transactional queue structures
Access:Data is exposed via a RESTful interfaceData can be accessed by:
Windows Azure applicationsAny other internet connected applicationon-premises or other cloud applications
…
Fabric
Compute Storage
Application
Windows Azure Storage ServiceA closer look
Blobs
HTTP/ HTTPS
RESTService
s
Tables Queues
Database
Business AnalyticsReporting Data Sync
SQL Services
.NET Services
Windows Azure
Live Services
Applications
Applications
OthersWindows
Mobile
Windows
Vista/XP
Windows
Server
SQL AzureA relational DB in the cloud
SQL Azure Database
Others (Future)
Data Hub
Relational database as a serviceHighly available, automatically maintained
Extension of the SQL Server Data Platform
Database
Relational database, provided as a service
Highly symmetrical development and tooling experience (use TDS protocol and T-SQL)Highly scaled out, on commodity hardwareBuilt on the SQL Server technology foundation
Beyond “hosted database”High availability, DB provisioning, and DB management are provided by the servicePay for what you use
SQL Azure Database
Customer Value Props
Self-provisioning and capacity on demand
Symmetry w/ on-premises database platform
Automatic high-availability and fault-tolerance
Automated DB maintenance (infrastructure)
Simple, flexible pricing – “pay as you grow”
MSDatacente
r
Windows Azure
Compute
Browser
SOAP/RESTHTTP/S
T-SQL (TDS)
App Code(ASP.NET)
SQL Server Report Server
(on-premises)
ADO.NET/REST - EDMHTTP/S
- AD Federation (LiveId /AppFabric AC)
SQL AzureDatabase
T-SQL (TDS)
Relational database service
• SQL Server technology foundation
• Highly symmetrical
• Highly scaled
• Highly secure
Database “as a Service” – beyond hosting
Highly scaled out relational database as a service
Database
Fundamentals
Application Primary FocusDesigning for the Cloud
Scale outServices
AutomatedService
Management
HighAvailability Multi-
tenancy
Resource Optimizatio
n
Transitioning Cloud Driven Process
• Business screening processBusiness Opportunities based on cloud
• Visualization of current statusEnvisioning and Planning
• Business Process suitable for Cloud
Choose Business Case
• Cloud Provider Selection CriteriaCloud implementation
• Public Cloud / Private CloudTransitioning Scenarios
• Systems Resides in the Cloud• Operation OptimizationGoing Production in Cloud
Store Data inthe Cloud
Extend Application Components to the Cloud
Move Entire Applications to the Cloud
Start new applications based
onCloud Services
Create hybrid applications by
Combining Cloud Services
Transitioning to the cloud
57
Migration Paths for Cloud Adoption
Use public cloudsDevelop private clouds
Build a private cloudProcure an outsourced private cloudMigrate data centers to be private clouds (fully virtualized)
Build or procure community cloudsOrganization wide SaaSPaaS and IaaSDisaster recovery for private clouds
Use hybrid-cloud technologyWorkload portability between clouds
Infrastructure Transition
Cloud Reference Architecture
Cloud Computing for Financial Institutions. Vivek Kejriwal
Transitioning Cloud Driven Architectures
Transitioning Cloud Driven Architectures
Transitioning Cloud Driven Architectures
Transitioning Cloud Driven Architectures
Application Architecture for the Cloud
65
Application Basic Building Blocks
Cloud Storage (blob, table, queue)
Presentation RoleLB
n
Service Role
m
N-Tier Application Transition
Presentation
Business
Data Access
Data
Move to the cloud On Premises
Data
N-Tier Application Transition
Presentation
Business
Data Access
Data
Move to the cloud On Premises
Data
N-Tier Application Transition
Presentation
Business
Data Access
Data On Premises Data
Move to the cloud
Data
Move to the cloud
Sync
Simple Cloud Application
Presentation Services
Blob
Queue
Sample Cloud Application Arquitecture
Cloud Relational Storage
Common DB
Tables
Castellan Venue
DB
Castellan Venue DB’s
ShardingPartition
Castellan Venue
DB
Castellan Venue DB’s
ShardingPartition
Castellan Venue
DB
Castellan Venue DB’s
ShardingPartition
...
Cloud Based Roles
http:// sophia.* Dynamic Worker
(blobs and sharding
management)
Partitioner Worker
Cloud StorageQueues for communication between clients and roles
-- - --- - -
-- - --- - -
Tables to record server & partition information
Blobs to store web and worker role resources
Client Applications
Application on Premises
Multimedia Application• Common Educational Experiences
Communication Services
Communication Services
On PremisesData Storage
Configuration Statistics
Distributed Cache Worker
Access Control
Service Bus
Service Bus
Registry
Endpoints
Organization Y
Organization X
Application Application
Cloud Communication Pattern
2) Discover endpoints
1) Register endpoints3) Access
application
4) Upgrade to direct
connection
Transitioning to the CloudDesign Requirements
LooseCoupling
Component
Re-use
Scalability
Principle Details
Loose coupling • Messaging communication
• Component Autonomy• Component
Interoperability
Scalability • Design for partitioning and elasticity
• Stateless component design
• Consider long running processes
Component Re-use • Composition • Integration
Consider cluster design
• Split the application in multiple clusters by functionality
Basic cloud development principles
Principle Details
Failure handling • Can some parts of the application continue to execute without the other parts
Data persistence • Storage and replication
SOA is reinforced • More loosely coupled the components of the system, the better it scales
• Asynchronous systems
Parallel design • Processing and storage queries
Security • Build security on every layer
Basic cloud development principles
Cloud Transitioning ArchitectureIdentify PatternsConsider:
Basic componentsMessagingInteroperable Message Format and ProtocolsCommunication or Integration BusResource Deployment
StorageInfrastructure (Processing, Creation, …)
Scaling Out using a Queue Based Pattern
Queue
Msg 1
Msg 2
Msg 3
Msg 4
Process Role
Worker Role
Submit Message
Application
Process Message
Msg 2Msg 1
Process Role
Msg 2
AlarmProcessor
IncidentTable
Pos RptTable
TimerTable
EventTable
NewMsg
Parse & Route
Queue A
Implement Queues for Reliability and Continuity
Processor A
Table
Table
Table
Queue B
Processor B
Building Blocks Key takeaways
Use the cloud provider service configuration to scaleDesign how to communicate your application componentsBuilt your application to scale up/down roles in production
Windows Azure Storage Service
Windows Azure Storage ServiceA closer look
Fabric
…
Compute
Application
Storage
Blobs Tables Queues
HTTP/ HTTPS
Fundamental Storage Abstractions
Tables – Provide structured storage. A Table is a set of entities, which contain a set of properties
Queues – Provide reliable storage and delivery of messages for an application
Blobs – Provide a simple interface for storing named files along with metadata for the file
Drives – Provides durable NTFS volumes for Windows Azure applications to use (new)
81
Windows Azure StorageTables: Strengths
Massive scalabilityBy effectively allowing scale-out data
Perspective:Applied to the right problem, Windows Azure Tables are a beautiful thing
But they’re not the optimal solution for a majority of data storage scenarios
Amazon, Google, and others provide similar cloud storage mechanismsAll of these can be seen as part of the NOSQL movement
Windows Azure StoragePoints of interest
Storage types:Blobs: store binary dataTables: provide scale-out, entity-based storage
Not relational tables
Queues: allow message-based communication
Access:Data is grouped into storage accountsData can be accessed by:
Windows Azure apps Other on-premises or cloud apps
Windows Azure StorageA closer look at blobs
Options for accessing blobs:From Windows Azure applications or other applications: via RESTful requestsFrom Windows Azure applications: via Windows Azure Drives
Drives make a blob look like an NTFS file system to the application
Blobs can also be used with the Windows Azure Content Delivery Network (CDN)
For faster access from distributed locations to frequently accessed content
Windows Azure StorageA closer look at tables
Name Type Value
Table . . .Table Table
Storage Accounts
Entity . . .Entity Entity
Property PropertyProperty
Windows Azure TablesProvides Structured Storage
Massively Scalable TablesBillions of entities (rows) and TBs of dataCan use thousands of servers as traffic grows
Highly Available & DurableData is replicated several times
Familiar and Easy to use APIADO.NET Data Services – .NET 3.5 SP1
.NET classes and LINQREST – with any platform or language86
Windows Azure StorageTables: Challenges
No SQLA new approach for developers to learnNo aggregates
Access via RESTYou can’t use ordinary ADO.NET
An unfamiliar structure for dataYou can’t easily move relational data in or outSupporting services are scarce, e.g., reporting
No schemaAnd no views
Queue
Windows Azure StorageA closer look at queues
Web Role
ASP.NET, WCF, etc.
Worker Role
main(){ … }
1) Receive work
2) Put message in
queue
3) Get message
from queue
4) Do work
5) Delete message
from queue
Windows Azure Tables
Windows Azure TablesProvides Structured Storage
Massively Scalable TablesBillions of entities (rows) and TBs of dataCan use thousands of servers as traffic grows
Highly Available & DurableData is replicated several times
Familiar and Easy to use APIADO.NET Data Services – .NET 3.5 SP1
.NET classes and LINQREST – with any platform or language90
Table Storage ConceptsEntitiesTablesAccounts
moviesonline
Users
Movies
Email =…Name = …
Email =…Name = …
Genre =…Title = …
Genre =…Title = …
91
Table Data ModelTable
A storage account can create many tablesTable name is scoped by accountSet of entities (i.e. rows)
EntitySet of properties (columns)Required properties
PartitionKey, RowKey and Timestamp
92
Required Entity PropertiesPartitionKey & RowKey
Uniquely identifies an entityDefines the sort orderUse them to scale your application
Timestamp Read onlyOptimistic Concurrency
93
PartitionKey And PartitionsPartitionKey
Used to group entities in the table into partitions
A table partition All entities with same partition key valueUnit of scaleControl entity localityRow key provides uniqueness within a partition
94
PartitionKey(Category)
RowKey(Title)
Timestamp ReleaseDate
Action Fast & Furious … 2009
Action The Bourne Ultimatum
… 2007
… … … …
Animation
Open Season 2 … 2009
Animation
The Ant Bully … 2006PartitionKey(Category)
RowKey(Title)
Timestamp
ReleaseDate
Comedy Office Space … 1999
… … … …
SciFi X-Men Origins: Wolverine
… 2009
… … … …
War Defiance … 2008
PartitionKey(Category)
RowKey(Title)
Timestamp ReleaseDate
Action Fast & Furious … 2009
Action The Bourne Ultimatum
… 2007
… … … …
Animation
Open Season 2 … 2009
Animation
The Ant Bully … 2006
… … … …
Comedy Office Space … 1999
… … … …
SciFi X-Men Origins: Wolverine
… 2009
… … … …
War Defiance … 2008
Partitions and Partition Ranges
Server BTable = Movies
[Comedy- Western)
Server ATable = Movies[Action - Comedy)
95
Server ATable = Movies
Table OperationsTable
CreateQueryDelete
EntitiesInsertUpdate
Merge – Partial UpdateReplace – Update entire entity
DeleteQueryEntity Group Transaction (new)
Table SchemaDefine the schema as a .NET class
97
[DataServiceKey("PartitionKey", "RowKey")] public class Movie { /// <summary> /// Category is the partition key /// </summary> public string PartitionKey { get; set; }
/// <summary> /// Title is the row key /// </summary> public string RowKey { get; set; }
public DateTime Timestamp { get; set; }
public int ReleaseYear { get; set; } public string Language { get; set; } public string Cast { get; set; } }
Table SDK Sample Code
98
StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey( “myaccount", “myKey");string baseUri = "http://myaccount.table.core.windows.net";
CloudTableClient tableClient = new CloudTableClient(baseUri, credentials);
tableClient.CreateTable(“Movies");
TableServiceContext context = tableClient.GetDataServiceContext();CloudTableQuery<Movie> q = (from movie in context.CreateQuery<Movie>(“Movies")
where movie.PartitionKey == “Action" && movie.RowKey == "The Bourne Ultimatum"
select movie).AsTableServiceQuery<Movie>();Movie movieToUpdate = q.FirstOrDefault();
// Update moviecontext.UpdateObject(movieToUpdate);context.SaveChangesWithRetries();
// Add moviecontext.AddObject(new Movie(“Action" , movieToAdd));context.SaveChangesWithRetries();
Key Selection: Things to Consider> Scalability
> Distribute load as much as possible> Hot partitions can be load balanced> PartitionKey is critical for scalability
> Query Efficiency & Speed> Avoid frequent large scans> Parallelize queries
> Entity group transactions (new)> Transactions across a single partition> Transaction semantics & Reduce round trips
99
Key Selection: Case Study 1> Table for listing all movies
> Home page lists movies based on chosen category
100
Movie Listing – Solution 1> Why do I need multiple PartitionKeys?
> Account name as Partition Key > Movie title as RowKey since movie names
need to be sorted> Category as a separate property
> Does this scale?
101
PartitionKey(Account name)
RowKey(Title)
Category …
moviesonline 12 Rounds Action …
moviesonline A Bug’s Life
Animation …
100,000,000 more rows
… … …
moviesonline Office Space
Comedy …
moviesonline Platoon War …
50,000,000 more rows
… … …
moviesonline WALL-E Animation …
Server A
Movie Listing – Solution 1
> Single partition - Entire table served by one server
> All requests served by that single server> Does not scale
PartitionKey(Account name)
RowKey(Title)
Category …
moviesonline 12 Rounds Action …
moviesonline A Bug’s Life
Animation …
100,000,000 more rows
… … …
moviesonline Office Space
Comedy …
moviesonline Platoon War …
50,000,000 more rows
… … …
moviesonline WALL-E Animation …
ClientClient Request
Request
Request
Request
102
Movie Listing – Solution 2
PartitionKey(Category)
RowKey (Title)
Action Fast & Furious
… 10000 more Action movies
Action The Bourne Ultimatum
… 100000 more Action & Animation movies
Animation Open Season 2
… 100000 more Animation movies
Animation The Ant Bully
Comedy Office Space
… 1000000 more Comedy & SciFi movies
SciFi Star Trek
… 100000 more SciFi & War movies
… 100000 more War movies
War Defiance
> All movies partitioned by category> Allows system to load balance hot partitions> Load distributed> Better than single partition
ClientClient Request
Server A
Request
Request
Request
103
Server B
Request
Request
Request
Request
PartitionKey(Category)
RowKey (Title)
Action Fast & Furious
… 10000 more Action movies
Action The Bourne Ultimatum
… 100000 more Action & Animation movies
Animation Open Season 2
… 100000 more Animation movies
Animation The Ant Bully
Comedy Office Space
… 1000000 more Comedy & SciFi movies
SciFi Star Trek
… 100000 more SciFi & War movies
… 100000 more War movies
War Defiance
Key Selection: Case Study 2
> Log every transaction into a table for diagnostics> Scale Write Intensive Scenario> Logs can be retrieved for a given time
range
104
Logging - Solution 1> Timestamp as Partition Key
> Looks like an obvious choice> It is not a single partition as time moves
forward > Append only> Requests to single partition range> Load balancing does not help> Server may throttle
PartitionKey(Timestamp)
Properties
2009-11-15 02:00:01
…
2009-11-15 02:00:11
…
100000 more rows …
2009-11-17 05:40:01
…
2009-11-17 05:40:01
…
80000 more rows …
2009-11-17 12:30:00
…
2009-11-17 12:30:01
…
ApplicationsClientReques
t
Server A
Request
2009-11-17 12:30:01
…
Request
2009-11-17 12:30:02
…
Request
2009-11-17 12:30:03
…
Server B
105
Server A
Server B
PartitionKey(ID_Timestamp)
Properties
01_2009-10-12 05:10:00
…
… …
100000 more rows …
09_2009-11-15 12:31:00
…
… …
20000000 more rows …
10_2009-10-05 05:10:10
…
5000000 more rows …
… …
900000 more rows …
19_2009-11-17 12:20:02
…
ApplicationsClientReques
tReques
tReques
tReques
t
Logging Solution 2 - Distribute "Append Only”
> Prefix timestamp such that load is distributed> Id of the node logging> Hash into N buckets
> Write load is now distributed > Better throughput> To query logs in time range
> Parallelize it across prefix values
15_2009-11-17 12:30:01
…
09_2009-11-17 12:30:22
…
19_2009-11-17 12:30:10
…
01_2009-11-17 12:30:01
…
106
Key Selection: Query Efficiency & Speed> Select keys that allow fast retrieval> Reduce scan range> Reduce scan frequency
107
Single Entity Query
Server A
PartitionKey(Category)
RowKey (Title)
Action Fast & Furious
… 10000 more Action movies
Action The Bourne Ultimatum
… 100000 more Action & Animation movies
Animation Open Season 2
… 100000 more Animation movies
Animation The Ant Bully
Comedy Office Space
… 1000000 more Comedy & SciFi movies
SciFi Star Trek
… 100000 more SciFi & War movies
… 100000 more War movies
War Defiance
Client
Server B
> Where PartitionKey=‘SciFi’ and RowKey = ‘Star Trek’
> Efficient processing> No continuation tokens
108
Request
Result
Client
Server A
Server B
Table Scan Query
Request
PartitionKey(Category)
RowKey(Title)
Rating
Action Fast & Furious 5
… 999 more movies rated > 4
…
… Action and Anim. movies here with rating < 4
…
Animation A Bug’s life 2
… 100 more movies < 4 here
…
Animation The Ant Bully 3
Comedy Are we there yet? 2
… More movies here …
Comedy Office Space 5
… 800000 more movies here
…
Drama A Beautiful Mind 5
… 1200000 more movies here
…
War Defiance 4
Cont.
> Select * from Movies where Rating > 4> Returns Continuation token
> 1000 movies in result set> Partition range boundary
> Serial Processing: Wait for continuation token before proceeding
Request Cont.
Cont.
Request Cont.
Cont.
109
Returns 1000 movies
Partition range boundary hit
Return continuation
Client
Server A
Server B
Make Scans Faster
Request
PartitionKey(Category)
RowKey(Title)
Rating
Action Fast & Furious 5
… More movies here …
Comedy Office Space 5
… More movies here …
Documentary
Planet Earth 4
… More movies here
Drama Seven Pounds 4
Horror Saw 5 3
… More movies here …
Music 8 Mile 2
… More movies here …
SciFi Star Trek 5
… More movies here …
Cont.
> Split “Select * from Movies where Rating > 4” into> Where PartitionKey >= “A” and PartitionKey < “D” and Rating > 4> Where PartitionKey >= “D” and PartitionKey < “I” and Rating > 4> Etc.
> Execute in parallel> Each query handles continuation
Cont.
110
Request
Request
Cont.
Query Speed1. Fast
> Single PartitionKey and RowKey with equality
2. Medium> Single partition but a small range for RowKey> Entire partition or table that is small
3. Slow> Large single scan> Large table scan> “OR” predicates on keys => no query
optimization => results in scan> Expect continuation token for all except in 1
111
Make Queries Faster> Large Scans
> Split the range and parallelize queries> Create and maintain own views that help
queries
> “Or” Predicates> Execute individual query in parallel
instead of using “OR”
> User Interactive> Cache the result to reduce scan
frequency
112
Expect Continuation Tokens – Seriously!> Maximum of 1000 rows in a response> At the end of partition range boundary> Maximum of 5 seconds to execute the
query
113
Entity Group Transactions (EGT) (new)> Atomically perform multiple
insert/update/deleteover entities in same partition in a single transaction
> Maximum of 100 commands in a single transaction and payload < 4 MB
> ADO.Net Data Service> Use SaveChangesOptions.Batch
114
Key Selection: Entity Group Transaction> Case Study
> Maintain user account information> Account ID, User Name, Address, Number of rentals
> Maintain information of checked out rentals> Account ID, Movie Title, Check out date, Due date
> Solution 1 – Maintain two tables – Users & Rentals > Handle Cross table consistency
> Insert into Rentals table succeeds> Update to Users table fails> Queue to maintain consistency
115
Solution 2> Store Account Information and Rental details in
same table> Maintain same PartitionKey to enforce transactions
> Account ID as PartitionKey> Update total count and Insert new rentals using Entity
Group Transaction> Prefix RowKey with “Kind” code: A = Account, R = Rental
> Row key for account info: [Kind Code]_[AccountId]> Row Key for rental info: [Kind Code]_[Title]
> Rental Properties not set for Account row and vice versaPartitionKey(AccountID)
RowKey(Kind_*)
Kind TotalRentals
Name Address CheckOutOn Title DueOn
… … … … … … … … …
Sally A_Sally Account
8 Sally Field
Ann Arbor, MI
Sally R_Jaws Rental 2009/11/16 Jaws 2009/11/20
Sally R_Taxi Rental 2009/11/16 Taxi 2009/11/20
… … … … … … … … …116
Best Practices> Select PartitionKey and RowKey that help scale
> Efficient for frequently used queries> Supports batch transactions> Distributes load
> Distribute “Append only” patterns using prefix to PartitionKey
> Always Handle continuation tokens
> Client can maintain their own cache/views instead of frequent scans> Future Feature - Secondary Index
> Execute parallel queries instead of “OR” predicates
> Implement back-off strategy for retries
117
Windows Azure Queues
Queue are performance efficient, highly available and provide reliable message delivery
Simple, asynchronous work dispatchProgramming semantics ensure that a message can be processed at least once
Access is provided via REST
118
Queue Storage ConceptsMessage
sQueuesAccounts
sally
thumbnailjobs
traverselinks
128 x 128 http://...
256 x 256 http://...
http://...
http://...
119
Account, Queues and MessagesAn account can create many queues
Queue Name is scoped by the account
A Queue contains messagesNo limit on number of messages stored in a queueSet a limit for message expiration
MessagesMessage size <= 8 KBTo store larger data, store data in blob/entity storage, and the blob/entity name in the messageMessage now has dequeue count 120
Queue OperationsQueue
Create QueueDelete QueueList QueuesGet/Set Queue Metadata
MessagesAdd Message (i.e. Enqueue Message)Get Message(s) (i.e. Dequeue Message)Peek Message(s)Delete Message
121
Queue Programming Api
122
CloudQueueClient queueClient = new CloudQueueClient(baseUri, credentials);CloudQueue queue = queueClient.GetQueueReference("test1");
queue.CreateIfNotExist();
//MessageCount is populated via FetchAttributesqueue.FetchAttributes();
CloudQueueMessage message = new CloudQueueMessage("Some content");queue.AddMessage(message);
message = queue.GetMessage(TimeSpan.FromMinutes(10) /*visibility timeout*/);
//Process the message here …
queue.DeleteMessage(message);
21
11
C1
C2
Removing Poison Messages
11
21
340
Producers Consumers
P2
P1
30
2. GetMessage(Q, 30 s) msg 2
1. GetMessage(Q, 30 s) msg 1
11
21
123
10
20
C1
C2
Removing Poison Messages
340
Producers Consumers
P2
P1
11
21
2. GetMessage(Q, 30 s) msg 23. C2 consumed msg 24. DeleteMessage(Q, msg 2)7. GetMessage(Q, 30 s) msg 1
1. GetMessage(Q, 30 s) msg 15. C1 crashed
11
21
6. msg1 visible 30 s after Dequeue30
124
12
11
12
C1
C2
Removing Poison Messages
340
Producers Consumers
P2
P1
12
2. Dequeue(Q, 30 sec) msg 23. C2 consumed msg 24. Delete(Q, msg 2)7. Dequeue(Q, 30 sec) msg 18. C2 crashed
1. Dequeue(Q, 30 sec) msg 15. C1 crashed10. C1 restarted11. Dequeue(Q, 30 sec) msg 112. DequeueCount > 213. Delete (Q, msg1)
12
6. msg1 visible 30s after Dequeue9. msg1 visible 30s after Dequeue
30
125
13
12
13
Best Practices & Summary> Make message processing idempotent
> No need to deal with failures
> Do not rely on order> Invisible messages result in out of order
> Use Dequeue count to remove poison messages> Enforce threshold on message’s dequeue count
> Use message count to dynamically increase/reduce workers
> Use blob to store message data with reference in message> Messages > 8KB> Batch messages> Garbage collect orphaned blobs
126
Storage Summary
127
> Table> Scalable & Reliable Structured Storage System> Partitioning is critical to scalability> Entity Group Transactions (new)
> Queue> Scalable & Reliable Messaging System > Dequeue count returned with message (new)
> Use back-off strategy on retries
> Official Storage Client Library (new)
What is “SQL Azure”?
Review – Conceptual modelSubscription
Used to map service usage to the billing instrumentUsers may have many subscriptions
Logical ServerAkin to SQL Server InstanceUnit of Geo-Location & Billing1:1 Subscription & server
User DatabaseRestricted T-SQL surface areaAdditional catalog views provided e.g. sys.billing, sys.firewall_rules, etc
SQL Services
.NET Services
Windows Azure
Live Services
Applications
Applications
OthersWindows
Mobile
Windows
Vista/XP
Windows
Server
SQL AzureA relational DB in the cloud
SQL Azure Database
Others (Future)
Data Hub
Relational database as a serviceHighly available, automatically maintained
Extension of the SQL Server Data Platform
SQL Azure Database
- Based on SQL Server 2008 R2 engine
Use same tools and data access frameworksSix global datacentersHigh Availability & Redundancy
Reads are completed at the primaryWrites are replicated to a quorum of secondaries
Replica 1
Replica 2
Replica 3
DB
Single LogicalDatabase
Multiple PhysicalReplicas
Single Primar
y
MultipleSecondaries
Extending SQL Server Data Platform to the Cloud
Database
Data Sync
Reference
Data
Symmetric Programming Model
Data Hub Aggregation
• Initial services – core RDBMS capabilities with SQL Azure Database, Data Sync
• Future Offerings• Additional data platform capabilities: Reporting, BI• New services: Reference Data
The New SQL Data Services
Familiar SQL Server relational modelUses existing APIs & toolsBuilt for the Cloud with availability and scaleAccessible to all from PHP, Ruby, and Java
Clear Feedback: “I want a database in the Cloud”
Focus on combining the best features of SQL Server running at scale with low friction
The Evolution of SDS
Evolv
es
SDS Next
TDS + TSQL Model
Web App
SQL Client*
Windows Azure
BrowserApplicatio
n
Application
REST Client
REST (Astoria)
ADO.Net + EF
Application
SQL Client*
Cloud
HT
TP
HT
TP
+R
ES
T
TD
S
* Client access enabled using TDS for ODBC, ADO.Net, OLEDB, PHP-SQL, Ruby, …
Data
Cen
ter
ODBC, OLEDB, ADO.Net PHP, Ruby, …
SDS Current
REST/SOAP + ACE Model
Web App
REST Client
Windows Azure
BrowserApplicatio
n
Application
REST Client
HT
TP
HT
TP
+R
ES
T
Data
Cen
ter
Cloud
SQL Azure
Windows Azure
Applications
Applications
OthersWindows
SQL Azure Database
Others (Future)
SQL Azure
Windows Azure AppFabric
SQL Azure Database
Others (Future)
SQL Azure DatabaseAn Illustration
Database
Database
Database
SQL Azure Database
TDS
Application
Database
Database
Database
Application
ApplicationDatabase
SQL Azure Database
SQL Azure DatabaseUsing one or multiple databases
Max database size is 50
GB
SQL Azure Network TopologyApplication
InternetAzure Cloud
LB
TDS (tcp)
TDS (tcp)
TDS (tcp)
Applications use standard SQL client libraries: ODBC, ADO.Net, PHP, …
Load balancer forwards ‘sticky’ sessions to TDS protocol tier
Security Boundary
SQL SQL SQL SQL SQLSQL
Gateway Gateway Gateway Gateway Gateway Gateway
Gateway: TDS protocol gateway, enforces AUTHN/AUTHZ policy; proxy to CloudDB
Scalability and Availability: Fabric, Failover, Replication, and Load balancing
TDS Gateway
TDS ListenerCapability negotiationTDS Packet inspectionSecurity
Logical->Physical mapping via metadata catalogEnabler for multi-tenet capabilitiesIsolation layer
TDS Gateway LayeringGateway Process
TDS EndpointAdminSvc Endpoint
Protocol Parser
Provisioning Endpoint
Business Logic Services
Connection Mgmt
SQL SQL SQL SQL SQLSQL
Scalability and Availability: Fabric, Failover, Replication, and Load balancing
Provisioning
SubscriptionCoordinated across all Azure servicesExecuted in parallel w/retries
ServerMay occur between data centersPoint where Geo-location is established
DatabaseAlways occurs within a single data centerCross node operations executed during this process e.g. add new db to sys.databases on the master
Server ProvisioningDriven by administrator PortalProvision request is sent to Gateway
Metadata catalog entry createdDNS record (CNAME) created within LiveDNS serviceMaster DB created
On completion metadata catalog updated
Datacenter (Sub-Region)
SQL Azure Server Provisioning
Customer Browser
Portal LB
1
Front-end Node
Live DNS ClusterLive DNS
Svc
2 4
Gateway
Backend Node
Mgmt. Service
s
SQL Server
Fabric
Backend Node Backend Node
Mgmt. Service
s
SQL Server
Fabric
Mgmt. Service
s
SQL Server
Fabric
Front-end Node
Gateway
Front-end Node
Admin Portal
Front-end Node
Admin Portal
3
Gateway LB5
6
7
Database Provisioning
Gateway performs stateful TDS packet inspection
Picks out subset of messagesParses out args for create database
Makes entry into Gateway metadata catalogUnused replica set located and reservedReplica set (UserDB) is prepped for use Metadata catalog is updated
SQL Azure Database provisioningTDS Gateway
Front-end NodeProtocol Parser
Gateway Logic
Master Cluster
Master Node
Master Node Components
1
2
3
5 67
Scalability and Availability: Fabric, Failover, Replication, and Load balancingScalability and Availability: Fabric, Failover, Replication, and Load balancing
4
8
TDS Session
Backend Node 1
SQL InstanceSQL DB
Backend Node 2
SQL InstanceSQL DB
Backend Node 3
SQL InstanceSQL DB
SQL Azure Login Process
Login request arrives at the GatewayGateway locates MasterDb & UserDb replica setsCredentials are validated against MasterDbTDS session is opened to UserDB and requests are forwarded
SQL Azure Login ProcessTDS GatewayFront-end Node
Protocol Parser
Gateway Logic
Global Partition Map
Master Node
Master Node Components
1
2
4 5
6
Scalability and Availability: Fabric, Failover, Replication, and Load balancingScalability and Availability: Fabric, Failover, Replication, and Load balancing
3
7
TDS Session
Backend Node 1
SQL InstanceSQL DB
Backend Node 2
SQL InstanceSQL DB
Backend Node 3
SQL InstanceSQL DB
8
Service Resilience
ProvisioningState machines used to coordinate activities across node (and datacenter) boundariesFailed provisioning attempts cleaned automatically after 10 minutes
LoginFailovers during the login will be transparent (<30 seconds)Metadata catalog refresh occurs automatically
Active SessionSurface as connection drops (due to state)
Monitoring Service HealthMetrics
Cluster wide performance counters gather key metrics on the serviceUsed to alert Operations to issues before they become a problem
Early warning systemCode issuesCapacity warnings
HealthExercises the service routinely looking for problemsWhen issues are encountered runs deep diagnostics
Network connectivity at the node levelValidate all dependent services (Live DNS, Live ID, etc)
Monitoring from other MSFT DC’sValidates accessibility from multiple geographic locationsAlerts fired automatically when test jobs fail
Security/Attack ConsiderationsService
Secure channel required (SSL)Denial Of Service trend trackingPacket Inspection
Server IP allow list (Firewall) Idle connection cullingGenerated server names
DatabaseDisallow the most commonly attacked user id’s (SA, Admin, root, guest, etc) Standard SQL Authn/Authz mode
What’s New In SQL Azure CTPEnhancements
SQL Azure Database
SQL Azure Reporting CTPReporting and BI on SQL Azure databasesBased on SQL Server Reporting Services
SQL Azure Data Sync CTP2Synchronize SQL Azure databasesSynchronize SQL Azure with on-premises SQL Server
Windows Azure Platform – Developer Portal
Enhanced user experience and reportingDatabase manager for SQL Azure
What’s New In SQL Azure CTPEnhancements
SQL Azure Database
SQL Azure Reporting CTPReporting and BI on SQL Azure databasesBased on SQL Server Reporting Services
SQL Azure Data Sync CTP2Synchronize SQL Azure databasesSynchronize SQL Azure with on-premises SQL Server
Windows Azure Platform – Developer Portal
Enhanced user experience and reportingDatabase manager for SQL Azure
What’s New In SQL Azure CTPEnhancements
SQL Azure Database
SQL Azure Reporting CTPReporting and BI on SQL Azure databasesBased on SQL Server Reporting Services
SQL Azure Data Sync CTP2Synchronize SQL Azure databasesSynchronize SQL Azure with on-premises SQL Server
Windows Azure Platform – Developer Portal
Enhanced user experience and reportingDatabase management
SQL Azure Reporting CTP
“Introduction to SQL Azure Reporting”
Web Role
Reporting
Features:
Based on SQL Server Reporting ServicesInteractive and tabular reportingData visualizations: charts, graphs, mapping, gauges
SQL Azure Database data sourcesUtilizes BI Developer Studio (free) to author reportsExport to Excel, PDF, CSV formats
Core scenarios:
Operational reporting on SQL Azure dataEmbed reports into Windows Azure or on-premises applications
What’s New In SQL AzureEnhancements
SQL Azure Database
SQL Azure Reporting CTPReporting and BI on SQL Azure databasesBased on SQL Server Reporting Services
SQL Azure Data Sync CTP2Synchronize SQL Azure databasesSynchronize SQL Azure with on-premises SQL Server
Windows Azure Platform – Developer Portal
Enhanced user experience and reportingDatabase management
SQL Azure Data Sync CTP2
Elastic ScaleService scales as resources requirements grow
No-Code Sync ConfigurationEasily define data to be synchronized
Schedule SyncChoose how often data is synchronized
Conflict HandlingHandle issues where same data is changed in multiple locations
Logging and MonitoringAdministration capabilities for tracking data and monitoring potential issues
“Introduction to SQL Azure Data Sync”
CTP 1
CTP 2
On Premises Windows Azure
Data Sync Service
SQL Azur
e
TDS
SQL Serve
r
Local Agent
SQL Server Sync
Provider
SQL Server Proxy
Provider
Sync Orchestrator
SQL ServerProvider
Sync Orchestrator
HTTPS
SQL Azure Data Sync – A Closer LookCTP 2
SQL Azure Data Sync – Example Use Cases
Move workloads in stages preserving existing infrastructureMove part of the application and sync its data
Meet compliance and regulationsControl data synchronized off-premises
Enable scale-out read or read/writeMultiple synchronized databases for scalability
Preserve data – geo replication of data
Enable new scenariosSpanning enterprise, cloud and remote offices/retail stores
SQL Azure Data Sync – Roadmap
On-Premises (Headquarters)
Syn
c
Sync
Remote OfficesData Sync Service For SQL Azure
Retail Stores
Sync Sync
Sync
SQL Azure
Database
Sync Sync Now
CTP2
– E
nd
of
CY1
0
New SQL Azure Usage Scenarios
Web Role
Reporting
Data SyncFully featured
Windows Azure PlatformApplication
New SQL Azure Usage Scenarios
Web Role
Reporting
Data Sync
Fully featured Windows Azure Platform
Application
Data Sync
Synchronize multiple on-premises SQL Server databases in different
locations
Datacenter
Corporate Office
Branch Office or Retail
Geo-replication
of data across
Windows Azure
Platform datacente
rs
Globally available,cloud & on-premisesdata synchronization
RoadmapNow
Visit www.microsoft.com/sqlazure to register for upcoming CTP access
2010New Windows Azure Developer Portal; Database ManagerLimited CTPs of Data Sync CTP2, Reporting CTPWatch for PDC Announcements; visit the SQL Azure blog and website
2011Backup & RestoreSQL Azure ReportingSQL Azure Data Sync
Windows Azure AppFabricInfrastructure in the cloud
SQL Azure
Windows Azure
Applications
Applications
OthersWindows
Service Bus
?Access Control
Windows Azure AppFabric
Access Control
Service Bus
Service Bus
Registry
4) Invoke operation on Service Bus
endpoint
3) Discover Service Bus endpoint
Client (On-
premises or cloud)
WCF Service(On-premises)
2) Expose Service Bus endpoint
Illustrating Service Bus
5) Invoke operation on service endpoint
1) Register service endpoint
Windows Azure Platform PricingA summary (in US dollars)Compute: $0.12 to $0.96/hour for each
role instance depending on instance size Storage:
Windows Azure blobs and tables: Data: $0.15/GB per monthAccess: $0.01/10,000 operations
SQL Azure relational:$9.99/month per GB
Bandwidth: Americas/Europe: $0.10/GB in, $0.15/GB outAsia/Pacific: $0.30/GB in, $0.45/GB out
Service Level AgreementsKey points: Windows Azure compute
When you deploy two or more role instances in different fault and upgrade domains, your Internet-facing roles will have external connectivity at least 99.95% of the timeMicrosoft will detect within two minutes when a role instance’s process is not running and initiate corrective action
Service Level AgreementsKey points: Windows Azure storage
At least 99.9% of the time, Microsoft will successfully process correctly formatted requests to add, update, read and delete dataAt least 99.9% of the time, your storage accounts will have connectivity to Microsoft’s Internet gateway
Service Level Agreements Key points: SQL Azure database
SQL Azure will maintain a Monthly Availability of 99.9% during a calendar month. Monthly Availability percentage for a specific customer database is the ratio of the time the database was available to customer to the total time in a month. An interval is marked as unavailable if the customer’s attempts to connect to a database are rejected by the SQL Azure gateway.
Using the Windows Azure Platform: Scenarios
Applying Azure (1) Some characteristics of Azure-appropriate applications
Apps that need massive scaleExample: A Web 2.0 application
Apps that need high reliabilityExample: A Software as a Service (SaaS) application
Apps with variable loadExample: An on-line ticketing application
Apps with a short or unpredictable lifetime
Example: An app created for a marketing campaign
Applying Azure (2) Some characteristics of Azure-appropriate applicationsApps that do parallel processing
Example: A financial modeling applicationApps that must fail fast or scale fast
Example: Start-upsApps that don’t fit well in an organization’s data center
Example: A business unit that wishes to avoid its IT department
Apps that can benefit from external storage
Example: An application that archives data
Blobs
Building on AzureA non-Azure app using Windows Azure storage
SQL Azure
On-Premises or
Hosted Application
Web RoleInstance
Tables
Building on Azure A massively scalable web app exposed on the public Internet
Users
BlobsQueuesTables
Users
Worker Role
Instance
Web RoleInstance
Building on Azure A massively scalable web app with background processing
Web RoleInstance
SQL Azure
Users
Building on Azure A web app with relational storage
Web RoleInstance
SQL Azure
Users
Building on Azure A web app using cloud and on-premises data
Service Bus
On-premises Database
User
Blobs
Web RoleInstance
Queues
Worker Role
Instance
Building on Azure A parallel processing application
The Windows Azure Platform
AppFabric
Developer ExperienceUse existing skills and tools.
Compute Storage Management
Relational data Management Connectivity Access control
platform
CDN
Conclusions
Cloud platforms are hereMicrosoft is placing a big bet with the Windows Azure platform
A new world is unfoldingPrepare to be part of it
Related ContentComunidad Windowshttp://comunidadwindows.orghttp://www.slideshare.net/ecastromhttp://ecastrom.blogspot.com
Introducing the Windows Azure Platform
http://go.microsoft.com/fwlink/?LinkId=158011
Introducing Windows Azurehttp://go.microsoft.com/?linkid=9682907
Presentation SourcesResources
SQL Azure website: http://www.microsoft.com/sqlazure
Blog: http://blogs.msdn.com/sqlazure
Dev Center: http://msdn.microsoft.com/windowsazure/sqlazure
Frameworks:http://msdn.microsoft.com/data
An Introduction to the Windows Azure PlatformDr. Eduardo Castro MartínezMicrosoft [email protected]
http://comunidadwindows.orghttp://ecastrom.blogspot.com
© 2010 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.