.NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com...

44
AppHarbor .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik .com Technical Trainer .NET Clou d AppHarbor Public Cloud

Transcript of .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com...

Page 1: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

AppHarbor.NET Cloud Development Made Easy

George Georgiev

Telerik Software Academyacademy.telerik.com

Technical Trainer

.NET Clou

d

AppHarbor

Public Cloud

Page 2: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Table of Contents What is AppHarbor?

“Control panel” overview AppHarbor architecture

Deployment process

Runtime Pricing

Prices

Resources

2

Page 3: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Table of Contents (2) Application deployment

Git crash-course

Sample application deployment Configuration variables and Add-ons Configuration variables

Shared SQL Server

Mailgun

3

Page 4: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

What is AppHarbor?.NET Platform as a Service

Page 5: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

What is AppHarbor? Fully hosted .NET PaaS

Supports ASP.NET (Web Forms & MVC), WCF, WWF, ADO.NET Entity Framework, etc.

Runs on Amazon EC2 Automatic load balancing Easy application deployment

Through Git

Through Bitbucket, CodePlex or GitHub 5

Page 6: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

What is AppHarbor? (2) Automatic build

Code compilation

Unit tests execution Rich set of add-ons

Provide additional functionality for applications

Shared Microsoft SQL Server, Airbrake, MongoHQ, StillAlive, Mailgun, etc.

Forum, support and knowledgebase

6

Page 7: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

“UI” OverviewA Quick Look over the “Application

Dashboard”

Page 8: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

AppHarbor ArchitectureDeployment process, Runtime

environment

Page 9: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

AppHarbor Architecture

9

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 10: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

AppHarbor Architecture (2)

Deployment process User pushes (sends) .NET code

Code is built by a platform build server

If code compiles, unit tests are run

Results appear on the application dashboard

Service hooks are called

Application deployed to the AppHarbor application servers.

AppHarbor scales application when needed

10

Page 11: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

AppHarbor Architecture (3)

Application runtime environment Load balancing is automatic

SSL connections, HTML compression, etc. are handled

Everything runs on AWS and is managed by AppHarbor

Cloud resources are consumed through add-ons

More info:

https://appharbor.com/page/how-it-works11

Page 12: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

PricingPlans and Resources

Page 13: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Pricing and Resources AppHarbor worker

Process which can have multiple threads

Limited in resources

2 workers always on different machines

Resource limit per worker (https://appharbor.com/page/programpolicy)

Network Bandwidth: 100GB/month - Soft

RAM usage: 512MB - Soft; 1024MB - Hard

Nothing mentioned about processor time

13

Page 14: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Pricing and Resources (2)

AppHarbor background worker Still in Beta

Regular .NET console application

.exe’s produced on compilation

Used for

Recurring tasks

Schedules

Etc.

14

Page 15: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Plans (Canoe) Canoe plan

0$ per month

1 worker

+1 background worker

apphb.com hostname

Piggyback SSL

15

Page 16: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Plans (Catamaran)

Catamaran plan

49$ per month

2 workers

+2 background workers

Custom hostnames

SNI SSL

16

Page 17: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Plans (Yacht)

Yacht plan

199$ per month

4 workers

+4 background workers

Custom hostnames

IP-based SSL

17

Page 18: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git Crash CourseOnly What You Need to Know to Use

AppHarbor

Page 19: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git Crash Course Git

Source-control system

Can work with local and remote repositories

Git Bash – command line interface for Git

Free

Has Windows version (msysgit)

http://code.google.com/p/msysgit/downloads/detail?name=Git-1.7.10-preview20120409.exe&can=3&q

=

19

Page 20: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git Crash Course (2) Installation –

“next, next, next” does the trick

Options to select (they should be selected by default)

“Use Git Bash only”

“Checkout Windows-style, commit Unix-style endings”

Note: this concerns only beginners20

Page 21: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git Crash Course (3) Using Git Bash

Standard command prompt with added features

Creating a local repository

git init

Preparing (adding/choosing) files for a commit

git add [filename] (“git add .” adds everything)

Committing to a local repository

git commit –m “[your message here]”

21

Page 22: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git Crash Course (4) Using Git Bash (2)

Git “remote”– name for a repository URL

Git “master” – the current local branch (think of it as “where you have committed”)

Creating a remote

git add remote [remote name] [remote url]

Pushing to a remote (sending to a remote repository)

git push [remote name] master

22

Page 23: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Using Git BashLive Demo

Page 24: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Application DeploymentDeploying your Application to

AppHarbor

Page 25: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Application Deployment Getting your code to AppHarbor

Through Git

AppHarbor provides Repository URL

Use Git to push to that URL

Other source-control systems – commit to some integrated with AppHarbor repository

Through Bitbucket, Codeplex, GitHub

Have integration with AppHarbor

Can push code to AppHarbor’s repository

25

Page 26: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git and AppHarbor

AppHarbor “requirements” Submit a .NET Solution with

All project files

All code files, libraries, etc.

All other resources

Solution must be a web application

If there is more than ONE solution file

AppHarbor compiles the one named “AppHarbor.sln”

26

Page 27: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git and AppHarbor

First deployment to AppHarbor with Git Initialize a repository where your

solution is

Add the relevant files to be committed

Commit to local repository

Create a remote to AppHarbor repository (get the URL from your application’s “dashboard”)

Push to the remote you created for AppHarbor

…and that’s everything!

27

Page 28: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Git and AppHarbor

Next deployments to AppHarbor Add the relevant files to be

committed

Either all the files from before or only the ones you modified

Commit to local repository

Repository was created in the “First deployment”

Push to the remote for AppHarbor

We created this the first time too

Your application dashboard now has a history!

28

Page 29: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Deploying to AppHarbor

Live Demo

Page 30: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

ConfigurationVariables and Add-

onsCustomizing and Enriching Your

Application

Page 31: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Configuration variables

Configuration variables Key-value pairs

Local to an application

Used to change the behaviour of your application on AppHarbor

f.e. a variable telling your application if it is on AppHarbor or not

Added by user

Added by add-ons31

Page 32: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Configuration variables

Adding a configuration variable in AppHarbor Go to application dashboard >>

Configuration variables >> Create new variable

Accessing configuration variables In your application config file

<appSettings>

<add name = “[variable name]” value = “[variable value]”/>

</appSettings>32

Page 33: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Configuration Variables

Live Demo

Page 34: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Add-ons

Add-ons Allow you to consume cloud

resources

Added from add-on catalogue

Each application has its independent add-ons

Each add-on has a “control page”

Usually in the form of “Go to [add-on name]”

Use configuration variables for interaction with your application

34

Page 35: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Add-ons

Shared SQL Server Provides a SQL Database

Gives you a server URI, username and password

Gives you a connection string

Configuration variable with alias

Free – 20 MB

10$/month – 10 GB

35

Page 36: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

SQL Server Add-OnLive Demo

Page 37: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Add-ons Mailgun

Provides e-mail services

Analysis and statistics tools

SMTP, POP3, IMAP

Has a C# API

Gives you hostname, login, password

Through configuration variables

Free – 200 messages/day, temp storage

19$/month – 50000 messages/month, 20GB

37

Page 38: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Mailgun Add-OnLive Demo

Page 39: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Other Add-Ons Airbrake (error logging)

Blitz (performance monitoring)

CloudAMQP (RabbitMQ)

Cloudant (CouchDB)

CloudMailin (incoming email)

Dedicated SQL Server

JustOneDB (NoSLQ database)

Logentries (log management)39

Page 40: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

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)40

Page 41: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

AppHarbor

Questions? ?

?? ? ?

???

?

?

Page 42: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Exercises1. Create an account in AppHarbor. See

the “Support” and “Add-ons” sections of AppHarbor.

2. Create an ASP.NET application which prints the message “The quick brown fox jumps over the lazy dog”. Use GitBash to deploy that application in AppHarbor. Then change the message and deploy the application again.

3. Create an ASP.NET application with a single button and a text box. When the button is pressed, the application should print some text in the text box, indicating whether it is started locally or in AppHarbor. Use configuration variables. Use GitBash to deploy that application in AppHarbor.

Page 43: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Exercises4. Create an ASP.NET “Online

Restaurant” application which displays a restaurant menu. Each item in the menu has a name, ingredients and a price. The menu should be visible to everyone. There should be administrators, which authenticate with a username and password and can add items to the menu. Deploy the application to AppHarbor

5. Edit the “Online Restaurant” application from exercise 4 so that it can be switched off from AppHarbor (i.e. display only a message, saying “The restaurant is on a holiday”). Hint: use configuration variables

Page 44: .NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer.

Exercises6. Edit the “Online Restaurant”

application, so that items from the menu can be ordered (purchased). When a user orders an item he should enter his name, address and e-mail address. After that, an e-mail which notifies the user he successfully made an order should be sent (the e-mail should mention the user’s order, name and address).The administrators should be able to download a text file with all of the information for all of the orders (item ordered, user name, address, e-mail).

7. Provide a text file with the AppHarbor URLs of the applications from these exercises.