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