430 likes | 677 Views
.NET Clouds. Public Cloud Platforms for .NET Developers. Svetlin Nakov | Telerik. 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
E N D
.NET Clouds Public Cloud Platformsfor .NET Developers Svetlin Nakov | Telerik 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
Overview, IaaS, SaaS, PaaS Public Cloud Platforms
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
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 + 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)
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, …
Typical Cloud Architecture • The typical cloud architecture is multi-tier, SOA, highly-scalable and highly-available • At each tier different managed services, technologies and languages can run Monitoring Load Balancer Administration Computing Node Computing Node Computing Node … Data-bases Storage Services Back-End Services Other Services
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, …
Develop and Run .NET Apps in the Cloud Public .NET Clouds
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?
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
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, …
Hosting .NET Projects in Azure Windows Azure
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
Windows Azure – Architecture Azure Load Balancer Visual Studio + Azure Tools Windows AzureManagement Portal Compute (Web role) Compute (Worker role) Compute (VM role) Windows VM VM running IIS7 Windows VM C# / .NET code / Java code Custom software ASP.NET / PHP / other Queues CDN SQL Azure Tables Blobs Other Azure / external services
Windows Azure Services • Windows Azure Compute • Computing instances run Windows OSand applications (CPU + RAM + HDD) • Web / Worker / VM / Persistent VM role • Storage Services • AzureBlobs / Drives • Blob / file storage / NTFS volumes • Azure Table Storage – NoSQL cloud DB • Azure Queue Storage – message queue
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
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) Pricing
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
Hosting .NET Projects in AWS Beanstalk .NET Amazon Web Services (AWS)
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!
AWS Architecture AWS SDK for Java, C#, PHP,Python + VS / Eclipse Plugins Elastic Load Balancing (ELB) AWS Management Console EC2 Instances + Storage (EBS) Any OS and development platformC# / 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, …)
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
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, ...
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
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) Pricing
Hosting .NET Projects in AppHarbor AppHarbor
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
AppHarbor Architecture Load Balancer (Nginx) AppHarbor Applications Management Console Visual Studio + Git Web worker instances Background workers Managed Windows environment Managed IIS environment C# / ASP.NET MVC /Web Forms / WCF C# code IronMQ, RabitMQ Managed SQL Server / MySQL MongoDB, CouchDB Other AppHarbor Add-On Services
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)
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)
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 Pricing
ASP.NET MVC Project Deployment AppHarbor: Live Demo
Hosting .NET Projects in Uhuru Uhuru AppCloud
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
Uhuru AppCloud Architecture UhuruCloud.com Web Interface Load Balancer (Nginx on Ubuntu Linux) Uhuru Cloud Manager Linux / WindowsApp Servers Linux / WindowsApp Servers Managed Apache /Tomcat environment Managed IISenvironment C# / ASP.NET MVC /Web Forms / WCF Apache + PHP / Ruby /Node.js / Tomcat + Java RabitMQ Managed SQL Server / MySQL MongoDB Other Uhuru Add-On Services
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)
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 Pricing
ASP.NET MVC Project Deployment Uhuru: Live Demo
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 still not 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
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
Thank you! @svetlinnakov nakov.com bg.linkedin.com/in/nakov • Public Cloud Platformsfor .NET Developers Svetlin Nakov | Telerik
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