@rob_rich

Amazon Web Services
and
Microsoft Windows Azure

by Rob Richardson

@rob_rich

http://robrich.org/

November 9, 2013

About Me

Rob Richardson is principal of Richardson & Sons, LLC, builder of ASP.NET and Node solutions for small- to medium-sized businesses. Rob has a BFA and MSCIS, and has been building software in .NET and HTML for over a dozen years, and frequently enjoys sharing his passion for software development at user groups and community events. Follow Rob at @rob_rich or on his blog at http://robrich.org/.

What is the cloud?

  • off-site leased digital capacity
  • IaaS, PaaS, SaaS
  • elastic scalability
IaaS PaaS SaaS

Elastic Scalability

  • Identical hardware
  • Simple, web-based provisioning tools

Supports interesting workloads

  • Conferences and events
  • Burstable bandwidth ("slash-dot-ed")
  • "just for the semester"

Elastic Scalability



build Cattle

not Puppies

Architecting for the cloud (PaaS)

  • Don't save to disk
    (it may not be there on reboot)
  • Stateless
  • Don't assume machine name, IP, etc

Cloud Comparison

Amazon Web Services

and

Microsoft Windows Azure

Assumptions (Excuses)

  • Why compare only these items?
  • Because these are the things I know.
  • Why only these vendors?
    Why not my favorite vendor too?
  • Because these are the big dogs.
    Yes, your "big dog" is a big dog too.
    Here's a kitten.
  • You got something wrong.
  • Great! I get to learn something.

Warning: I'm sure in 5 minutes they'll change all this.

Naming of Things

AWS Azure
ALA
(Amazon Likes Acronyms)
Microsoft Windows Azure Likes Very Long Redundant Obvious Product Names v. 2.7 June CTP for Windows Azure

Price

AWS Azure
  • Bean counters make them the same
  • Price periodically drops and frequently changes
  • Pay for CPU time, storage cost, and outbound bandwidth
  • Utility pricing (small money per timeframe)
  • Azure commits to match Amazon pricing

Time Billing Unit

AWS Azure
Hour Minute

Free Trial

AWS Azure
1 year trial for low-capacity content 90-day trial for everything
  Certain products have infinite free tier

Data Ceter Locations

AWS Azure
  • Northern Virginia
  • Northern California
  • Oregon
  • Sydney
  • São Paulo
  • Tokyo
  • Ireland
  • Singapore
  • Virginia
  • California
  • Chicago
  • San Antonio, TX
  • Amsterdam, Netherlands
  • Hong Kong
  • Dublin, Ireland
  • Singapore

* There are also many CDN nodes

Up-time

AWS Azure
100% or it makes the news ...
... and is soon forgotten

Other Platforms by this Vendor

AWS Azure
Kindle Windows Phone, .NET

The corporate culture and product portfolio
leak into their cloud offerings

Hardware Units

AWS Azure
Capacity measured in "CU" (compute unit) Small, Medium, Large
Only full boxes Full boxes and shared hosting

Administration

Admin

AWS Azure
HTML5, easy to navigate if you know where you're looking
REST API does everything the interface can
Amazon SDK adds AWS Explorer to Visual Studio Various Visual Studio hooks, e.g. Servers tab, Web Publish

Admin Interface

AWS Azure

Admin Interface

AWS Azure

IaaS

A durable virtual machine

AWS Azure
EC2 VM

Scaling / Customizing the VM

AWS Azure
  • Create or upload AMI snapshot
  • Clone it many times
  • Place behind Load Balancer
  • Create image or upload VHD
  • Sys-prep it
  • Clone it many times
  • Place behind Load Balancer

Automatic Elastic Scale

AWS Azure
Web: based on network I/O
Worker: based on CPU
based on CPU
Can manually scale in portal

Hybrid IaaS / PaaS

Where you want to control the web server or compute process but don't care about OS administration

Dedicated Web Hosting

AWS Azure
You gotta own the box Web Role (Windows only)

Dedicated compute

AWS Azure
You can embed an MSI in the VM's initialization script
You must also have a web server so the load balancer knows the box is alive
Worker Role (Windows only)

Dedicated compute

AWS Azure
Worker Tier
"a web application that handles background-processing tasks"
Worker Role
SQS queue items are POSTed to your app Infinite loop, typically timer runs tasks
Node, PHP, Python, Ruby, Tomcat .NET
Amazon Linux Windows

Private Network

AWS Azure
Built-in, configured through IAM (security), can include virtual private gateway Azure Network, can include point-to-site or site-to-site VPN

PaaS

"I don't care about anything, I just want my site to run"

Elastic Web

AWS Azure
Elastic Beanstalk Websites
Node, PHP, Python, Ruby, .NET, Java .NET, Node, PHP, Java, Python, Ruby
Most on Linux, .NET on Windows Always Windows

Elastic Compute

AWS Azure
Worker Tier Web Jobs
Node, PHP, Python, Ruby, Tomcat .NET, .bat, .cmd,
.sh, PHP, Python, Node
Most on Linux, .NET on Windows Linux and Windows

Non-incremental deploy process

AWS Azure
  • Upload msdeploy package via SDK or portal
  • Creates new EC2 instance with web server
  • Installs msdeploy package
  • Puts machine behind load balancer
  • Kills old EC2 instance (if any)
  • auto- or manually-scale machine count
  • FTP site contents or upload zip in portal
  • Creates website or uses existing site
  • Installs content
  • Placed behind load balancer
  • auto- or manually-scale machine count

Incremental-update deploy process

AWS Azure
  • Unzipped msdeploy package contents checked into local git repository *
  • SDK does git push
    (can't do it manually)
  • Installs content to existing sites
  • "git push azure master"
    (or specified branch)

* MSDeploy package embeds creation path,
Windows PATH is limited to 255 characters,
Unzipping an MSDeploy package in place doubles the folder nesting,
This frequently breaks because of the 255 character limit

Update deployment time

a minute or two a dozen seconds

SSL

AWS Azure
Upload CER and Key Upload PFX
Use X-Forward* headers .NET magic voodoo

Note: neither vendor sells SSL certificates

Elastic Scale to
the Apex ("naked") domain

AWS Azure
"Don't use Elastic BeanStalk and Elastic IPs, they're different abstractions" Map DNS to IP specified in the portal
Add "awverify" DNS record

Database

Traditional Database

  AWS Azure
SQL Database RDS is a machine with the db software pre-installed Azure SQL Database is a limited version of SQL Server, other DBs are available as VMs in the gallery
NoSQL Database DynamoDB or "You can install that on your VM" "Pick from available images in the gallery"

Other DBs

  AWS Azure
Key/Value / Big Data DynamoDB Tables
Blob / File storage S3 Block Blobs
Block / Drive storage EBS Page Blobs
Queue / Service Bus SQS Queues (lite), Service Bus (big)
Long-term Storage Glacier n/a

Security

Security Mechanism

AWS Azure
IAM Active Directory

Delegated Authority

AWS Azure
create users in IAM, create permission sets with approved features, assign permission sets to machines and roles, assign roles to users Add Windows Live or AD account to the subscription

Service Authentication

AWS Azure
  • S3: Key and secret
  • Elastic Search: IP only
  • Rest: IAM users
  • Blobs: Key and secret
  • Rest: IP or "Azure services allowed" checkbox

Other services

Other Services

  AWS Azure
Send Email SES Just send the email
Hadoop Elastic MapReduce HDInsight
Push notification SNS:
to iOS, Android, and Kindle
part of Mobile Services:
to iOS, Android, and Windows Phone
In-memory cache ElastiCache Cache

Unique Services

AWS Azure
  • CloudSearch
  • CloudFormation: templated AWS resource creation
  • SWF: workflow processing
  • CloudWatch: monitoring
  • Route 53: DNS
  • Elastic IP
  • Red-Shift: data warehouse
  • Mobile Services:
    • REST services
    • dynamic schema storage
    • delegated trust authentication (Facebook, Google, etc)
    • push notification to iOS, Android, and Windows Phone
  • Media Services: video encoding
  • Scheduler

Regulatory Compliance

AWS Azure
aws.amazon.com/compliance windowsazure.com/en-us/support/trust-center/compliance

* I'm not a lawyer, seek legal counsel, get a second opinion, eating fatty foods leads to obesity, smoking leads to smoke inhilation, I'm not responsible for your use of this knowledge

Summary Comparisons

Pros

AWS Azure
  • Much better brand recognition
  • S3 is the defacto standard for cloud storage
  • Many businesses build atop AWS: Nodejitsu, Pinterest, Bitnami, Minecraft
  • Git deploy "just works"
  • Billed by the minute
  • Dedicated and shared hosting

Cons

AWS Azure
  • Incremental deploy based on unzipped msdeploy, msdeploy is awful
  • Security is wicked confusing
  • Azure SQL is a subset of the full SQL Server
  • Windows-centric: e.g. Node hosting is on Windows, no Worker Role for *nix, security through AD

General Cloud Evaluation

Pros Cons
  • Elastic scale
  • Easily provision and retire resources
  • Need to architect differently
  • Big dogs are designed for the general use-case, finding a vendor-specific service may be faster / better service

Which to Choose?

"It depends"

  • do you need services that one offers but the other doesn't?
  • which brand to you prefer / hate?
  • what other systems do you have, what brands are they?

Is it time to move to the Cloud?

  • do you have cultural or regulatory requirements that block the move?
  • do you have existing investments?
    • dificult to move
    • need to rewrite
  • do you have spikes in your workloads?
  • what are your customers' and vendors' needs / systems?

Questions?

@rob_rich

http://robrich.org/