tips & tricks on architecting windows azure for costs

42
TH03 - Tips & Tricks on TH03 - Tips & Tricks on Architecting Windows Azure for Architecting Windows Azure for Costs Costs Nuno Godinho Nuno Godinho Cloud Solution Architect Level: Introdutory

Upload: nuno-godinho

Post on 14-Dec-2014

3.218 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tips & Tricks On Architecting Windows Azure For Costs

TH03 - Tips & Tricks on TH03 - Tips & Tricks on Architecting Windows Azure for Architecting Windows Azure for

CostsCosts

Nuno GodinhoNuno GodinhoCloud Solution Architect

Level: Introdutory

Page 2: Tips & Tricks On Architecting Windows Azure For Costs

About MeAbout Me

Nuno Filipe GodinhoCloud Solution Architect @ Aditi

Windows Azure MVP

[email protected]

http://msmvps.com/blogs/nunogodinho

Twitter: @NunoGodinho

Page 3: Tips & Tricks On Architecting Windows Azure For Costs

AgendaAgenda

• Compute• Bandwidth, Storage & Transactions• SQL Azure• Customer Awareness• Developer Awareness• Scenarios• Key Takeaways

Page 4: Tips & Tricks On Architecting Windows Azure For Costs

COMPUTECOMPUTE

Page 5: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 6: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 7: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 8: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 9: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 10: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 11: Tips & Tricks On Architecting Windows Azure For Costs

BANDWIDTH, STORAGE & BANDWIDTH, STORAGE & TRANSACTIONSTRANSACTIONS

Page 12: Tips & Tricks On Architecting Windows Azure For Costs

Bandwidth?Bandwidth?

• Simple metric– Use more = pay more

– Use less = pay less

Page 13: Tips & Tricks On Architecting Windows Azure For Costs

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!

Page 14: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 15: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 16: Tips & Tricks On Architecting Windows Azure For Costs

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.

Page 17: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 18: Tips & Tricks On Architecting Windows Azure For Costs

Diagnostics monitorDiagnostics monitor

• Writes data to storage account

• Does not clean up

• Write often = # transactions

• Write less = lag in diagnostic data

Page 19: Tips & Tricks On Architecting Windows Azure For Costs

SQL AZURESQL AZURE

Page 20: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 21: Tips & Tricks On Architecting Windows Azure For Costs

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)

Page 22: Tips & Tricks On Architecting Windows Azure For Costs

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...

Page 23: Tips & Tricks On Architecting Windows Azure For Costs

CUSTOMER AWARENESSCUSTOMER AWARENESS

Page 24: Tips & Tricks On Architecting Windows Azure For Costs

Customer awarenessCustomer awareness

• Yes, you can have all you want• Yes, you can have it your way

BUT...

Page 25: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 26: Tips & Tricks On Architecting Windows Azure For Costs

DEVELOPER AWARENESSDEVELOPER AWARENESS

Page 27: Tips & Tricks On Architecting Windows Azure For Costs

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!

Page 28: Tips & Tricks On Architecting Windows Azure For Costs

SCENARIOSSCENARIOSAnalysing Real World Scenarios

Page 29: Tips & Tricks On Architecting Windows Azure For Costs

SCENARIO 1SCENARIO 1Static WebSite

Page 30: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 31: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 32: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 33: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 34: Tips & Tricks On Architecting Windows Azure For Costs

SCENARIO 2SCENARIO 2Application Data Storage

Page 35: Tips & Tricks On Architecting Windows Azure For Costs

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%

Page 36: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 37: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 38: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 39: Tips & Tricks On Architecting Windows Azure For Costs

KEY TAKEAWAYSKEY TAKEAWAYSWhat to remember?

Page 40: Tips & Tricks On Architecting Windows Azure For Costs

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!

Page 41: Tips & Tricks On Architecting Windows Azure For Costs

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

Page 42: Tips & Tricks On Architecting Windows Azure For Costs

THANK YOUTHANK YOUNuno GodinhoNuno Godinho

Cloud Solution Architect @ Aditi

[email protected]: @NunoGodinho

http://msmvps.com/blogs/nunogodinho