TH03 - Tips & Tricks on TH03 - Tips & Tricks on Architecting Windows Azure for Architecting Windows Azure for
CostsCosts
Nuno GodinhoNuno GodinhoCloud Solution Architect
Level: Introdutory
About MeAbout Me
Nuno Filipe GodinhoCloud Solution Architect @ Aditi
Windows Azure MVP
http://msmvps.com/blogs/nunogodinho
Twitter: @NunoGodinho
AgendaAgenda
• Compute• Bandwidth, Storage & Transactions• SQL Azure• Customer Awareness• Developer Awareness• Scenarios• Key Takeaways
COMPUTECOMPUTE
Limiting virtual machine countLimiting virtual machine count
• Do you need full capacity 24/7?– Probably not, reduce # cpu’s when not used
• Use Windows Azure Diagnostics API & Windows Azure Management API to scale (semi) automatically– 24 hours x 10 small instances = $28.80/day
vs.
– 16 hours x 10 small instances+ 8 hours x 4 extra-small instances = $20.48/day
Limiting virtual machine countLimiting virtual machine countDon’t ForgetDon’t Forget
• Staging environment costs
• When not in use, undeploy the staging environment– 24 hours x 5 small instances = $14.4/day
Workers need work!Workers need work!• Out of the box, 1 worker role = 1 task• Why not spin up processes or threads?• Example: You want 20 tasks running
– Option1: 1 task per worker = 20 workers = ~ 42 EUR/day
– Option2: 2 tasks per worker = 10 workers = ~ 21 EUR/day
– Option3: 10 tasks per worker = 2 workers = ~ 4,2 EUR/day
– Which means ~ 42 EUR / day vs. ~ 4,2 EUR / day = 90% savings
• “Generic workers”: http://research.microsoft.com/en-us/downloads/76537edf-9b77-4664-b76b-cf51be506a0d/
• DON’T FORGET: 2 instances minimum for the SLA
Do you need all of that?Do you need all of that?
• 1 XL = 2 L = 4 M = 8 S (regarding costs)• No need for this memory / disk space?
– Start small
– Scale up/down more granularly
IMPORTANTIMPORTANT
• Billing per reserved VM– Reserved = deployed / running
• Billing in staging and production– 2 instances staging + 2 instances production = 4
instances billed
• Undeploy your VM if not needed– Undeploy staging every evening
– Automate this
Work per hourWork per hour
• Billed per clock hour / CPU• Keep instances running at least until x:55• Don’t deploy at x:50, instead deploy at
x:55– Deploy at x:50 and undeploy at x+1:10
– 2 hours billed!
• Don’t deploy every minute– = 60 instance hours per hour!
– Don’t do continuous deployment for every build, but accumulate
BANDWIDTH, STORAGE & BANDWIDTH, STORAGE & TRANSACTIONSTRANSACTIONS
Bandwidth?Bandwidth?
• Simple metric– Use more = pay more
– Use less = pay less
When am I using bandwidth?When am I using bandwidth?
• Data transfers in/out Windows Azure– Compute
– Blobs
– AppFabric
– SQL Azure
• Data transfers between Windows Azure regions– E.g. North America – Europe
– IMPORTANT: Keep compute & storage in the same region!
Content Delivery NetworkContent Delivery Network
• Content distributed across 24 Node servers across the world
• Storage costs = Storage costs for public containers x 2
• Bandwidth costs = # data in public containers x # servers– Can be limited by setting cache headers
Data StorageData Storage
• Data you store (non SQL)– Tables
– Blobs
– Queues
• Per GB / month
• Average over full month– 10 GB stored for 15 days, 0 GB stored for 15 days = 5
GB stored for 1 month
TransactionsTransactions
• 1 transaction = 1 storage operation• Billed per 10.000• Example: Checking a queue every second
from 2 workers– 172.800 transactions / day
• Use a back-off mechanism– No data? Wait a second
– Again no data? Wait two seconds
– Etc.
TransactionsTransactions
• Use Service Bus Queues and Notifications
• Serving 100 images from blob storage– High traffic app high # transactions
– Choose wisely between blob storage and compute
Diagnostics monitorDiagnostics monitor
• Writes data to storage account
• Does not clean up
• Write often = # transactions
• Write less = lag in diagnostic data
SQL AZURESQL AZURE
Database editionsDatabase editions
Database Size Price Per Database Per Month
0 to 100 MB Flat $4.995
Greater than 100 MB to 1 GB Flat $9.99
Greater than 1 GB to 10 GB$9.99 for first GB, $3.996 for each additional GB
Greater than 10 GB to 50 GB$45.954 for first 10 GB, $1.998 for each additional GB
Great than 50 GB to 150 GB$125.874 for first 50 GB, $0.999 for each additional GB
Billing nuancesBilling nuances
• Based on peak DB size / day• Averaged over 1 month• Actual database edition size used is billed
• Examples– 0.9 GB in a 5 GB web edition costs 1 GB
(= $9.99)
– 1.1 GB in a 5 GB web edition costs 5 GB(= $49.95)
Tables & indexes cost moneyTables & indexes cost money
• Be careful with them• Only define indexes needed• Indexing every column & not using it may
be a waste of money
• Example– If an index does not add speed, lose it
– If the data relational, go NoSQL
– Table with 1 GB of “static data” on SQL Azure = $ 9.99, on table/blob storage it costs $ 0.12...
CUSTOMER AWARENESSCUSTOMER AWARENESS
Customer awarenessCustomer awareness
• Yes, you can have all you want• Yes, you can have it your way
BUT...
Discuss OpEx!Discuss OpEx!
• Cost-analyze the requirements• Discuss implications & alternatives with
stakeholders– Pay more for user experience?
– Cheaper alternative experience?
– Clever solutions?
• Review the options you considered• Write them down & sign off
– Or you will return to these discussions again and again
DEVELOPER AWARENESSDEVELOPER AWARENESS
A code snippet...A code snippet...
if (Session["culture"].ToString() == "en-US") { // .. set to English ...}
if (Session["culture"].ToString() == "nl-BE") { // .. set to Dutch ...}
string culture = Session["culture"].ToString();if (culture == "en-US") { // .. set to English ...}
if (culture == "nl-BE") { // .. set to Dutch ...}
Develope
rs
directly
impact
costs!
Develope
rs
directly
impact
costs!
SCENARIOSSCENARIOSAnalysing Real World Scenarios
SCENARIO 1SCENARIO 1Static WebSite
Scenario 1 – Static WebSiteScenario 1 – Static WebSite
What to use? Options?Blob Storage
Compute
Option 1: Blob StorageWe pay for?
Storage SpaceTransactionsBandwidth In/Out
Option 2: ComputeWe pay for?
Compute HoursBandwidth In/Out
Scenario 1 – Static WebSite – v1Scenario 1 – Static WebSite – v1
Number of Concurrent Users: 10 / second
WebSite Storage Space: 0,5 GB
Average Number of files served per User: 5
Average file size: 200 KB
Option 1: Blob StorageWe pay for?
Storage Space = 0,5 GB * 0,15 = 0,075 USDTransactions = (10 * 5 * 60 * 24 * 30 ) / 10k * 0,01 = 2,16 USDBandwidth In/Out = (10 * 5* 60 * 30 * 0,0002) * 0,15 = 2,7 USDTotal Costs ~ $ 5
Option 2: ComputeWe pay for?
Compute Hours = (2 * 24 * 30) * 0,12 = 172,8 USDTransactions = (1 * 5 * 60 * 24 * 30 ) / 10k * 0,01 = 0,216 USDBandwidth In/Out = (10 * 5* 60 * 30 * 0,0002) * 0,15 = 2,7 USDTotal Costs ~ $ 176
Scenario 1 – Static WebSite – v2Scenario 1 – Static WebSite – v2
Number of Concurrent Users: 1000 / second
WebSite Storage Space: 0,5 GB
Average Number of files served per User: 5
Average file size: 200 KB
Option 1: Blob StorageWe pay for?
Storage Space = 0,5 GB * 0,15 = 0,075 USDTransactions = (1000 * 5 * 60 * 24 * 30 ) / 10k * 0,01 = 216 USDBandwidth In/Out = (1000 * 5* 60 * 30 * 0,0002) * 0,15 = 270 USDTotal Costs ~ $ 487
Option 2: ComputeWe pay for?
Compute Hours = (2 * 24 * 30) * 0,12 = 172,8 USDTransactions = (1 * 5 * 60 * 24 * 30 ) / 10k * 0,01 = 0,216 USDBandwidth In/Out = (1000 * 5* 60 * 30 * 0,0002) * 0,15 = 270 USDTotal Costs ~ $ 444
Scenario 3 – Static WebSite – v3Scenario 3 – Static WebSite – v3
Number of Concurrent Users: 2000 / second
WebSite Storage Space: 0,5 GB
Average Number of files served per User: 5
Average file size: 200 KB
Option 1: Blob StorageWe pay for?
Storage Space = 0,5 GB * 0,15 = 0,075 USDTransactions = (2000 * 5 * 60 * 24 * 30 ) / 10k * 0,01 = 432 USDBandwidth In/Out = (2000 * 5* 60 * 30 * 0,0002) * 0,15 = 540 USDTotal Costs ~ $ 973
Option 2: ComputeWe pay for?
Compute Hours = (2 * 24 * 30) * 0,12 = 172,8 USDTransactions = (1 * 5 * 60 * 24 * 30 ) / 10k * 0,01 = 0,216 USDBandwidth In/Out = (2000 * 5* 60 * 30 * 0,0002) * 0,15 = 540 USDTotal Costs ~ $ 714
SCENARIO 2SCENARIO 2Application Data Storage
Scenario 2 – Application Data Scenario 2 – Application Data StorageStorage
• What to use? Options?– SQL Azure
– Table Storage
– SQL Azure + Table Storage
• Assumptions– Number of Concurrent Users: 100 / second
– Database Size: 10 GB
– Average response size: 200 KB
– Reference Data Percentage: 20 %
– History Data Percentage: 30 %
– Simple Indexed Data Percentage: 40%
– Highly searched Data Percentage: 10%
Scenario 2 – Application Data Scenario 2 – Application Data Storage – v1Storage – v1
• Option 1: SQL Azure– We pay for?
Database Storage = $ 45.954Bandwidth Out = (100 * 60 * 30 * 0.0002) * 0,15
= $ 5.4Total Cost: $ 51.354
Scenario 2 – Application Data Scenario 2 – Application Data Storage – v2Storage – v2
• Option 2: Table Storage– We pay for?
Storage Space = 10 GB * 0,15 = $ 1.5Transactions = (100 * 60 * 24 * 30 ) / 10k * 0.01
= $ 4,32Bandwidth Out = (100 * 60 * 30 * 0.0002) * 0.15
= $ 5.4Total Costs = $ 11.22
Scenario 2 – Application Data Scenario 2 – Application Data Storage – v3Storage – v3
• Option 3: SQL Azure + Table Storage– We pay for?
SQL AzureDatabase Storage =1 GB = $ 9.99
Bandwidth Out = (100 * 60 * 30 * 0.0002) * 0.15 = $ 5.4
Table StorageStorage Space = 9 GB * 0.15 = $ 1.35
Transactions = (100 * 60 * 24 * 30 ) / 10k * 0.01 = $ 4.32
Bandwidth Out = (100 * 60 * 30 * 0.0002) * 0,15 = $ 5.4
Total Costs = $ 26.46
KEY TAKEAWAYSKEY TAKEAWAYSWhat to remember?
Key TakeawaysKey Takeaways
• Cloud pricing isn’t more complex– Just “different”
• Every component has own characteristics• Requirements impact costs• Developers impact costs• Windows Azure pricing model can improve
code quality
• But don’t over-analyze!
ResourcesResources
• Starting point:– http://www.windowsazure.com
• Steve Marx:– http://blog.smarx.com
• Cloud Cover Show– http://channel9.msdn.com/Shows/Cloud+Cover
• Special Thanks to Maarten Balliauw– http://blog.maartenballiauw.be
THANK YOUTHANK YOUNuno GodinhoNuno Godinho
Cloud Solution Architect @ Aditi
[email protected]: @NunoGodinho
http://msmvps.com/blogs/nunogodinho
Top Related