6. Cloud Benefits
Internal IT Managed services The cloud
Capital investment Significant Moderate Negligible
On‐going costs Moderate Significant Based on Usage
Provisioning time Significant Moderate None
Scalability Limited Moderate Flexible
Staff expertise
requirements
Significant Limited Moderate
Reliability Varies High
Moderate to High
8. Func2onal Programming
What is functional programming?
Facilitates Parallelism
Treat computation as the evaluation of functions
Avoids state and mutable data, which greatly simplifies
parallel execution
Runtime handles parallelism instead of through explicit
coding
Take better advantage of growing # of cores available to
you
Functional decomposition may be a better answer to
leveraging the architecture of tomorrow
Beginning to think this way needs to start now
17. Demo
Show the portal deployments
Explain web and worker roles
Show client doing volatilities
Explain parts of the application and interop with Azure
Show / delete existing blobs
Calculate some volatilities
Show messages received, blobs being created
Show data in one of the blobs
26. Version 3.0 Outcome
Same benefits of 2.5
No need for SQL Server
Blobs solved REST problems
Migration of data to Azure blobs did take took some
work and redesign
Physical partitioning of data into blobs
Indexes to data also stored in blobs
Binary serialization of objects into blobs
27. Code Review
Lets look at some code
WCF service API
Silverlight service bridge
Web role – looks just like ASP.NET and Silverlight
Silverlight – show what happens when you press “start”
WCF service – show hooks to azure (storage accounts)
Worker role, show how processing is done
29. Lessons Learned
Queues and Asynchronicity
Queues work on a different model than MSMQ
Retrieve with a delete window and then explicitly delete
Polling model (no blocking)
Get used to asynchronous processing
Scalability is obtained through asynchronous model
Queue based communication between web and worker roles
Asynchronous communications from Silverlight to Azure
30. Lessons Learned
EC2 vs Azure
Dynamic allocation in Azure is not as good as with EC2
Ec2 billing is by the hour, so not too good for quick needs
.NET code was very portable between EC2 and Azure
Watch the bandwidth between storage zones
Management is difficult in both
But Azure management is easier than EC2
Azure monitors your roles and restarts them (EC2 doesn’t)
EC2 feels a lot heavier than Azure
Seems great for appliances
But if you are doing .NET, best to go Azure
32. Lessons Learned
Programming
URLs for WCF services must be rewritten in the various
environments
.NET code for web and workers is very similar to
normal .NET code
Lack of full trust can be a pain; many libraries caused failures
F# needs to be linked into the solution due to not being
available in the Azure GAC / full trust
Can’t talk directly to Azure easily from Silverlight
Debugging is difficult: logs, writing to queues, or to SQL
34. Economics
EC2
Ran a subset of the overall task
Used five instances as baseline
100 units of work
50 volatility blocks of work
50 correlation blocks of work
Each instance handled 10 blocks of work for both volatility
and correlation
Volatilities took 6.9 minutes per block
Correlations took 4.6 minutes per block
40. Conclusions
What is the scalability of cloud architecture?
This problem was linearly scalable; double the nodes,
roughly half the time
Cost structure – is it economical?
The numbers look good compared to investing in capital and
humans
Make sure you don’t get billed for non‐utilized time
Bandwidth still costs you, and could be significant
Watch for minimum billing times
How does the solution differ from a non‐cloud solution?
With Azure, it’s very similar coding (more in lessons
learned)
But you must learn to partition the problem set for scale out