R uby on Rails & W indows Azure @ sriramk s riramkrishnan

Post on 22-Feb-2016

30 views 0 download

Tags:

description

R uby on Rails & W indows Azure @ sriramk s riramkrishnan.com. July 25 th , 1965 Newport, Rhode Island. http://www.flickr.com/photos/joegratz/83461579. Windows Azure and the Microsoft cloud. S calable C omputation. Cloud Storage. Utility billing. Automated management. +. ?!. - PowerPoint PPT Presentation

transcript

Ruby on Rails&

Windows Azure@sriramk

sriramkrishnan.com

July 25th, 1965Newport, Rhode

Island

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

Windows Azure and the Microsoft cloud

Scalable Computation

Cloud Storage

Utility billing

Automated management

+

?!

We love Ruby on Rails

And other languages/framewor

ks you secretly love ;)

puts 'Hello world'

UsefulNOT!

THE RAILS“STACK”

load balancers

LOAD BALANCERS

Pound, Varnish, Pen, hardware solutions, etc…

LOAD BALANCERS

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

REVERSE PROXIES mod_proxy, Perlbal,

nginx, …

REVERSE PROXIES Works the same way

app/web servers

APP& WEB SERVERS

Many, many combinations possible

Most work great

APP& WEB SERVERS

Worker Role (Windows Azure VM)

Ruby installatio

n

script/server

.NET

Wrapper code

Run() Process.Start()

Port 80

Worker Role (Windows Azure VM)

.NET

Wrapper code

Run() Process.Start()

Port 80

WEBRick/Mongrel

Apache

mod_proxy_balance

r

GEMS

• Package with app

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

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

data

MYSQL Runs great on Windows Azure

MYSQLSolution Acceleratorhttp://bit.ly/99Bx9H

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

WINDOWS AZURE CLOUD STORAGE SERVICES

SQL Azure Blobs Tables Queue

s

SQL Azure

• Cloud-based relational database service

• Scalable, available, fault-tolerant

• Works with T-SQL based libraries/tools

SQL Azure Useactiverecord-sqlserver-adapter

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

Storage Services • Public REST APIs

• waz-storage gem good starting point

Blobs

• Simple interface for storing named files with metadata

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

• Available through a CDN frontend

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']

Queues

• Reliable delivery of messages

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

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

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

queue.enqueue!("some message")

Tables

• Structured data at scale

• Efficiently insert, query and retrieve millions of entities

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

service.insert_entity('customer_table', entity)       

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

caching

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

day to day

DeploymentComes with the platform.

Deployment Use service management API to automate

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

ManagementComes with the platform.

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

•Use monitoring/diagnostics API to replace nagios/ganglia

Debugging• debug, to_yaml helpers work OOB

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

THINGS TO REMEMBER

Open platfor

m

Works well with

Ruby world

Jump in!

“louder”

The end.

@sriramksriramkrishnan.com