Survey							
                            
		                
		                * Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Software Development for the Public Cloud Platforms: Azure vs. App Engine vs. Amazon Svetlin Nakov Telerik Software Academy http://academy.telerik.com Agenda  The Cloud from Developers‘ Perspective  Windows Azure  Google App Engine (GAE)  Amazon Web Services (AWS)  AppHarbor 2 The Cloud from Developers' Perspective 4 Cloud??? WTF?!? Computer Located OUtside of Data Center What is Cloud? Cloud ≈ multiple hardware machines combine computing power and resources  Share them between multiple applications  To save costs and use resources more efficiently Public clouds  Provide computing resources on demand  Publicly in Internet  Paid or free of charge (to some limit)  Azure, Amazon AWS, Google App Engine, AppHarbor, Rackspace, Heroku, … 5 Why Cloud Matters? Microsoft Azure IBM Cloud Apple iCloud Oracle Public Cloud SAP NetWeaver on Demand Google App Engine Amazon Web Services HP Cloud Services VMware Cloud Foundry The Rackspace Cloud Cisco Cloud Applications and Services Intel Hybrid Cloud Dell Cloud Computing Solutions Adobe Creative Cloud CA Cloud Solutions Symantec.cloud services Salesforce Force.com Cloud Computing Platform EMC Atmos Cloud Delivery Platform 6 Cloud Computing 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 Java + JBoss + JSF + JPA + MongoDB JavaScript + Node.js + MongoDB + RabbitMQ Software as a Service (SaaS)  Hosted application on demand (e.g. WordPress or SugarCRM) 7 Cloud for Developers Moving to the cloud will require new skills  New paradigms and APIs  E.g. NoSQL databases and MapReduce  New platforms and technologies  New deployment model The cloud still supports your existing skills  Known technologies, e.g. ASP.NET and WCF  Your favorite programming languages  Like C#, Java and PHP  Relational databases and SQL 8 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 Administration Monitoring Load Balancer 9 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, … 10 Windows Azure Windows Azure Microsoft Windows Azure  Fast-growing public cloud  Provides rich PaaS platform  Mainly for .NET developers  Supports all major .NET technologies  ASP.NET MVC, WCF, ADO.NET EF, WWF, …  Provides also Java, PHP and Node.js APIs  No free version, only 3 months trial  Bulgarian citizens cannot register! 12 Azure Load Balancer 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 Windows Azure Management Portal Visual Studio + Azure Tools Azure Architecture CDN Other Azure / external services 13 Windows Azure Services Windows Azure Compute  Computing instances run Windows OS and applications (CPU + RAM + HDD)  Web role  Internet Information Services (IIS) machine for hosting Web applications and WCF services  Worker role  Long-running computations  VM role  Windows VM (non-persistent) 14 Windows Azure Services (2) Azure data storage services  Azure Table Storage  Distributed highly-scalable cloud database (stores entities with properties)  Azure Queue Storage  Message queue service  Azure Blobs / Drives  Blob / file storage  NTFS volumes 15 Windows Azure Services (3) SQL Azure  SQL Server 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 16 Azure Pricing Computing Nodes  Shared CPU, 768 MB RAM  $0.02 / hour ($15 / month)  1 Core, 1.75 GB RAM  $0.12 / hour ($90 / month) Storage  $0.125 / GB + $0.01 / 10000 operations SQL Azure Database  100 MB – $0.0067 / hour ($5 / month)  1 GB – $0.0133 / hour ($10 / month) 17 Windows Azure Live Demo Google App Engine (GAE) Google App Engine Google App Engine (GAE)  Leading Java and Python PaaS public cloud  Infrastructure similar to the one driving GMail and Google Docs operated by Google  http://code.google.com/appengine/ App Engine has a completely free version  Provides CPU / bandwidth / storage capable to serve 5 000 000 page views / month  Instant registration  Confirmation by SMS 20 Load Balancer (Google Front-End Server) App Engine Instances Backends Sandbox running JVM / Python interpreter Sandbox running JVM / Python Java code / Java Web application / Python app Java code Data store Cloud SQL Blob store Map Reduce Tasks queue Google App Engine Management Dashboard Eclipse + Google Plugin for Eclipse App Engine Architecture Other App Engine / external services (Channel API, Memcache, Email, …) 21 App Engine Services App Engine instances  Computing units that host the applications  Fully managed sandboxes (not VMs!)  Provide CPU + RAM + storage + language runtime  appengine.google.com App Engine backends  Like the App Engine instances  But provides higher computing resources  Used for background processing 22 App Engine Services (2) App Engine datastores  Provide NoSQL schemaless object database  Supports transacts and a query-engine (GQL)  High-replication datastore (HRD)  Master-slave datastore (faster, less-reliable) Cloud SQL  Managed MySQL in App Engine Blobstore / Cloud Storage  Store files / blobs  Has with ACL and REST API 23 App Engine Services (3) MapReduce API  Highly-scalable parallel computing API for heavy computing tasks (based on Hadoop) Channel API  Push notifications for JavaScript applications Task Queues  Services for execution of background work Memcache  Distributed in-memory data cache 24 App Engine Pricing On-demand Frontend instances  1 instance free  $0.08 / hour ($60 / month) High Replication Datastore (HRD)  1 GB free  $0.24 / GB / month ($0.00032 / GB / hour) Each API has free quota and price per usage  Blobstore API: 5 GB free; $0.13 / GB / month  Datastore API: 50K free; $0.10 / 100k write operations 25 Google App Engine (GAE) Live Demo Amazon Web Services Amazon Web Services Amazon Web Services (AWS)  The pioneer of the public clouds  Provides cloud platform and services from 2002  Provides IaaS and PaaS on demand Amazon Elastic Compute Cloud (Amazon EC2)  Virtual machines on demand  Runs Windows / Linux / other OS  Several locations: US, EU, Japan, Brazil, …  http://aws.amazon.com/ec2/ 28 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 Dynamo DB S3 EBS SQS SWF AWS Management Console AWS SDK for Java, C#, PHP, Python, …, + VS/ Eclipse Plugins AWS Architecture Other AWS / external services (ElastiCache, CloudFront CDN, SES, …) 29 AWS Services Amazon Elastic Block Store (Amazon EBS)  Virtual hard disk (HDD) volumes  Used with the EC2 to keep the OS file system  http://aws.amazon.com/ebs/ Amazon Simple Storage Service (Amazon S3)  Host binary data (files, images, videos, etc.)  Accessible through the Web  With or without authentication  http://aws.amazon.com/s3/ 30 AWS Services (2) Amazon DynamoDB / SimpleDB  Managed NoSQL cloud database  Highly scalable, fault-tolerant  DynamoDB – newer & faster than SimpleDB  http://aws.amazon.com/dynamodb/ Amazon Relational Database Service (RDS)  Managed MySQL and Oracle databases  Scalability, automated backup, replication  http://aws.amazon.com/rds/ 31 AWS Services (3) Other AWS services  Amazon SQS (message queue)  Amazon CloudFront (content delivery network)  Amazon ElastiCache (caching)  Amazon Route 53 (cloud DNS)  Amazon SES (email) Pricing  On-demand pricing (per hour / per GB)  1-year free trial (credit card required) 32 Amazon AWS Pricing On-Demand EC2 Instances  1 Core, 1.7 GB RAM, Linux  $0.08 / hour ($60 / month)  1 Core, 1.7 GB RAM, Windows  $0.115 / hour ($86 / month) Storage (EBS)  $0.10 / GB + $0.10 per 1 million requests Oracle Database (1 Core, 1.7 GB RAM)  DB instance: $0.155 / hour ($116 / month)  DB storage: paid like EBS storage 33 AppHarbor .NET Cloud Made Easy AppHarbor AppHarbor – cloud platform for .NET apps  Supports a classical .NET development stack  C#, .NET Framework, ASP.NET (Web Forms and MVC), WCF, WWF, 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 35 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 AppHarbor Applications Management Console Visual Studio + Git Load Balancer (Nginx) Other AppHarbor Add-On Services 36 AppHarbor: Add-Ons Airbrake (error logging) Blitz (performance monitoring) CloudAMQP (RabbitMQ) Cloudant (CouchDB) CloudMailin (incoming email) Dedicated SQL Server JustOneDB (NoSLQ database) Logentries (log management) Mailgun (email send / receive) 37 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) 38 AppHarbor Pricing AppHarbor free plan  1 Web worker instance per application  Unlimited applications  20 MB SQL Server + 20 MB MySQL Paid plans  $49 month per instance (Web worker or Background worker)  10 GB Shared SQL Server DB – $10 / month  10 GB Shared MySQL DB – $10 / month  Custom domain – $10 / month 39 AppHarbor Live Demo More Resources Free Cloud Development Course  Each Wednesday, Telerik Software Academy  clouddevcourse.telerik.com 41 Software Development for the Public Cloud Platforms: Azure vs. App Engine vs. Amazon Questions? http://academy.telerik.com