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
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 |
Hardware Units
AWS |
Azure |
Capacity measured in "CU" (compute unit) |
Small, Medium, Large |
Only full boxes |
Full boxes and shared hosting |
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 |
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
|
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 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
|
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
* 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
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?