60
Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Ruby on Rails&

Windows Azure

@sriramksriramkrishnan.com

Page 2: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 3: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

July 25th, 1965

Newport, Rhode

Island

Page 4: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

http://www.flickr.com/photos/joegratz/83461579

Page 5: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 6: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Windows Azure and

the Microsoft cloud

Page 7: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Scalable

Computation

Page 8: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Cloud Storage

Page 9: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Utility

billing

Page 10: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Automated

manageme

nt

Page 11: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

+

?!

Page 12: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

We love Ruby on Rails

Page 13: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

And other

languages/framewor

ks you secretly

love ;)

Page 14: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 15: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

puts 'Hello world'

Page 16: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 17: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 18: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

UsefulNOT!

Page 19: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

THE RAILS“STACK”

Page 20: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

load balancers

Page 21: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

LOAD BALANCERS

Pound, Varnish, Pen, hardware solutions, etc…

Page 22: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

LOAD BALANCERS

• Part of the platform• Any available TCP port• Can pull VMs in/out of rotation

Page 23: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

REVERSE PROXIES

mod_proxy, Perlbal, nginx, …

Page 24: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

REVERSE PROXIES Works the same way

Page 25: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

app/web servers

Page 26: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 27: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

APP& WEB SERVERS

Many, many combinations possible

Most work great

Page 28: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

APP& WEB SERVERS

Page 29: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 30: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Worker Role (Windows Azure VM)

Ruby installatio

n

script/server

.NET

Wrapper code

Run() Process.Start()

Port 80

Page 31: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Worker Role (Windows Azure VM)

.NET

Wrapper code

Run() Process.Start()

Port 80

WEBRick/Mongrel

Apache

mod_proxy_balance

r

Page 32: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 33: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

GEMS

• Package with app

• At runtime, use Gem::GemRunner or “gem install”

•Caveat – Not all gems build/work on 64-bit Windows

Page 34: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

data

Page 35: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

MYSQL Runs great on Windows Azure

Page 36: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

MYSQLSolution Acceleratorhttp://bit.ly/99Bx9H

Master/slave, scale up and down slaves, periodic backups

Page 37: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

WINDOWS AZURE CLOUD STORAGE SERVICES

SQL Azure

Blobs TablesQueue

s

Page 38: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

SQL Azure

• Cloud-based relational database service

• Scalable, available, fault-tolerant

• Works with T-SQL based libraries/tools

Page 39: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

SQL AzureUseactiverecord-sqlserver-adapter

Patch usinghttp://gist.github.com/318780

Page 40: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Storage Services • Public REST APIs

• waz-storage gem good starting point

Page 41: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Blobs

• Simple interface for storing named files with metadata

• Very large objects (upto 1TB in size per blob)

• Available through a CDN frontend

Page 42: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

require 'waz-blobs‘

WAZ::Storage::Base.establish_connection!( :account_name => account_name,                                          :access_key => access_key)

container = WAZ::Blobs::Container.create('my-container‘)

blob = container.store('my_blob.txt’,'some content’,'plain/text‘)

blob = container['my_blob.txt']

Page 43: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Queues

• Reliable delivery of messages

• Drop-in replacement for beanstalkd, starling, worker systems

Page 44: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

WAZ::Storage::Base.establish_connection!( :account_name => account_name,                                 :access_key => access_key)

queue = WAZ::Queues::Queue.create('my-queue')

queue.enqueue!("some message")

Page 45: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Tables

• Structured data at scale

• Efficiently insert, query and retrieve millions of entities

Page 46: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

entity = { :first_name => ‘William',               :last_name => ‘Adama',                }

service.insert_entity('customer_table', entity)       

service.query('customer_table',     {:expression => "(last_name eq ‘Adama‘)",     :top => 2} )

Page 47: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

caching

Page 48: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

memcached

http://code.msdn.microsoft.com/winazurememcached

Page 49: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 50: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

day to day

Page 51: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Deployment

Comes with the platform.

Page 52: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

DeploymentUse service management API to automate

E.g : Deploy packages as a part of your Rakefile

Page 53: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Management

Comes with the platform.

Page 54: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Management • Use service management API to configure, upgrade, scale up/down

•Use monitoring/diagnostics API to replace nagios/ganglia

Page 55: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

Debugging

• debug, to_yaml helpers work OOB

• Standard logger works great, logs to RAILS_ROOT/logs. Use diagnostics API to retrieve

Page 56: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 57: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

THINGS TO REMEMBER

Open platfor

m

Works well with

Ruby world

Jump in!

Page 58: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))
Page 59: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

“louder”

Page 60: Building Ruby on Rails apps on Windows Azure (MIX 2010 at Last Vegas))

The end.

@sriramksriramkrishnan.com