Architecting Scalable Web ApplicationsClint EdmonsonMicrosoft [email protected]
Let’s get started…
So you have a scalability problem?
Congratulations!
Scalability <> Performance
Scalability is how your application behaves as the number of users increases
Performance is how your application behaves for each user
Transactions /second
CPU
U
tiliza
tion
Number of Requests
Cost
per
Req
uest
Load <> Stress
Load is how many simultaneous users your application can serve
Stress is how well your application behaves when resources become limited
Where are the scalability limits?
NetworkDatabaseWeb serverCode
Pattern: Nickel Defense
Pattern: Scale Up
PATTERN: Scale Out Load Balancer
PATTERN: Specialize
Web Services Image ServerWeb Application
PATTERN: Partition the database 1
Reference Transaction
PATTERN: Partition the database 2
Write Copy
Read CopyRead Copy
PATTERN: Partition the application
msdn.microsoft.com technet.microsoft.commicrosoft.com
Balance the computing load
Offload the work
Web
Worker
NoSQL
Distribute globally
Cache responsibly
Plan for concurrency
Anti-patterns
• Blaming another department• “It works great on my machine!”• Attempting to maintain state• Spending all your time looking at the code• Caching everything (twice!)• Services calling services– especially across the network or networks
Question: “Scale Later”?
Worker(Compute)
Worker(Compute)
Web(Compute)
Web(Compute)
Web(Compute)
Azure Storage(Queues)
(Blobs)(Tables)
SQL Azure(DB)
Worker(Compute)
Azure: Core Services
Your Next Step
http://aka.ms/TryAzurehttp://aka.ms/AzureBenefitshttp://aka.ms/WindowsAzureSDK
Thank You!
Clint EdmonsonMicrosoft [email protected]