Public Cloud Platforms for .NET Developers - Svetlin Nakov

advertisement
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
Download