Software Development for the Public Cloud Platforms ... - Telerik

burnwholeInternet και Εφαρμογές Web

5 Φεβ 2013 (πριν από 4 χρόνια και 5 μήνες)

316 εμφανίσεις

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

Cloud??? WTF?!?

C
omputer
L
ocated
OU
tside of
D
ata 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







At each tier different managed services,
technologies and languages can run

9



Monitoring

Administration

Data
-
bases

Storage
Services

Back
-
End
Services

Other
Services

Load Balancer

Computing
Node

Computing
Node

Computing
Node

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

SQL
Azure

Tables

Blobs

Azure Architecture

13

Visual Studio + Azure Tools

Windows Azure

Management Portal

Azure
Load
Balancer

Compute
(Worker role)

Compute
(VM role
)

Compute
(Web role)

VM running
IIS7

Windows VM

Windows
VM

Queues

CDN

Other Azure / external services

C# / .NET code
/ Java code

Custom
software

ASP.NET /
PHP / other

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

Data

store

Blob
store

App Engine Architecture

21

Eclipse +

Google
Plugin for Eclipse

Google App Engine
Management Dashboard

Load Balancer (Google Front
-
End Server)

Backends

App Engine Instances

Sandbox running JVM /
Python interpreter

Sandbox running
JVM / Python

Other App Engine / external services

(Channel API, Memcache, Email, …)

Cloud
SQL

Map

Reduce

Tasks
queue

Java code / Java Web
application / Python app

Java code

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 EC
2
)


Virtual machines on demand


Runs Windows / Linux / other OS


Several locations: US, EU, Japan, Brazil, …


http://aws.amazon.com/ec2/

28

AWS Architecture

29

RDB

S3

AWS SDK for Java, C#, PHP,
Python, …, + VS/ Eclipse Plugins

AWS Management Console

Elastic Load Balancing (ELB)

EC2 Instances + Storage (EBS)

Any OS and development platform

C# / Java / PHP / Python / Ruby / …

Other AWS / external services

(ElastiCache, CloudFront CDN, SES, …)

Dynamo
DB

SQS

EBS

SWF

Any development framework (.NET / Java EE /
Symfony / Zend / Django / Rails / Node.js)

AWS Services

Amazon Elastic Block Store
(
Amazon EBS
)


Virtual hard disk (HDD) volumes


Used with the EC
2

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

36

Managed SQL
Server / MySQL

MongoDB,
CouchDB

Visual Studio +
Git

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 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
B
ackground 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

Questions?

Software Development
for the Public
Cloud
Platforms: Azure vs.
App Engine vs. Amazon

http://academy.telerik.com