Public .NET Clouds(x) - DevReach

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

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

347 εμφανίσεις

www.devreach.com

Public Cloud Platforms

for .NET Developers

Sofia, 4
-
5 October 2012

Svetlin Nakov | Telerik

www.devreach.com

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

Overview, IaaS, SaaS, PaaS

Public Cloud Platforms

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








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



Monitoring

Administration

Data
-
bases

Storage
Services

Back
-
End
Services

Other
Services

Load Balancer

Computing
Node

Computing
Node

Computing
Node

www.devreach.com

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

Develop and Run .NET Apps in the Cloud

Public .NET Clouds

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

晩f⁩ y潵牳敬e!


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

Hosting .NET Projects in Azure

Windows 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

SQL
Azure

Tables

Blobs

Windows Azure


Architecture

Visual Studio + Azure Tools

Windows Azure

Management Portal

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

Azure
Load
Balancer

www.devreach.com

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

Hosting .NET Projects in AWS Beanstalk .NET

Amazon Web Services (AWS)

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 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!

www.devreach.com

AWS Architecture

RDB

S3

AWS SDK for Java, C#, PHP,

Python + VS / Eclipse Plugins

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, …)

DynamoDB

SQS

EBS

SWF

Any development framework (.NET / Java EE
/

Symfony
/ Zend / Django / Rails / Node.js)

Elastic Load Balancing (ELB)

www.devreach.com

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 ($
1
2
6

/
mo)


1 CPU,
1.7 GB
RAM: $
0.59
/ hour
($439
/ mo
)

www.devreach.com

Hosting .NET Projects in AppHarbor

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

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

www.devreach.com

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

ASP.NET MVC Project Deployment

AppHarbor:
Live Demo

www.devreach.com

Hosting .NET Projects in Uhuru

Uhuru AppCloud

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

Uhuru AppCloud Architecture

Managed SQL
Server / MySQL

MongoDB

UhuruCloud.com Web Interface

Uhuru Cloud Manager

Load Balancer (Nginx on Ubuntu Linux)

Linux / Windows

App Servers

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

www.devreach.com

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

ASP.NET MVC Project Deployment

Uhuru: Live Demo

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


橵獴⁢散慭a 慶慩污扬a


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

Thank you!

@svetlinnakov

nakov.com

bg.linkedin.com/in/nakov

Svetlin Nakov | Telerik

Public Cloud
Platforms

for
.NET Developers

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