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