420 likes | 541 Views
Svetlin Nakov Telerik Software Academy. Public. Clouds. Software Development for the Public Cloud Platforms: Azure vs. App Engine vs. Amazon. http://academy.telerik.com. The Cloud from Developers‘ Perspective Windows Azure Google App Engine (GAE) Amazon Web Services (AWS) AppHarbor.
E N D
Svetlin Nakov Telerik Software Academy Public Clouds Software Development for the Public Cloud Platforms: Azure vs. App Engine vs. Amazon http://academy.telerik.com
The Cloud from Developers‘ Perspective Windows Azure Google App Engine (GAE) Amazon Web Services (AWS) AppHarbor Agenda Public Clouds
Cloud??? WTF?!? Cloud forDevelopers? Computer Located OUtside of Data Center WTF?
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, …
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 Applicationsand Services Intel Hybrid Cloud Dell Cloud ComputingSolutions Adobe Creative Cloud CA Cloud Solutions Symantec.cloud services Salesforce Force.comCloud Computing Platform EMC Atmos CloudDelivery Platform
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)
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
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
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, …
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!
Azure Architecture Azure Load Balancer Visual Studio + Azure Tools Windows AzureManagement Portal 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 CDN Other Azure / external services
Windows Azure Services • Windows Azure Compute • Computing instances run Windows OSand applications (CPU + RAM + HDD) • Web role • Internet Information Services (IIS) machine for hosting Web applicationsand WCF services • Worker role • Long-running computations • VM role • Windows VM (non-persistent)
Windows Azure Services (2) • Azure data storage services • Azure Table Storage • Distributed highly-scalable clouddatabase (stores entities with properties) • Azure Queue Storage • Message queue service • AzureBlobs/ Drives • Blob / file storage • NTFS volumes
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
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) Pricing
Windows Azure Live Demo
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 5000000 page views / month • Instant registration • Confirmation by SMS
App Engine Architecture Load Balancer (Google Front-End Server) Eclipse +Google Plugin for Eclipse Google App Engine Management Dashboard 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 MapReduce Tasks queue Other App Engine / external services(Channel API, Memcache, Email, …)
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
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) • CloudSQL • Managed MySQL in App Engine • Blobstore / CloudStorage • Store files / blobs • Has with ACL and REST API
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
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 / 100kwrite operations Pricing
Google AppEngine (GAE) Live Demo
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/
AWS Architecture Elastic Load Balancing (ELB) AWS SDK for Java, C#, PHP, Python, …, + VS/ Eclipse Plugins 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 • 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/
AWS Services (2) • AmazonDynamoDB/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/
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)
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 Pricing
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
AppHarbor Architecture Load Balancer (Nginx) Visual Studio + Git AppHarbor Applications Management Console 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
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)
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 • 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
AppHarbor Live Demo
More Resources • Free Cloud Development Course • Each Wednesday, Telerik Software Academy • clouddevcourse.telerik.com HTML 5 coding PHP Python Java C# Cloud Development Free Training Course
Public Clouds Software Development for the Public Cloud Platforms: Azure vs. App Engine vs. Amazon Questions? http://academy.telerik.com