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

Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Embed Size (px)

Citation preview

Page 1: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Ruby on Rails&

Windows Azure

@sriramksriramkrishnan.com

Page 2: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 3: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

July 25th, 1965

Newport, Rhode

Island

Page 4: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

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

Page 5: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 6: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Windows Azure and

the Microsoft cloud

Page 7: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Scalable

Computation

Page 8: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Cloud Storage

Page 9: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Utility

billing

Page 10: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Automated

manageme

nt

Page 11: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

+

?!

Page 12: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

We love Ruby on Rails

Page 13: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

And other

languages/framewor

ks you secretly

love ;)

Page 14: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 15: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

puts 'Hello world'

Page 16: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 17: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 18: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

UsefulNOT!

Page 19: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

THE RAILS“STACK”

Page 20: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

load balancers

Page 21: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

LOAD BALANCERS

Pound, Varnish, Pen, hardware solutions, etc…

Page 22: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

LOAD BALANCERS

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

Page 23: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

REVERSE PROXIES

mod_proxy, Perlbal, nginx, …

Page 24: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

REVERSE PROXIES Works the same way

Page 25: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

app/web servers

Page 26: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 27: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

APP& WEB SERVERS

Many, many combinations possible

Most work great

Page 28: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

APP& WEB SERVERS

Page 29: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 30: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Worker Role (Windows Azure VM)

Ruby installatio

n

script/server

.NET

Wrapper code

Run() Process.Start()

Port 80

Page 31: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Worker Role (Windows Azure VM)

.NET

Wrapper code

Run() Process.Start()

Port 80

WEBRick/Mongrel

Apache

mod_proxy_balance

r

Page 32: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 33: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

GEMS

• Package with app

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

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

Page 34: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

data

Page 35: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

MYSQL Runs great on Windows Azure

Page 36: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

MYSQLSolution Acceleratorhttp://bit.ly/99Bx9H

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

Page 37: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

WINDOWS AZURE CLOUD STORAGE SERVICES

SQL Azure

Blobs TablesQueue

s

Page 38: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

SQL Azure

• Cloud-based relational database service

• Scalable, available, fault-tolerant

• Works with T-SQL based libraries/tools

Page 39: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

SQL AzureUseactiverecord-sqlserver-adapter

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

Page 40: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Storage Services • Public REST APIs

• waz-storage gem good starting point

Page 41: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

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: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

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

blob = container['my_blob.txt']

Page 43: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Queues

• Reliable delivery of messages

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

Page 44: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

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: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Tables

• Structured data at scale

• Efficiently insert, query and retrieve millions of entities

Page 46: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

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: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

caching

Page 48: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

memcached

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

Page 49: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 50: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

day to day

Page 51: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Deployment

Comes with the platform.

Page 52: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

DeploymentUse service management API to automate

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

Page 53: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Management

Comes with the platform.

Page 54: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

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

•Use monitoring/diagnostics API to replace nagios/ganglia

Page 55: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

Debugging

• debug, to_yaml helpers work OOB

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

Page 56: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 57: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

THINGS TO REMEMBER

Open platfor

m

Works well with

Ruby world

Jump in!

Page 58: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com
Page 59: Ruby on Rails & Windows Azure @sriramk sriramkrishnan.com

“louder”

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

The end.

@sriramksriramkrishnan.com