ArcReady - Architecting For The Cloud

Preview:

DESCRIPTION

For our next ArcReady, we will explore a topic on everyone’s mind: Cloud computing. Several industry companies have announced cloud computing services . In October 2008 at the Professional Developers Conference, Microsoft announced the next phase of our Software + Services vision: the Azure Services Platform. The Azure Services Platforms provides a wide range of internet services that can be consumed from both on premises environments or the internet. Session 1: Cloud Services In our first session we will explore the current state of cloud services. We will then look at how applications should be architected for the cloud and explore a reference application deployed on Windows Azure. We will also look at the services that can be built for on premise application, using .NET Services. We will also address some of the concerns that enterprises have about cloud services, such as regulatory and compliance issues. Session 2: The Azure Platform In our second session we will take a slightly different look at cloud based services by exploring Live Mesh and Live Services. Live Mesh is a data synchronization client that has a rich API to build applications on. Live services are a collection of APIs that can be used to create rich applications for your customers. Live Services are based on internet standard protocols and data formats.

Citation preview

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.