Public Cloud Platforms for .NET Developers - Svetlin Nakov
Download
Report
Transcript Public Cloud Platforms for .NET Developers - Svetlin Nakov
Public Cloud Platforms
for .NET Developers
Svetlin Nakov | Telerik
www.devreach.com
Sofia, 4-5 October 2012
Agenda
Public Cloud Platforms
Typical Cloud Architecture
Public .NET Cloud Platforms
Cloud Types: IaaS vs. PaaS
Windows Azure
Amazon AWS (+ Beanstalk for .NET)
AppHarbor
Uhuru
Choosing a .NET Cloud
www.devreach.com
Public Cloud Platforms
Overview, IaaS, SaaS, PaaS
www.devreach.com
What is Cloud?
Cloud ≈ multiple hardware machines
combine computing power and resources
Share them between multiple applications
To save costs and use resources efficiently
Cloud for Developers?
New paradigms and APIs
E.g. NoSQL databases and MapReduce
New platforms and technologies
New deployment model
www.devreach.com
Cloud Models
Infrastructure as a Service (IaaS)
Virtual machines in the cloud on demand
Users install the OS and software they need
Platform as a Service (PaaS)
Platform, services and APIs for developers
E.g. .NET + IIS + ASP.NET + WCF + SQL Azure
JavaScript + Node.js + MongoDB + RabbitMQ
Software as a Service (SaaS)
Hosted application on demand (e.g. Bugzilla,
WordPress, Sitefinity or SugarCRM)
www.devreach.com
Public Clouds
Provide computing resources on demand
Publicly in Internet, for everyone
Paid or free of charge (to some limit)
Could be IaaS, PaaS, SaaS or mix of them
Examples of public clouds
Amazon AWS, Google App Engine, Windows
Azure, Rackspace, Heroku, Engineyard,
AppForce, PHP Fog, AppHarbor, Uhuru,
OpenShift, CloudBees, CloudSwing, Oracle
Public Cloud, Salesforce, WordPress.com, …
www.devreach.com
Typical Cloud Architecture
The typical cloud architecture is multi-tier,
SOA, highly-scalable and highly-available
Computing
Node
Databases
Computing
Node
Storage
Services
…
Back-End
Services
Computing
Node
Other
Services
At each tier different managed services,
technologies and languages can run
www.devreach.com
Administration
Monitoring
Load Balancer
Typical Cloud Architecture (2)
Computing Nodes
Host and run your applications
Different languages and frameworks
E.g. C# + ASP.NET MVC or PHP + Symfony
Stateless by design
Databases and Storage
Relational and NoSQL databases
Blob storage, file storage, CDN
Other Services
Queues, notifications, logging, email, …
www.devreach.com
Public .NET Clouds
Develop and Run .NET Apps in the Cloud
www.devreach.com
Public .NET Clouds
I am .NET developer
I want to use a .NET cloud for my apps
What I can do?
IaaS vs. PaaS approach
IaaS: VPS or cloud hosting
Rackspace / Tier3 / any hosting provider
PaaS: write your app for certain platform
Azure, AWS, AppHarbor, Uhuru, other?
www.devreach.com
IaaS for .NET Developers
IaaS / VPS / cloud hosting
Could work well for .NET applications
Offered by hundreds of hosting providers
Full control over the production servers
Limited support:
E.g. DB server failure fix it yourself!
Difficulties to configure high-availability +
load balancing
www.devreach.com
PaaS for .NET Developers
Two types of .NET PaaS clouds:
Microsoft Azure
Write your app against the Azure APIs
E.g. use SQL Azure, not SQL Server
Vendor lock-in
AWS, AppHarbor, Uhuru
Write your app purely in .NET
Use IIS, SQL Server, ASP.NET, WCF, …
www.devreach.com
Windows Azure
Hosting .NET Projects in Azure
www.devreach.com
Windows Azure
Microsoft Windows Azure
Fast-growing public cloud from MS
Provides rich PaaS platform
Supports all major .NET technologies
ASP.NET MVC, WCF, ADO.NET EF, …
.NET applications need adoption to run
Supports also Java, PHP and Node.js
3 months trial + free shared instance
Mobile phone + credit card required
www.devreach.com
Windows Azure – Architecture
Compute
(Web role)
Compute
(Worker role)
Compute
(VM role)
VM running IIS7
Windows VM
Windows VM
ASP.NET / PHP /
other
C# / .NET code /
Java code
Custom
software
SQL
Azure
Tables
Blobs
Queues
Other Azure / external services
www.devreach.com
CDN
Windows Azure
Management Portal
Visual Studio + Azure Tools
Azure Load Balancer
Windows Azure Services
Windows Azure Compute
Computing instances run Windows OS
and applications (CPU + RAM + HDD)
Web / Worker / VM / Persistent VM role
Storage Services
Azure Blobs / Drives
Blob / file storage / NTFS volumes
Azure Table Storage – NoSQL cloud DB
Azure Queue Storage – message queue
www.devreach.com
Windows Azure Services (2)
SQL Database (SQL Azure)
SQL Server-like in the cloud
Highly-available and scalable relational DB
Azure Business Analytics
Create reports with tables, charts, maps, etc.
Azure Caching
Distributed, in-memory, application cache
Azure CDN
Content delivery network
www.devreach.com
Azure Pricing (Rough)
Computing Instances
Shared CPU, 768 MB RAM
$0.02 / hour ($15 / month)
1 Core, 1.75 GB RAM, 225 GB HDD
$0.12 / hour ($90 / month)
Storage:
$0.125 / GB + $0.01 / 100 000 operations
SQL Database (not real SQL Server!)
100 MB – $0.0067 / hour ($5 / month)
1 GB – $0.0133 / hour ($10 / month)
www.devreach.com
Azure Free Web Site Instance
Windows Azure Web Sites
Host ASP.NET / PHP / Node.js web sites
Web Sites Free Shared Instance
10 sites on the azurewebsites.net domain
165 MB of outbound data per day,
unlimited inbound data
1 GB storage (shared by all sites)
20 MB of a third-party MySQL database
www.devreach.com
Amazon Web Services (AWS)
Hosting .NET Projects in AWS Beanstalk .NET
www.devreach.com
Amazon Web Services (AWS)
Amazon Web Services (AWS)
The pioneer of the public clouds
Provides IaaS and PaaS on demand from 2002
Amazon Elastic Compute Cloud (Amazon EC2)
Linux / Windows VMs on demand
US, EU, Japan, Brazil, Singapore, …
No free version, only 1 year trial
Credit card required, but beware:
AWS charge for resources not being used!
www.devreach.com
Elastic Load Balancing (ELB)
EC2 Instances + Storage (EBS)
Any OS and development platform
C# / Java / PHP / Python / Ruby / …
Any development framework (.NET / Java EE /
Symfony / Zend / Django / Rails / Node.js)
RDB
DynamoDB
S3
EBS
SQS
Other AWS / external services
(ElastiCache, CloudFront CDN, SES, …)
www.devreach.com
SWF
AWS Management Console
AWS SDK for Java, C#, PHP,
Python + VS / Eclipse Plugins
AWS Architecture
AWS Services
Amazon Elastic Block Store (Amazon EBS)
Virtual hard disk (HDD) volumes
Amazon Simple Storage Service (Amazon S3)
Host binary data (files, images, videos, etc.)
Amazon DynamoDB / SimpleDB
Managed NoSQL cloud database
Amazon Relational Database Service (RDS)
Managed MySQL and Oracle databases
www.devreach.com
AWS Services (2)
Other AWS services
Amazon SQS (message queue)
Amazon CloudFront (CDN)
Amazon ElastiCache (caching)
Amazon Route 53 (cloud DNS)
Amazon SES (email)
Amazon FPS (payments)
More services at the AWS Marketplace
MongoDB, Redis, LAMP, Business Objects, ...
www.devreach.com
AWS Elastic Beanstalk for .NET
Amazon Beanstalk for .NET
Automatically allocates AWS services
Amazon EC2 (computing instance)
Amazon S3 (storage)
Amazon SNS (notifications)
Elastic Load Balancing + Auto Scaling
Simplified deployment of .NET apps
Through Visual Studio / AWS Console
Automatic load balancing + auto-scaling
www.devreach.com
Amazon AWS Pricing (Rough)
On-Demand EC2 Instances
1 Core, 1.7 GB RAM,
160 GB HDD, Windows
$0.115 / hour ($86 / month)
Storage (EBS)
$0.10 / GB + $0.10 per 1 million I/O requests
SQL Server Database (Web Edition)
1 CPU, 630 MB RAM: $0.17 / hour ($126 / mo)
1 CPU, 1.7 GB RAM: $0.59 / hour ($439 / mo)
www.devreach.com
AppHarbor
Hosting .NET Projects in AppHarbor
www.devreach.com
AppHarbor
AppHarbor – cloud platform for .NET apps
Classical .NET development stack
C#, .NET Framework, IIS, ASP.NET, WCF, SQL
Server, ADO.NET Entity Framework, …
Deployment through Git / SVN / TFS
Automated build process
(compilation + unit tests)
Build-in load balancing
Built on top of Amazon AWS
Rich set of add-on services
www.devreach.com
AppHarbor Architecture
Web worker instances
Background workers
Managed IIS environment
Managed Windows
environment
C# / ASP.NET MVC /
Web Forms / WCF
C# code
Managed SQL
Server / MySQL
MongoDB,
CouchDB
IronMQ,
RabitMQ
Other AppHarbor Add-On Services
www.devreach.com
AppHarbor Applications
Management Console
Visual Studio + Git
Load Balancer (Nginx)
AppHarbor: Add-Ons
Airbrake (error logging)
Blitz (performance monitoring)
CloudAMQP (RabbitMQ)
Cloudant (CouchDB)
CloudMailin (incoming email)
Dedicated SQL Server
JustOneDB (NoSQL database)
Logentries (log management)
Mailgun (email send / receive)
www.devreach.com
AppHarbor: Add-Ons (2)
Memcacher (in-memory caching)
MongoHQ (managed MongoDB)
MongoLab (managed MongoDB)
MySQL (shared MySQL DB)
RavenHQ (NoSQL database)
Redis To Go (key-value store)
SendGrid (email delivery)
StillAlive (app monitoring)
Shared SQL Server (managed instance)
www.devreach.com
AppHarbor Pricing
AppHarbor free plan
1 Web worker instance per application
20 MB SQL Server + 20 MB MySQL
Unlimited # of apps
(@ apphb.com subdomain)
Paid plans
$49 month per worker instance
10 GB Shared SQL Server DB – $10 / month
10 GB Shared MySQL DB – $10 / month
Custom domain – $10 / month
www.devreach.com
AppHarbor: Live Demo
ASP.NET MVC Project Deployment
www.devreach.com
Uhuru AppCloud
Hosting .NET Projects in Uhuru
www.devreach.com
Uhuru AppCloud
Cloud platform based on CloudFoundry
Supports PHP, Node.js, Ruby, Java and .NET
Has classical .NET development stack
C#, .NET Framework, IIS, ASP.NET, WCF, SQL
Server, ADO.NET Entity Framework, …
Proprietary deployment model
Build-in load balancing
Hosted at Inernap Network ISP
Limited set of add-on services
www.devreach.com
Load Balancer (Nginx on Ubuntu Linux)
Linux / Windows
App Servers
Linux / Windows
App Servers
Managed IIS
environment
Managed Apache /
Tomcat environment
C# / ASP.NET MVC /
Web Forms / WCF
Apache + PHP / Ruby /
Node.js / Tomcat + Java
Managed SQL
Server / MySQL
MongoDB
Other Uhuru Add-On Services
www.devreach.com
RabitMQ
Uhuru Cloud Manager
UhuruCloud.com Web Interface
Uhuru AppCloud Architecture
Uhuru AppCloud Services
Uhuru supports limited set of services:
Managed SQL Server
Managed MySQL
Managed RabbitMQ (message queue)
Managed Redis (key-value store)
Managed file system storage (UhuruFS)
Managed MongoDB (NoSQL database)
www.devreach.com
Uhuru Pricing
Uhuru AppCloud Ready To Go
Currently in Beta
Entirely free
For apps, databases, storage
After the commercial launch
Based on allocated RAM for each app
Databases and Storage prices separately
A free limited version will still be available
www.devreach.com
Uhuru: Live Demo
ASP.NET MVC Project Deployment
www.devreach.com
Other .NET Clouds
Apprenda
Develop for .NET locally in a VM, deploy the VM
into any public IaaS cloud (e.g. in AWS)
Hosted ApprendaCloud just became available
AppFog
.NET support still unavailable (as of 09/2012)
Heroku
Claim to support Mono apps on a Linux cloud
Moncai
.NET (Mono) cloud – not very active project
www.devreach.com
Choosing a .NET Cloud
For large complex .NET applications
IaaS hosting (AWS / Rackspace / other)
Build the infrastructure yourself
Azure – applications may need adoption
For small applications / ASP.NET sites
AppHarbor – recommended
Azure Web Sites Free
Beware of hidden charges
Uhuru AppCloud – still in beta
www.devreach.com
Public Cloud Platforms
for .NET Developers
Thank you!
@svetlinnakov
nakov.com
bg.linkedin.com/in/nakov
Svetlin Nakov | Telerik
www.devreach.com
Free Trainings @ Telerik Academy
“Cloud Development" course @
Telerik Software Academy
clouddevcourse.telerik.com
Telerik Software Academy
academy.telerik.com
Telerik Academy @ Facebook
facebook.com/TelerikAcademy
Telerik Software Academy Forums
forums.academy.telerik.com
www.devreach.com