Document 343977

Windows Azure Architecture
I think, therefore I am
Fernando Machado Píriz
Enterprise Architect, Microsoft
@netconfuy
@fmachadopiriz
>57% >250k
Fortune 500 using Azure
>20
>2
TRILLION
storage
objects
MILLION
requests/sec
Active websites
>300
>13
MILLION
AD users
BILLION
authentication/wk
Greater than
1,000,000
SQL Databases in Azure
>1
MILLION
Developers
registered with
Visual Studio
Online
Compute
Compute
Compute
t
t
Compute
Compute
Compute
Inactivity period
t
t
t
t
Cloud attributes
Pooled and shared resources
Metered
Cheaper
Elasticity
Pay as you go
New scenarios
Traditional World
New, Innovative World
Pooled and shared resources
Pooled and shared resources
Metered
Metered
Cheaper
Cheaper
Elasticity
Pay as you go
New scenarios
Traditional World
New, Innovative World
Many features
Reliability and agility over features
Mean time to failure
Mean time to resolution
Slow update pace
Continuous updates
Development lifecycle
Continuous development
Unknown consumption habits
Detailed usage patterns
On time, on budget
Up and running at appropriate costs
Agility over features
Run
Mean time to resolution
Build
Continuous updates
Test
Deploy
Continuous integration
Continuous development
Up and running at appropriate costs
Continuous deployment
Automation
Source control
PowerShell
API
Visual Studio
Online
Team Foundation
Server
Visual Studio
Git support
Reliability over features
Run
Mean time to resolution
Build
Detailed usage patterns
Test
Deploy
Instrumentation
Up and running at appropriate costs
Telemetry
AppDynamics
New Relic
Dynatrace
MetricsHub
Microsoft
System Center
Microsoft Application Insights
for Visual Studio Online
Reliability over features
Health check
Up and running at appropriate costs
CDN|
Port 80 (http)
or 443 (https)
endpoint
Agent

CDN
Application 
…

On-premises,
cloud-hosted, or
third_party service
200 (Ok)
Response time: 50ms
Storage: 5ms
Database: 20ms
…
Storage
Storage
Database
Service A
Service B
…





Application
Health Endpoint Monitoring
Database
Reliability over features
Web development
Mean time to resolution
Stateless web servers
No session state; or distributed caching
Continuous updates
Content distribution networks
Up and running at appropriate costs
Default to async
Websites
Virtual Machines
CDN
Reliability over features
Caching
Continuous updates
Up and running at appropriate costs
Web roles, worker roles, virtual machines
24 GB Distributed Cache
12 GB
Redis
Cache
Managed
Cache Service
In−Role
Cache
12 GB
Memcached
Cloud
Storage
Reliability over features
ACID vs BASE
Up and running at appropriate costs
Azure SQL
Database
Azure Blob
Storage
Relational
Key/Value
 Azure SQL  SQL
Database
Compact
 SQL Server  SQLite
 Oracle
 Postgres
 MySQL
 Azure Blob
Storage
 Azure Table
Storage
 PaaS (managed services)
Azure
Table
Azure
Cache
Colum Family
 Azure Cache  Cassandra
 Redis
 HBase
 Memcached
 Riak
 IaaS (virtual machines)
Document
DB
Document
HDInsight
(Hadoop)
Graph
 DocumentDB  Neo4J
 MongoDB
 RavenDB
 CouchDB
Resiliency
Reliability over features
Up and running at appropriate costs
1
Application
500
Hosted service
2
500
3
200
Retry
Resiliency
Reliability over features
Up and running at appropriate costs
Success count
threshold reached
Closed
entry / reset failure
do / if operation succeeds
return result
else
increment failure count
return failure
Half-open
entry / reset success counter
do / if operation succeeds
increment success counter
return result
else
return failure
Timeout
timer expired
Operation
failed
Failure threshold
reached
Open
entry / start timeout timer
do / return failure
Circuit breaker
Resiliency
Reliability over features
Resource
utilization
Up and running at appropriate costs
Feature B is
suspended to allow
sufficient resources
for applications to
use Feature A and C
Maximum capacity
Soft limit of
resource utilization
Feature C
Feature B
Feature A
T1
Throttling
T2
Time
Resiliency
Reliability over features
Resource
utilization
Up and running at appropriate costs
Throttling is relaxed
when autoscaling
completes
Autoscaling starts
at this point
Maximum capacity
after autoscaling
Maximum capacity
before autoscaling
Soft limit of
resource utilization
All applications
System is throttled
while autoscaling
occurs
T1
Throttling
T2
Time
Resiliency
Reliability over features
Up and running at appropriate costs
Book seat
on flight 1
Book seat
on flight 2
Cancel seat
on flight 1
Compensating
logic
Book seat
on flight 3
Cancel seat
on flight 1
Compensating
logic
Reserve room
at hotel 1
Cancel seat
on flight 1
Compensating
logic
Cancel room
on hotel 1
Compensating
logic
Compensating transactions
Reserve room
at hotel 2
Compensating
logic
Reliability over features
Default to async
Up and running at appropriate costs
private async Task MyTaskAsync(SomeType param)
{
var result = await object.ProcessMessagesAsync(param);
}
Default to async
Reliability over features
Up and running at appropriate costs
Sender
Receiver
Message queue
Storage
Queue
BizTalk
Services
Service
Bus
Service
Bus Queue
Service
Bus Relay
Asynchronous Messaging Primer
Service
Bus Topic
Default to async
Reliability over features
Up and running at appropriate costs
Receivers
Senders
Shared message
queue
Asynchronous Messaging Primer
Default to async
Reliability over features
Up and running at appropriate costs
Tasks
Service
Message queue
Requests
received at a
variable rate
Queue-Based Load Leveling
Messages
processed at
a more
constant rate
Default to async
Reliability over features
Up and running at appropriate costs
Presentation
Cart created
Cart
Cart Item
Item 1 added
Item 2 added
Item 1 added
Shipping info
added
Event store
~
External systems
and applications
Cart ID
Date
Customer
Address
…
Cart ID
Item Key
Item Name
Quantity
…
Materialized View
Published events
Replayed events
Event sourcing
Query for
current state of
entities
~
Questions?
Thanks!
Fernando Machado Píriz
Enterprise Architect, Microsoft
@netconfuy
@fmachadopiriz