Public Cloud Platforms for.NET Developers Sofia, 4-5 October 2012 Svetlin Nakov | Telerik
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 + 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)
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 … MonitoringAdministration Data- bases Storage Services Back-End Services Other Services Load Balancer Computing Node
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, , …
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
SQL Azure TablesBlobs Windows Azure – Architecture Visual Studio + Azure Tools Windows Azure Management Portal Windows Azure Management Portal Compute (Worker role) Compute (VM role) Compute (Web role) VM running IIS7 Windows VM QueuesCDN Other Azure / external services C# /.NET code / Java code Custom software ASP.NET / PHP / other 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
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 / operations SQL Database (not real SQL Server!) 100 MB – $ / hour ($5 / month) 1 GB – $ / hour ($10 / month)
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 EC 2 ) 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 RDBS3 AWS SDK for Java, C#, PHP, Python + VS / Eclipse Plugins AWS Management Console AWS Management Console EC2 Instances + Storage (EBS) Any OS and development platform C# / Java / PHP / Python / Ruby / … Other AWS / external services (ElastiCache, CloudFront CDN, SES, …) DynamoDBSQSEBSSWF Any development framework (.NET / Java EE / Symfony / Zend / Django / Rails / Node.js) Elastic Load Balancing (ELB)
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 ( ) 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)
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 Managed SQL Server / MySQL MongoDB, CouchDB Visual Studio + Git AppHarbor Applications Management Console AppHarbor Applications Management Console Load Balancer (Nginx) Background workers Web worker instances Managed IIS environment C# / ASP.NET MVC / Web Forms / WCF Managed Windows environment C# code IronMQ, RabitMQ Other AppHarbor Add-On Services
AppHarbor: Add-Ons Airbrake (error logging) Blitz (performance monitoring) CloudAMQP (RabbitMQ) Cloudant (CouchDB) CloudMailin (incoming ) Dedicated SQL Server JustOneDB (NoSQL database) Logentries (log management) Mailgun ( 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 ( 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
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 Managed SQL Server / MySQL MongoDB UhuruCloud.com Web Interface Uhuru Cloud Manager Uhuru Cloud Manager Load Balancer (Nginx on Ubuntu Linux) Linux / Windows App Servers Managed IIS environment C# / ASP.NET MVC / Web Forms / WCF Managed Apache / Tomcat environment Apache + PHP / Ruby / Node.js / Tomcat + Java RabitMQ 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
ASP.NET MVC Project Deployment Uhuru: Live Demo
Other.NET Clouds Apprenda 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 AppFog .NET support still unavailable (as of 09/2012) Heroku Heroku Claim to support Mono apps on a Linux cloud Moncai 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 nakov.com bg.linkedin.com/in/nakov Svetlin Nakov | Telerik Public Cloud Platforms for.NET Developers
Free Telerik Academy “Cloud Development" Telerik Software Academy clouddevcourse.telerik.com clouddevcourse.telerik.com Telerik Software Academy academy.telerik.com academy.telerik.com Telerik Facebook facebook.com/TelerikAcademy facebook.com/TelerikAcademy Telerik Software Academy Forums forums.academy.telerik.com forums.academy.telerik.com