cReady: chitecting for the cloud
May 13, 2015
ArcReady:Architecting for the cloud
About ArcReady…About ArcReady…
• A forum for aspiring and practicing architects to discuss industry trends
• An overview of Microsoft’s roadmap as it relates to software architecture
• A mechanism to solicit your feedback • An opportunity to showcase the work you do!
Discussion Encouraged
SESSION 1
Architecting for the cloud
Flashback to previous ArcReady
TimesharingTimesharing
Client-ServerClient-Server
Application Service Providers (ASP)
Software as a Service
Software + Services
“Packaged”Application
An application that I buy “off the
shelf” and run myself
“Home Built”Application
An application that I develop and
run myself
Build
vs.
Buy
Build
Buy
Hosted “Home Built”
An application that I develop
myself, but run at a hoster
Hosted “Packaged”
An application that I buy “off the
shelf” and then run at a hoster
“Home Built”using cloud
An application that I develop myself, that is hosted using
cloud platform
“Packaged”using cloud
An application that I buy “off the
shelf”, that is hosted using
cloud platform
“Software as a Service”
A hosted application that I
buy from a vendor
“Platform as a Service”
A vendor hosted development and
runtime environment
On Premise Hoster Cloud Vendor
Platform as a service
We’re building for ScaleRunning scalable services now•30B Live ID authentications/month•2B Live Search queries/month•10B MSN page views/month•240B Messenger messages/month
Building to run your services•Quincy, WA: Complete, approx 500K sq ft•San Antonio, TX: Opening Fall 08, approx 475K sq ft•Chicago, IL: Opening Spring/Summer 09, approx 550K sq ft•Dublin, Ireland: Opening Summer 09, approx 570K sq ft•Des Moines, Iowa: Recently announced land purchase
Use Case – Erratic Traffic
MLB.com is not affiliated with Windows Azure – example only
Use Case – Erratic Traffic
pgatour.com is not affiliated with Windows Azure – example only
Use Case – New Site Launch
Why leverage the cloud?
Almost zero upfront infrastructure cost
Just in time Infrastructure
More efficient resource utilization
Usage Based Computing
Potential to shrink processing time
Concerns with Cloud Computing
Security
Scalability
Recovery and reliability
Regulations and other legal issues
HIPAAGLBSOXPCI…
Pricing
Break
SESSION 2
The Azure Platform
Azure is a blue color on the HSV color wheel at 210 degrees. Azure is the hue that is halfway between blue and cyan. Its complementary color is orange.
Azure is a near synonym for the color blue. Commonly it refers to a bright blue, resembling the sky on a bright, clear day.
http://en.wikipedia.org/wiki/Azure
Your Applications
Your Applications
Storage ServicesStorage Services
Web farm that handles request from the internet
IIS7 hosted web core Hosts ASP.NET XML based
configuration of IIS7 Integrated managed
pipeline Supports SSL Windows Azure code
access security policy (CAS) for managed code
Public InternetPublic
Internet
Web RoleWeb Role
Load Balancer
No inbound network connections
Can read requests
from queue in storage Windows Azure
specific CAS policy for managed code
Storage ServiceStorage Service
Public InternetPublic
Internet
Worker Role
Worker Role
Public InternetPublic Internet
Web RoleWeb Role
Storage ServiceStorage Service
Worker Role
Worker Role
Load Balancer
Public InternetPublic Internet
Web RoleWeb Role
Storage ServiceStorage Service
Worker Role
Load Balancer
Public Internet
Web Role
Storage ServiceStorage Service
Worker Role
Worker Role
Load Balancer
…
Fabric
Compute Storage
Application
Blobs Queues
HTTP
Tables
Storage types: Blobs: a simple hierarchy of binary data Tables: hierarchical storage (not relational
tables) Queues: allow message-based communication
Access: Data is exposed via a RESTful interface Data can be accessed by:
▪ Windows Azure apps ▪ Other on-premises or cloud apps
Table . . .. . .Table Table
Entity . . .. . .Entity Entity
Property PropertyProperty
Name Type Value
Storage Accounts
Access via REST You can’t use ordinary ADO.NET
No SQL Query language based on the LINQ C# syntax No real joins, aggregates, etc.
An unfamiliar hierarchical structure You can’t easily move relational data to it Supporting services are scarce, e.g., reporting There’s significant platform lock-in
No schema And no views
Massive scalability By effectively allowing scale-out data
Highly durable 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 do quite similar
things▪ It appears to be the state of the art for scale-out data
What tables don’t doWhat tables don’t do
Not relationalNot relational
No Referential IntegrityNo Referential Integrity
No JoinsNo Joins
Limited QueriesLimited Queries
No Group byNo Group by
No AggregationsNo Aggregations
No TransactionsNo Transactions
What tables can doWhat tables can do
CheapCheap
Very ScalableVery Scalable
FlexibleFlexible
DurableDurable
If these are important to you, use:
Data stored in Tables A Table is a set of Entities (rows) An Entity is a set of Properties (columns)
Entity has: PartitionKey – enables scalability RowKey – unique id within the partition
(the only indexed property) Timestamp – for optimistic concurrency 255 properties for your data Max size of 1MB
Queue
Web Role
ASP.NET, WCF,
etc.
Worker Role
main(){ … }
1) Receive work
2) Put work in queue
3) Get work from queue
4) Do work
To scale, add more of either
QueueQueue
Msg 1Msg 1
Msg 2Msg 2
Msg 3Msg 3
Msg 4Msg 4
Worker Worker RoleRole
Worker Worker RoleRole
PutMessagePutMessage
Web RoleWeb Role
GetMessage GetMessage (Timeout)(Timeout)
RemoveMessagRemoveMessagee
Msg 2Msg 2Msg 1Msg 1
Worker Worker RoleRole
Msg 2Msg 2
POST http://myaccount.queue.core.windows.net/myqueue/messagesPOST http://myaccount.queue.core.windows.net/myqueue/messages
HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: application/xml Date: Tue, 09 Dec 2008 21:04:30 GMT Server: Nephos Queue Service Version 1.0 Microsoft-HTTPAPI/2.0
<?xml version="1.0" encoding="utf-8"?> <QueueMessagesList> <QueueMessage> <MessageId>5974b586-0df3-4e2d-ad0c-18e3892bfca2</MessageId> <InsertionTime>Mon, 22 Sep 2008 23:29:20 GMT</InsertionTime> <ExpirationTime>Mon, 29 Sep 2008 23:29:20 GMT</ExpirationTime> <PopReceipt>YzQ4Yzg1MDIGM0MDFiZDAwYzEw</PopReceipt> <TimeNextVisible>Tue, 23 Sep 2008 05:29:20GMT</TimeNextVisible> <MessageText>PHRlc3Q+dG...dGVzdD4=</MessageText> </QueueMessage> </QueueMessagesList>
HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: application/xml Date: Tue, 09 Dec 2008 21:04:30 GMT Server: Nephos Queue Service Version 1.0 Microsoft-HTTPAPI/2.0
<?xml version="1.0" encoding="utf-8"?> <QueueMessagesList> <QueueMessage> <MessageId>5974b586-0df3-4e2d-ad0c-18e3892bfca2</MessageId> <InsertionTime>Mon, 22 Sep 2008 23:29:20 GMT</InsertionTime> <ExpirationTime>Mon, 29 Sep 2008 23:29:20 GMT</ExpirationTime> <PopReceipt>YzQ4Yzg1MDIGM0MDFiZDAwYzEw</PopReceipt> <TimeNextVisible>Tue, 23 Sep 2008 05:29:20GMT</TimeNextVisible> <MessageText>PHRlc3Q+dG...dGVzdD4=</MessageText> </QueueMessage> </QueueMessagesList>
DELETEhttp://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=YzQ4Yzg1MDIGM0MDFiZDAwYzEw
DELETEhttp://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=YzQ4Yzg1MDIGM0MDFiZDAwYzEw
Queues guarantee a message will be processed at least once
Allows recovery in the event of errors Roles normally consist of several tasks
1. Get Message2. Insert to Table13. Insert to Table2
Could fail at any point Write your code to expect failures
Inserts/Deletes might fail as already performed
Data in inconsistent state (part processed)
Same tools you’re already used to using, namely Visual Studio
Real Storage & Dev Store have differences Fixed schema No dynamic table creating
String length nvarchar[1000] – String[64000] Dev Storage forces you to use certain patterns Can be difficult to debug issues in data store:
Use logging and tracing Use Fiddler, SQL profiler and SDK docs
Your Applications
Key developer challenges Many identity providers, many vendors, many
protocols, complex semantics – tricky to get right Application strewn with one-off access logic Hard to get right, not agile, not compliant, many
dead ends Approach
Automate federation for a wide-range of identity providers and technologies
Factor the access control logic from the application into manageable collection of rules
Easy-to-use framework that ensures correct token processing
Key developer challenges Want to easily describe long-running processes Want modularity and nesting Easy to describe but in practice harder to run
▪ Hosting and scaling can be challenging▪ Setup and installing, define scale-out
approach, ensure long-running availability, manage upgrades, …
Approach .NET 3.0/3.5/4.0 addresses key developer
requests .NET Services makes it easy to deploy, manage
and run Workflows
The problem: Exposing internal applications on the Internet isn’t easy Network address translation (NAT) and
firewalls get in the wayThe solution:
Service Bus provides a cloud-based intermediary between clients and internal applications
It also provides a service registry that clients can use to find the services they need
Service Bus
Registry
Endpoints
Organization YOrganization X
Application Application
Service Bus
2) Discover endpoints
1) Register endpoints3) Access
application
Your Applications
SQL Services
.NET Services
Windows Azure
Live Services
Applications
Applications
OthersWindows
Mobile
Windows
Vista/XP
Windows
Server
SQL Data Services
Others (Future)
Data Center
SQL Data
Services
Container . . .. . .Container Container
HTTP/ SOAP
Entity . . .. . .Entity Entity
Property PropertyProperty
Name Type Value
Authorities
Resources
• Jinesh Varia’s Cloud Computing Whitepaper – http://aws.amazon.com
• Azure Landing Site – http://azure.com• Steve Marx - http://blog.smarx.com• Azure Team - http://blogs.msdn.com/windowsazure
Your Applications
Your Applications
Windows Live
Finished Services
Software Applications
… are a set of building blocks for handling user data and application resources which can connect your application to hundreds of millions of users.
Storage Search & GeospatialIdentity Directory
Devices Applications Synchronization
Mesh Services
User
Comms & Presence
1.2B 30B367M
320M
nnPB
460M
Connect across devicesEmbed social building blocksJumpstart traffic
Engage with over 450M users on Windows Live Integrate with experiences, relationships and data users care about
Comprehensive Windows Live services API’s (incl. Messenger, feeds, contacts, search) Developer Tooling with integrated Live Services
Open, interoperable programming interface and resource model across digital devices. Data synchronization and local accessibility of web / cloud data
Why Live Services?
Eliminated calls to help center about locations
Proof of concept in three weeks
24/7 technical support, easy development with online software development kit
Chose Microsoft® Virtual Earth™ with the Microsoft MapPoint® Web service
Integrated location information to provide location hours and services
Added 3-D maps and integrated driving directions
FedEx wanted to increase its visibility and improve customer experience
Wanted to add location information and rich features to its online store locater
Stable, well-supported solution platform was a must
FedEx improves customer experience with integrated mapping and location data
“With Virtual Earth, rather than clicking 10 times to find information, customers get it right away with the
compass control.”SNarayanan Kasiarunachalam, Technical Advisor, FedEx
Customer Logo
Live MeshLive Mesh
Quick Walkthrough and Demo(not nearly as impressive as the video)
External Commentary
#1 Coolest technology demoed at Web 2.0
“Live Mesh… could change the way PCs and other devices interact with Internet Services and each other…”
“… most ambitious step yet in transforming its personal computer business
“Despite Microsoft’s reputation of being a closed-wall company, it is adopting simple protocols in its Live Mesh synchronization strategy.”
“Live Mesh represents the company Microsoft is trying to become…” Rob Enderle
“Eventually, we’ll give customers instant access to any movie on any device with an Internet connection and a screen.” “More immediately, we could use this technology to reach into airports. Travelers could quickly download movies from Blockbuster kiosks to their portable media players.”
Keith Morrow Chief Information Officer, Blockbuster
© 2009 Microsoft corporation. all rights reserved.this presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.