introduction to windows azure

91
Windows Azure … everything you wanted to know (or should) Scott Decker Robert Greiner Craig Smitham Nick Stephens

Upload: robert-greiner

Post on 11-Nov-2014

245 views

Category:

Technology


1 download

DESCRIPTION

An overview of Windows Azure services. Great for those with little to know prior knowledge of Azure or cloud computing topics. Quickly get others up to speed on Windows Azure.

TRANSCRIPT

Page 1: Introduction to Windows Azure
Page 2: Introduction to Windows Azure

What we’ll be talking about

• Azure in Context: The History and Promise of the Cloud

• Azure Services, Ecosystem, and Tools

• The Demands of Distribution

Page 3: Introduction to Windows Azure

How We Got Here

• Cloud computing was envisioned as early as the 1960s

• Computing as a service, much like a utility, has been seen as the next big step in the evolution of industry

• Amazon Web Services 2006

• Windows Azure CTP 2008

• Windows Azure RTM February 2010

Page 4: Introduction to Windows Azure

Compute Delivery Models

Source: http://www.brightpattern.com/2013/clearest-explanation-yet-of-saas-paas-iaas/

Page 5: Introduction to Windows Azure

… another Perspective

Source: http://blogs.msdn.com/b/jmeier/

Page 6: Introduction to Windows Azure

Some Examples

• On Premise: Your laptop, Dedicated Servers

• IaaS: VPS Providers, Amazon EC2, Azure VMs

• PaaS: Azure Cloud Services, Amazon Elastic Beanstalk, Heroku, nodejitsu

• SaaS: Office 365, Mint.com, Spotify, Salesforce

Page 7: Introduction to Windows Azure

Azure At-A-Glance

• Applications: Blogs, Ecommerce, Forums, Wiki• Data: SQL, NoSQL Table Storage, 3rd Party

(MongoDb, etc)• Runtime: .NET, Java, Node.js, Python, PHP, Ruby …

and more• Middleware: Azure Service Bus, BizTalk Services,

3rd Party App Services• O/S: Windows, Linux• Virtualization/Servers: XS shared core 768MB to 8

core 56GB • Storage: Binary Blob Storage• Networking: Traffic Manager, VPN

Page 8: Introduction to Windows Azure

Azure At-A-Glance

• Applications: Blogs, Ecommerce, Forums, Wiki• Data: SQL, NoSQL Table Storage, 3rd Party

(MongoDb, etc)• Runtime: .NET, Java, Node.js, Python, PHP, Ruby …

and more• Middleware: Azure Service Bus, BizTalk Services,

3rd Party App Services• O/S: Windows, Linux• Virtualization/Servers: XS shared core 768MB to 8

core 56GB • Storage: Binary Blob Storage• Networking: Traffic Manager, VPN

Page 9: Introduction to Windows Azure

Azure At-A-Glance

• Applications: Blogs, Ecommerce, Forums, Wiki• Data: SQL, NoSQL Table Storage, 3rd Party

(MongoDb, etc)• Runtime: .NET, Java, Node.js, Python, PHP, Ruby …

and more• Middleware: Azure Service Bus, BizTalk Services,

3rd Party App Services• O/S: Windows, Linux• Virtualization/Servers: XS shared core 768MB to 8

core 56GB • Storage: Binary Blob Storage• Networking: Traffic Manager, VPN

Page 10: Introduction to Windows Azure
Page 11: Introduction to Windows Azure

Cloud Services

• Cloud Services are deployments to Azure PaaS

Code

Configuration

Page 12: Introduction to Windows Azure

Cloud Services - Code

• Two types of Roles• Web Role• Worker Role

• Web Role• IIS Web Server• Host Web Front End or API layer• Public endpoints are

load balanced

Page 13: Introduction to Windows Azure

Cloud Services - Code

• Worker Roles• “Console App” that infinitely processes tasks

• Usually setup to read from queue• Host asynchronous “Deferred Processor”

Page 14: Introduction to Windows Azure

Cloud Services - Configuration

• Defines settings for Cloud Service• Type, size, and instance count of roles

• Ex, 1 Medium Web Role and 2 Small Worker Roles

• Endpoints of application• HTTP, HTTPS, TCP, etc.

• Certificates• SSL, etc.

• In-Role Caching• Cache shared within

Cloud Service

Page 15: Introduction to Windows Azure

Cloud Services - Configuration

• Also defines version of Windows Server to run• OS Family

• 1 - Windows Server 2008 SP2, .NET 3.5/4.0 only• 2 - Windows Server 2008 R2, .NET 3.5/4.0• 3 - Windows Server 2012, .NET 4.0/4.5

• OS Version• MSRC Patch number, ex 2.11• Defaults to “*”, automatic application of patches

• Leave on default unless you need specific family/version

Page 16: Introduction to Windows Azure

Cloud Services - Concepts

• Staging vs Production Slot• Deploy to Staging and then Swap VIP

Page 17: Introduction to Windows Azure

Cloud Services - Features

• Auto Scaling• Built to handle varying system load• Can increase or decrease instances within threshold• Each role can scale independently

Page 18: Introduction to Windows Azure

Cloud Services - Features

• Auto Scaling• Scale by CPU %

• Good for Web Roles because • Increased CPU can mean increase wait time for users

• Scale by Queue Length• Good for Worker Roles• Long queue means more work to process

• Scale on Schedule• Good for predictable load

Page 19: Introduction to Windows Azure

Cloud Services - Features

• Diagnostics• Help monitor and troubleshoot application

• Can define performance counter to record• CPU, Memory, Caching, Custom, etc.

• Log messages in application• Use Trace logging with severity• Use TraceSwitch to filter what severities gets logged

• Writes out to configurable Table Storage account• WADLogsTable for logs• WADPerformanceCountersTable for performance counters

Page 20: Introduction to Windows Azure

Cloud Services – Best Practices

• Segment large applications into multiple Cloud Services• Web Cloud Service and API/Backend Cloud Service• Separation of concerns

• Deploy to staging and swap• More testable and have rollback strategy

• Design application to scale out not up• Easier to add instances than to increase hardware

Page 21: Introduction to Windows Azure

Questions

Page 22: Introduction to Windows Azure
Page 23: Introduction to Windows Azure

Virtual Machines

• IaaS• Deploy VM images to hardware in Azure datacenter• More control than Cloud Service• Can provision new hardware as needed

Page 24: Introduction to Windows Azure

Virtual Machines

• Deploy to Cloud or On-Premise, or both• VM is portable

• Can choose from Azure VM Gallery• SQL Server, SharePoint, Linux, etc.• License included in pricing

• Connect to On-Premise network via Site-to-Site VPN• Treat Azure VMs just like On-Premise servers

• Configure load balancing for multiple VMs

Page 25: Introduction to Windows Azure
Page 26: Introduction to Windows Azure

Azure Web Sites

• Built on top of cloud services. PaaS made easy.• Deploy multiple websites to a single cloud service.• Simple setup and configuration.• No special SDK/project type required.• Out of the box support for .NET, node.js, PHP and

python• One click auto scaling• Simple diagnostic setup

Page 27: Introduction to Windows Azure

Azure Web Sites - Modes

• Three modes to choose from• Free• Shared• Standard (Reserved virtualized instance)

Page 28: Introduction to Windows Azure

Azure Web Sites - Pricing  FREE SHARED

(PREVIEW) STANDARD

CPU Shared1 Shared1 Dedicated

Custom domain support Not Available Available Available

Custom domain SSL Not Available Not Available See SSL pricing

Scale-out Not Available Up to 6 instances Up to 10 instances

Sites2 10 100 500

Storage2 1 GB 1 GB 10 GB

Relational database3

(optional)

20 MB included,Standard rates apply

 for additional capacity

20 MB included,Standard rates apply

 for additional capacity

20 MB included,Standard rates apply

 for additional capacity

Outbound data transfer 2 Up to 165MB per day Standard rates a

pplyStandard rates apply

Page 29: Introduction to Windows Azure
Page 30: Introduction to Windows Azure

Azure Mobile Services

• Another PaaS made easy.• Backend as a service a la Parse, Appcelerator,

Kinvey• Provides basic NoSQL-esqe data storage

• Schemaless• Powered by SQL

• Instant REST API for data• Custom API endpoints • Powered by node.js!• Recurring jobs• Access to Azure APIs within runtime

Page 31: Introduction to Windows Azure

Azure Mobile Services

• Use Cases• Mobile• Desktop apps• Service Façade

  FREE1 STANDARD PREMIUM

Price2

Free(up to 10 services /

month)

$25 / month per unit

$199 / month per unit

API Calls2 500K 1.5M per unit 15M per unitActive Devices3 500 Unlimited UnlimitedScale N/A Up to 6 units Up to 10 unitsScheduled jobs4 Limited Included Included

SQL Database5

(required)

20 MB included,Standard rates apply

 for additional capacity

20 MB included,Standard rates apply

 for additional capacity

20 MB included,Standard rates apply

 for additional capacity

Page 32: Introduction to Windows Azure
Page 33: Introduction to Windows Azure

How do I authenticate users in Azure?

33

Website

ACS

Page 34: Introduction to Windows Azure

How is Azure ACS different?

34

Old Way New Way

You don’t have to write the code!

Page 35: Introduction to Windows Azure

ACS authentication for low D people

35

ACS

I want to log in via Google (3)*

This is who this person is (5)

This person is in the following roles on the site (7)

*() refer to steps in previous slide

Page 36: Introduction to Windows Azure

ACS authentication for high D people

36

http://www.windowsazure.com/en-us/develop/net/how-to-guides/access-control/

Identity Provide

rACS

ClientRelying Party App

http://msdn.microsoft.com/en-us/library/hh446535.aspx

Page 37: Introduction to Windows Azure

What are claims and roles?

37

Page 38: Introduction to Windows Azure
Page 39: Introduction to Windows Azure

• Cloud-Hosted or Self-Hosted Messaging Middleware

• Windows Azure Service Bus• All Windows Azure Datacenters + Select Customer Appliances• Multiple Clusters (Scale-Units) per Datacenter

• Service Bus for Windows Server 1.0• Downloadable component for Windows Server (and Windows client for Dev)• Runs on top of SQL Server Express (up to SQL 2012 Always-On Cluster)• Messaging largely symmetric with cloud version, but lags up to 12 months behind

• Key Features: • Pub/Sub Reliable Messaging, Relay*, Notifications**

What is Service Bus?

*cloud-only for now **cloud-only for the forseeable future

Page 40: Introduction to Windows Azure

Service Bus Brokered Messaging

Queues• Ordered Message Log

• Ordered by arrival (broker assigns strongly monotonic sequence number to each msg)

• Timestamped on arrival (authoritative clock) • Stored in SQL; once accepted, the message

is as safe as any data in the SQL deployment

• Multiplexing with sessions

• Two modes: Pull and Forward• Pull – delivers messages on request,

allowing concurrent readers• Forward – delivers message to single

forward destination

Topics• All features of Queues, plus

• Multiple, Independent Subscriptions• Named, durably created (optional)

• Quota: Up to 2000 concurrent subscriptions• Reco is to start partitioning much, much

earlier (more later)• Rules with filter conditions on msg headers

• Quota: Up to 2000 rules per subscription• Optional action set/modify message props• Each rule hit yields a message

• Topic 'tail' and subscription 'head' are fully protocol compatible with Queues

Page 41: Introduction to Windows Azure

Programming Model Options

Apps

NetMessagingBinding

.NET Service Bus Messaging API

.NET WCF Service Model

SB Messaging Protocol(net.tcp, proprietary)

AMQP 1.0

Service Bus

C/C++(incl

Embedded)

Apache Proton-C

Windows Whatever

HTTP(S)

PHPclient

Node.js

client

Python

client

Java/JMS

Apache Qpid JMS AMQP 1.0

Any HTTPclient

Page 42: Introduction to Windows Azure

Connectivity Options

AMQP 1.0OASIS standard, growing base of clients across many platformsAMQPS TCP 5671, AMQP TCP 5672Preview status, general availability later this year

"SBMP" Service Bus Messaging ProtocolOnly supported by .NET client, Microsoft proprietary, based on WCF's NetTcpTCP port 9354 or HTTP tunneling over port 443 or port 80

HTTPSTCP 443RFC2616 – majority of Service Bus features available for any HTTPS client

Page 43: Introduction to Windows Azure

Message Model

Brokered messaging properties are not SOAP headers

System properties have special meaning to the broker or or set by the broker

Properties are key/value pairs that may very well carry payloads

It's not uncommon to have messages with empty message bodies

Message bodies are useful for a single opaque payload not exposed to the broker (e.g. encrypted content)

Service Bus Message

Body

Custom Properties

Key Value

Key Value

Key Value

Key Value

Body (Bag of Bytes)

Sys Properties

Key Value

Key Value

Key Value

Page 44: Introduction to Windows Azure

Message Dimensions

Max Message: 256 Kbyte

Max Total Props: 64 KbyteIncludes sys props, reserve ~4 KByte

Max Prop: No explicit limitConstrained by de-facto HTTP limits if you use HTTP; ~4KB for a header max

Max Body: 256KByte – sizeof(Props)

Yes, yes. Just wait. We'll get to how you can send payloads exceeding 256 KByte …

64KB max

256 KBmax

Service Bus Message

Body

Custom Properties

Key Value

Key Value

Key Value

Key Value

Body (Bag of Bytes)

Sys Properties

Key Value

Key Value

Key Value

Page 45: Introduction to Windows Azure

Message Protocol Mapping: HTTP

HTTP Message

Entity Body

Headers

Hdr Value

Hdr Value

Hdr Value

Hdr Value

Entity

Service Bus Message

Body

Custom Properties

Key Value

Key Value

Key Value

Key Value

Body (Bag of Bytes)

Sys Properties

Key Value

Key Value

Key Value

BrokerProperties { json }

BrokerProperties

Page 46: Introduction to Windows Azure

Brokered Transfer

• Load Leveling• Receiver receives and processes at its own pace. Can

never be overloaded. Can add receivers as queue length grows, reduce receiver if queue length is low or zero. Gracefully handles traffic spikes by never stressing out the backend.

• Offline/Batch• Allows taking the receiver offline for servicing or other

reasons. Requests are buffered up until the receiver is available again.

S RQueue

Page 47: Introduction to Windows Azure

Competing Consumer

Load BalancingMultiple receivers compete for messages on the same queue (or subscription). Provides automatic load balancing of work to receivers volunteering for jobs.Observing the queue length allows to determine whether more receivers are required.

S RQueue

R

R

Page 48: Introduction to Windows Azure

Fan-In

ConcentratorFan information into a single queue from a range of data sources

Multi-Stage Aggregration / RollupFan into a set of queues, perform aggregation/roll-up/reduction and fan further.

S RQueue

S

S

Page 49: Introduction to Windows Azure

Taps and Fan-Out

Message DistributionEach receiver gets its own copy of each message. Subscriptions are independent. Allows for many independent 'taps' into a message stream. Subscriber can filter down by interest.

Constrained Message Distribution (Partitioning)Receiver get mutually exclusive slices of the message stream by creating appropriate filter expressions.

S RTopic SubSub

Sub

R

R

Page 50: Introduction to Windows Azure

Filtering

Up to 2000 rules per subscriptionEach matched rule yields a message copySQL'92 expressions over message properties

S RTopic SubSub

Sub

R

RName LIKE

'V%'

Page 51: Introduction to Windows Azure

Partitioning

Rule conditions form mutually exclusive rangesAllows partitioning-aware message distribution No need for sender to be aware of partitioning

S RTopic SubSub

Sub

R

R

PartId > 272 AND PartId <= 567

PartId > 0 AND PartId <= 272

PartId > 567 AND PartId <= 791

Page 52: Introduction to Windows Azure
Page 53: Introduction to Windows Azure

Let’s talk about how data works in Azure

53

Page 54: Introduction to Windows Azure

How does data work in Windows Azure?

54

Page 55: Introduction to Windows Azure

Azure SQL DatabaseAzure Tables Azure Blobs

Azure Data Management

Azure Queues

Page 56: Introduction to Windows Azure

Azure Table Storage

• NoSQL Data Storage• Fully managed PaaS

• Key-value

• Hierarchical

• REST API

• Geo replication

Storage Account: MovieData

Star WarsMatrixFan Boys

Table Name: Movies

Entity

Table

Account

Page 57: Introduction to Windows Azure

Table Storage Concepts

EntityTableAccount

contoso

Name =…Email = …

Name =…EMailAdd=

customers

Photo ID =…Date =…

photos

Photo ID =…Date =…

Page 58: Introduction to Windows Azure

InsertUpdate Merge – Partial update

Replace – Update entire entity

UpsertDeleteQueryEntity Group TransactionsMultiple CUD Operations in a single atomic transaction

Create, Query, DeleteTables can have metadata

Not an RDBMS! Table

Entities

Page 59: Introduction to Windows Azure

No Fixed Schema

FIRST LAST BIRTHDATE

Wade Wegner 2/2/1981

Nathan Totten 3/15/1965

Nick Harris May 1, 1976

FAV SPORT

Canoeing

Page 60: Introduction to Windows Azure

Purpose of the PartitionKey

Entity LocalityEntities in the same partition will be stored togetherEfficient querying and cache localityEndeavour to include partition key in all queries

Entity Group TransactionsAtomic multiple Insert/Update/Delete in same partition in a single transaction

Table ScalabilityTarget throughput – 500 tps/partition, several thousand tps/accountWindows Azure monitors the usage patterns of partitionsAutomatically load balance partitionsEach partition can be served by a different storage nodeScale to meet the traffic needs of your table

Page 61: Introduction to Windows Azure

PartitionKeyUnique identifier for the partition within a give table.

RowKeyUnique Identifier for an entity within a given partition.

Both Keys matter!Define Primary KeyForms a single clustered index

Scalability

SlowestNo Partition KeyNo Row Key

SlowerOnly Partition KeyNo Row Key

Very FastPartition Key + Row Key

Page 62: Introduction to Windows Azure

• Storage is accessed through a connection string using the Account Name and Account Key

• The connection string is saves in the cloud settings for each role

Accessing Table Storage

Page 63: Introduction to Windows Azure

Two keys allows you to regenerate one key while using the other for added security.

• Always use the Primary Key

• Before generating a new Primary Key, update all roles to use the secondary key, update the primary key, then set all the roles back to the Primary Key

Why are there two keys?

Page 64: Introduction to Windows Azure

• 3 libraries exist for accessing Azure Table Storage

• Microsoft’s Windows Azure Storage Client• Lokad• CloudFx

Accessing Table Storage (Cont.)

Page 65: Introduction to Windows Azure

Querying Table Storage v2.0 - Insert

http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/

Page 66: Introduction to Windows Azure

• Query on PK, RK, and even table properties using the TableQuery class

Querying Table Storage v2.0 - Query

http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/

Page 67: Introduction to Windows Azure

• Rows are limited to 1mb

• Properties are limited to 64kb

• Up to 255 properties (including PK, RK, Timestamp)

• Only 1000 records can be retrieved per call

• Up to 20,000 per second can be processed

Table Limitations

http://msdn.microsoft.com/en-us/library/windowsazure/dd179338.aspxhttp://blogs.msdn.com/b/windowsazure/archive/2012/11/02/windows-azure-s-flat-network-storage-and-2012-scalability-targets.aspx

Page 68: Introduction to Windows Azure

TableXplorer• Export/Import data (use locally only)

Tools

Azure Storage Explorer

• Browse Blobs, Queues, Tables

• Query for specific table rows

Visual Studio

• Query/Browse Storage accounts

Page 69: Introduction to Windows Azure

http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/

How to create and connect to storage account

Page 70: Introduction to Windows Azure

Azure SQL DatabaseAzure Tables Azure Blobs

Azure Data Management

Azure Queues

Page 71: Introduction to Windows Azure

Azure Blob Storage

• Unstructured Data Storage• Managed service

• Hundreds of gigabytes per blob in size

• 100TB per storage account

• REST API

• Geo-replication for disaster recovery

Page 72: Introduction to Windows Azure

Blob Storage Concepts

http://<account>.blob.core.windows.net/<container>/<blobname>

BlobContainerAccount

contoso

PIC01.JPG

PIC02.JPG

images

VID1.AVIvideos

Page 73: Introduction to Windows Azure

Blob Details

Main Web Service

Operations

PutBlobGetBlobDeleteBlobCopyBlobSnapshotBlob LeaseBlob

Page 74: Introduction to Windows Azure

Blob Details

Associate Metadata with Blob

Standard HTTP metadata/headers (Cache-Control, Content-Encoding, Content-Type, etc)

Metadata is <name, value> pairs, up to 8KB per blob

Either as part of PutBlob or independently

Page 75: Introduction to Windows Azure

Blob Details

Blob always accessed by

name

Can include ‘/‘ or other delimeter in name e.g. /<container>/myblobs/blob.jpg

Page 76: Introduction to Windows Azure

Blob Containers

Multiple Containers per AccountSpecial $root container

Blob ContainerA container holds a set of blobsSet access policies at the container level Associate Metadata with ContainerList the blobs in a containerIncluding Blob Metadata and MD5 NO search/query. i.e. no WHERE MetadataValue = ?

Blobs ThroughputEffectively in Partition of 1Target of 60MB/s per Blob

Page 77: Introduction to Windows Azure

GET http://.../products?comp=list&prefix=Tents&delimiter=/

<Blob>Tents/PalaceTent.wmv</Blob><Blob>Tents/ShedTent.wmv</Blob>

Enumerating Blobs

GET Blob operation takes parametersPrefixDelimiterInclude= (snapshots, metadata etc…)

http://adventureworks.blob.core.windows.net/ Products/Bikes/SuperDuperCycle.jpg Products/Bikes/FastBike.jpg Products/Canoes/Whitewater.jpg Products/Canoes/Flatwater.jpg Products/Canoes/Hybrid.jpg Products/Tents/PalaceTent.jpg Products/Tents/ShedTent.jpg

Page 78: Introduction to Windows Azure

http://.../products?comp=list&prefix=Canoes&maxresults=2

&marker=MarkerValue

<Blob>Canoes/Hybrid.jpg</Blob>

Pagination

Large lists of Blobs can

be paginatedEither set maxresults or;Exceed default value for maxresults (5000)

http://.../products?comp=list&prefix=Canoes&maxresults=2

<Blob>Canoes/Whitewater.jpg</Blob><Blob>Canoes/Flatwater.jpg</Blob><NextMarker>MarkerValue</NextMarker>

Page 79: Introduction to Windows Azure

Storage Account Best Practices

• Protect production storage keys as they are the keys to the kingdom

• Create a separate storage account for diagnostics and logging so those account keys can be shared with prod support developers

• Create additional storage accounts for high traffic queues or blobs to ensure maximum performance

Page 80: Introduction to Windows Azure
Page 81: Introduction to Windows Azure

What is TFS? (Service…not Server)

81

Build Management & Automation

Version Control

Agile Project Planning

Page 82: Introduction to Windows Azure

How do I manage my team?

82

Build Management & Automation

Version Control

Agile Project Planning

http://tfs.visualstudio.com/en-us/feature-tour.aspx#Section2

Page 83: Introduction to Windows Azure

How do we handle source code?

83

Build Management & Automation

Version Control

Agile Project Planning

Page 84: Introduction to Windows Azure

How do we build and deploy our code?

84

Build Management & Automation

Version Control

Agile Project Planning

Page 85: Introduction to Windows Azure

How much does it cost?

Page 86: Introduction to Windows Azure
Page 87: Introduction to Windows Azure

In theoretical computer science, the CAP theorem, also known as Brewer's theorem, states that it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees:

• Consistency (all nodes see the same data at the same time)

• Availability (a guarantee that every request receives a response about whether it was successful or failed)

• Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system)

According to the theorem, a distributed system cannot satisfy all three of these guarantees at the same time. In May 2012 Brewer clarified some of his positions on why the oft-used "two out of three" concept can be misleading or misapplied.

Source: http://en.wikipedia.org/wiki/CAP_theorem

CAP Theorem

Page 88: Introduction to Windows Azure

 ”CAP prohibits only a tiny part of the design space: perfect availability and consistency in the presence of partitions, which are rare.

The modern CAP goal should be to maximize combinations of consistency and availability that make sense for the specific application.”

Eric Brewerhttp://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed

CAP Theorem: 12 Years Later

Page 89: Introduction to Windows Azure

• Delivering software at non-trivial scale

• Scaling across cores, devices, datacenters

• Identify constraints • Scale Units• Power Requirements• Latency• Consistency• …. Many more

Multiple Fronts

Page 90: Introduction to Windows Azure

• Understand the evils of mutable state

• Learn the powers of immutability

• Learn from the real world

• The answer often lies in workflow

Consider Traditional Pitfalls

Page 91: Introduction to Windows Azure