Public clouds platforms are rapidly growing and many businesses move partially or fully their IT infrastructure to the cloud. The big players like Microsoft, Google, Oracle and Amazon operate their own public cloud platforms while the smaller players provide cloud services and PaaS platforms and on top of the larger. What about the .NET developers and the cloud?
In this talk the speaker Svetlin Nakov introduces the public .NET clouds and compares the leading .NET PaaS clouds: Windows Azure, AppHarbor, Uhuru and AWS Elastic Beanstalk for .NET. The .NET public clouds are compared in terms of architecture, programming model, pricing, development stack, available services, deployment model and tools for administration and monitoring. A live demo shows how to deploy and run a typical .NET application (based on ASP.NET MVC and MS SQL Server) in AppHarbor and Uhuru.
Table of contents:
- 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
The presentation was delivered at DevReach 2012 (www.devreach.com) by Svetlin Nakov (www.nakov.com) in Sofiа on 4 October 2012.
YouTube video for this presentation: http://youtu.be/H2Jjiu8VyCk
4. 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
5. 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
6. 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
7. Typical Cloud Architecture
The typical cloud architecture is multi-tier,
SOA, highly-scalable and highly-available
Load Balancer
Administration
Monitoring
Computing Computing … Computing
Node Node Node
Data- Storage Back-End Other
bases Services Services Services
At each tier different managed services,
technologies and languages can run
www.devreach.com
8. 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
9. Public .NET Clouds
Develop and Run .NET Apps in the Cloud
www.devreach.com
10. 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
11. 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
12. 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
13. Windows Azure
Hosting .NET Projects in Azure
www.devreach.com
14. 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
15. Windows Azure – Architecture
Azure Load Balancer
Visual Studio + Azure Tools
Management Portal
Compute Compute Compute
Windows Azure
(Web role) (Worker role) (VM role)
VM running IIS7 Windows VM Windows VM
ASP.NET / PHP / C# / .NET code / Custom
other Java code software
SQL
Tables Blobs Queues CDN
Azure
Other Azure / external services
www.devreach.com
16. 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
17. 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
19. 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
20. Amazon Web Services (AWS)
Hosting .NET Projects in AWS Beanstalk .NET
www.devreach.com
21. 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
22. AWS Architecture
Elastic Load Balancing (ELB)
Python + VS / Eclipse Plugins
AWS SDK for Java, C#, PHP,
AWS Management Console
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 SWF
Other AWS / external services
(ElastiCache, CloudFront CDN, SES, …)
www.devreach.com
23. 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
24. 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
25. 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
34. Uhuru AppCloud
Hosting .NET Projects in Uhuru
www.devreach.com
35. 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
36. Uhuru AppCloud Architecture
Load Balancer (Nginx on Ubuntu Linux)
UhuruCloud.com Web Interface
Uhuru Cloud Manager
Linux / Windows Linux / Windows
App Servers App Servers
Managed IIS Managed Apache /
environment Tomcat environment
C# / ASP.NET MVC / Apache + PHP / Ruby /
Web Forms / WCF Node.js / Tomcat + Java
Managed SQL
MongoDB RabitMQ
Server / MySQL
Other Uhuru Add-On Services
www.devreach.com
37. 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
38. 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
39. Uhuru: Live Demo
ASP.NET MVC Project Deployment
www.devreach.com
40. 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
41. 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
42. Public Cloud Platforms
for .NET Developers
Thank you!
@svetlinnakov
nakov.com
bg.linkedin.com/in/nakov
Svetlin Nakov | Telerik
www.devreach.com
43. 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