public cloud platforms for .net developers

43
www.devreach.c om Public Cloud Platforms for .NET Developers Sofia, 4-5 October 201 Svetlin Nakov | Telerik

Upload: svetlin-nakov

Post on 11-May-2015

17.798 views

Category:

Education


3 download

DESCRIPTION

Public clouds platforms are rapidly growing and many businesses move partially or fully their IT infrastructure to the cloud. The big players like Microsoft, Google, Oracle and Amazon operate their own public cloud platforms while the smaller players provide cloud services and PaaS platforms and on top of the larger. What about the .NET developers and the cloud? In this talk the speaker Svetlin Nakov introduces the public .NET clouds and compares the leading .NET PaaS clouds: Windows Azure, AppHarbor, Uhuru and AWS Elastic Beanstalk for .NET. The .NET public clouds are compared in terms of architecture, programming model, pricing, development stack, available services, deployment model and tools for administration and monitoring. A live demo shows how to deploy and run a typical .NET application (based on ASP.NET MVC and MS SQL Server) in AppHarbor and Uhuru. Table of contents: - 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 The presentation was delivered at DevReach 2012 (www.devreach.com) by Svetlin Nakov (www.nakov.com) in Sofiа on 4 October 2012. YouTube video for this presentation: http://youtu.be/H2Jjiu8VyCk

TRANSCRIPT

Page 1: Public Cloud Platforms for .NET Developers

www.devreach.com

Public Cloud Platformsfor .NET Developers

Sofia, 4-5 October 2012

Svetlin Nakov | Telerik

Page 2: Public Cloud Platforms for .NET Developers

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

Page 3: Public Cloud Platforms for .NET Developers

www.devreach.com

Overview, IaaS, SaaS, PaaS

Public Cloud Platforms

Page 4: Public Cloud Platforms for .NET Developers

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

Page 5: Public Cloud Platforms for .NET Developers

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)

Page 6: Public Cloud Platforms for .NET Developers

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

Page 7: Public Cloud Platforms for .NET Developers

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

Mon

itori

ng

Ad

min

istr

ati

on

Data-bases

Storage Services

Back-End Services

Other Services

Load Balancer

Computing Node

Computing Node

Computing Node

Page 8: Public Cloud Platforms for .NET Developers

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,

Page 10: Public Cloud Platforms for .NET Developers

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?

Page 11: Public Cloud Platforms for .NET Developers

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

Page 12: Public Cloud Platforms for .NET Developers

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

Page 13: Public Cloud Platforms for .NET Developers

www.devreach.com

Hosting .NET Projects in Azure

Windows Azure

Page 14: Public Cloud Platforms for .NET Developers

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

Page 15: Public Cloud Platforms for .NET Developers

www.devreach.com

SQL Azure

Tables Blobs

Windows Azure – ArchitectureV

isu

al S

tud

io +

Azu

re T

ools

Win

dow

s A

zure

Man

ag

em

en

t P

ort

al

Compute (Worker role)

Compute (VM role)

Compute (Web role)

VM running IIS7

Windows VMWindows

VM

Queues CDN

Other Azure / external services

C# / .NET code / Java code

Custom software

ASP.NET / PHP / other

Azure Load Balancer

Page 16: Public Cloud Platforms for .NET Developers

www.devreach.com

Windows Azure Services Windows Azure Compute

Computing instances run Windows OSand 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

Page 17: Public Cloud Platforms for .NET Developers

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

Page 18: Public Cloud Platforms for .NET Developers

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)

Pricing

Page 19: Public Cloud Platforms for .NET Developers

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

Page 20: Public Cloud Platforms for .NET Developers

www.devreach.com

Hosting .NET Projects in AWS Beanstalk .NET

Amazon Web Services (AWS)

Page 21: Public Cloud Platforms for .NET Developers

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!

Page 22: Public Cloud Platforms for .NET Developers

www.devreach.com

AWS Architecture

RDB S3AW

S S

DK

for

Java,

C#

, P

HP,

Pyth

on

+ V

S /

Eclip

se

Plu

gin

s

AW

S M

an

ag

em

en

t C

on

sole

EC2 Instances + Storage (EBS)

Any OS and development platformC# / Java / PHP / Python / Ruby / …

Other AWS / external services(ElastiCache, CloudFront CDN, SES, …)

DynamoDB

SQSEBS SWF

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

Elastic Load Balancing (ELB)

Page 23: Public Cloud Platforms for .NET Developers

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

Page 24: Public Cloud Platforms for .NET Developers

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, ...

Page 25: Public Cloud Platforms for .NET Developers

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

Page 26: Public Cloud Platforms for .NET Developers

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)

Pricing

Page 27: Public Cloud Platforms for .NET Developers

www.devreach.com

Hosting .NET Projects in AppHarbor

AppHarbor

Page 28: Public Cloud Platforms for .NET Developers

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

Page 29: Public Cloud Platforms for .NET Developers

www.devreach.com

AppHarbor Architecture

Managed SQL Server / MySQL

MongoDB, CouchDB

Vis

ual S

tud

io +

Git

Ap

pH

arb

or

Ap

plicati

on

s

Man

ag

em

en

t C

on

sole

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

Page 30: Public Cloud Platforms for .NET Developers

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)

Page 31: Public Cloud Platforms for .NET Developers

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)

Page 32: Public Cloud Platforms for .NET Developers

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

Pricing

Page 33: Public Cloud Platforms for .NET Developers

www.devreach.com

ASP.NET MVC Project Deployment

AppHarbor: Live Demo

Page 34: Public Cloud Platforms for .NET Developers

www.devreach.com

Hosting .NET Projects in Uhuru

Uhuru AppCloud

Page 35: Public Cloud Platforms for .NET Developers

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

Page 36: Public Cloud Platforms for .NET Developers

www.devreach.com

Uhuru AppCloud Architecture

Managed SQL Server / MySQL

MongoDB

Uh

uru

Clo

ud

.com

Web

In

terf

ace

Uh

uru

Clo

ud

Man

ag

er

Load Balancer (Nginx on Ubuntu Linux)

Linux / WindowsApp Servers

Linux / WindowsApp Servers

Managed IISenvironment

C# / ASP.NET MVC /Web Forms / WCF

Managed Apache /Tomcat environment

Apache + PHP / Ruby /

Node.js / Tomcat + Java

RabitMQ

Other Uhuru Add-On Services

Page 37: Public Cloud Platforms for .NET Developers

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)

Page 38: Public Cloud Platforms for .NET Developers

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

Pricing

Page 39: Public Cloud Platforms for .NET Developers

www.devreach.com

ASP.NET MVC Project Deployment

Uhuru: Live Demo

Page 40: Public Cloud Platforms for .NET Developers

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

Page 41: Public Cloud Platforms for .NET Developers

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

Page 42: Public Cloud Platforms for .NET Developers

www.devreach.com

Thank you!@svetlinnakov

nakov.com

bg.linkedin.com/in/nakov

Svetlin Nakov | Telerik

Public Cloud Platformsfor .NET Developers

Page 43: 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