Azure
Why I Love Azure
- Deployment time
- [Usually static] Content stored in blob storage / CDN can be access directly by
the client
- Maintaince and patching
- [Possibility] of dynamic scaling
Why I Hate Azure
- Deployment delays
- 1.3 diagnostics / start up sequence
- Throttling
- Billed for empty-except-for-continuation-token result sets, and for 503s
Top Azure Bugs
- Escape characters
- Buffer clearence
- Event order
- Other's HDD usage patterns can kill you
- Stuck in deployment mode
- [By design] Same queue message can be fetched by two threads at the same time
- Dequeue count doesn't apply to old queues
CDN
- DNS name resolves to local CDN
- 20 locations world wide, 99.95% uptime
- Cache expiry defaults to 72hours. Can be overridden in blob header (x-ms-blob-cache-control)
- SAS - Shared Access Signatures
- Put version in filename if want expiry-on-demand (e.g. logo-2011-02-27.png)
AppFabric Cache
- Same API as Windows Service AppFabric Cache
- Distributed caches scale out
- Subregion App Affinity
- AuthN/AuthZ with ACS (settings go in config)
- Integrates with ASP.NET Session state and Output Cache (TODO: How?)
- No object size limit
- Near cache (local client) for hot data (+ no serialization costs)
- Simple Get/Put syntax. Get returns NULL on cache miss
BLOBs
- Lease period 1 min. Lease easy way to determine master election
- 8k metadata
- ACLs directory & file level
- Each BLOB is in its own partition. If the BLOB is snapshotted, snapshots are in
that partition too.
- Block
- Two phase commit
- Parallel out-of-order uploads
- 200GB
- Range reads possible
- Page
- Range reads possible
- Azure Drive
- Up to 16 drives can be mounted
- Drives are really page BLOBs mounted as a NTFS drive (hence 1TB limit)
- Drives have write through caching
Queues
- Peek is 32 messages
- Use message count to determine need for more / fewer servers
Throughput
- Bandwidth: "a few hundred" MB/s
- Single Blob: 60 MB
Entity Groups
- Same table partition
- UP to 100 actions
ACS
- Security Token Service (STS)
- Normalizes claims (can map (rename) claim names based on (amongst other things)
providing organization. For example,: prefferedEMail => EMail
- Intermediate Provider. Normal tokens from 3rd parties to 'Azure' format
- Move ASp.NET cache to resource disk for more space
- OR == table scan, use parallel queries
Misc / Perf
- IIS Warm-up extension
- Move ASp.NET cache to resource disk for more space
- OR == table scan, use parallel queries
- Max 5 upgrade domains
- Min 2 fault domains (e.g. different racks)
- Nodes not limited to 8 CPUs
- 3 VHDs
- C:\ (Disk 1) = Temp DB
- D:\ (Disk 0) = OS Image
- E:\ (Disk 2) = Role
- Allocates
- Hard:
- # instances
- Hareware (CPUs / meme / etc)
- Fault Domains
- Update Domains
- Soft:
- Servicing of host OS / hypervisor (i.e. configurations that sit well with Fault
Domains and Update Domains can be upgrade in parallel)
- Optimized network proximity between instances
- Host OS typically updated once a month
- FC host agent only allows access to IPs of VM on the same service, plus the internet
at large.
- aaS's:
- IaaS = Infrastructure as a Service. On-demand servers. Examples: Amazon EC2, VMWare
vCloud
- PaaS = Platform as a Service. On-demand hosting of services. Examples: Google AppEngine,
Salesforce.com, Azure
- Software as a Service. On-demand applications. Examples: G-Mail