Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails...

40
Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

Transcript of Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails...

Page 1: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

Rails on AWS

Jonathan Weiss, Peritor Wissensmanagement GmbH

RubyFools Copenhagen, 2008

Page 2: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

2

Starting Point

One machine:

• Apache

• Ruby / Rails

• MySQL

Page 3: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

3

Worst Case Populariy

Page 4: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

4

A Difficult Path

Page 5: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

5

Problem: Backup

• High availability

• Redundancy

• Very big data sets

Page 6: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

6

Problem: File System

• Important files have to be accessed by many servers

• NFS / Samba not practical

Page 7: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

7

Problem: Spontaneous Traffic

Page 8: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

8

Problem: Load Fluctuation

Page 9: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

9

Don‘t reinvent the wheel!

Page 10: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

10

Amazon Web Services

Simple Storage Service - S3

Redundant Data Store

$0,15 per GB data per month

$0,10 - $0,20 per GB traffic

Virtual server per hour

$0,10 per CPU hour

$0,10 - $0,20 per GB traffic

Elastic Compute Cloud - EC2

…….

E-Commerce S..

Page 11: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

11

S3 - Simple Storage Service

• Redundant storage - as much as you like

• max. 5 GB per object

• Organized in „Buckets“

• Web Service API for uploads

• Downloads via

• Web Service

• HTTP / HTTPS

• BitTorrent

Page 12: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

12

S3 - Buckets

• Unique over all S3

• Contains many key-value-metadata tupel

• Cannot contain other buckets!

• Key can contain „/“

MyBucket_name

S3

foto_5.jpg

backups/januar.zip

fotos/2007/001.png

www.peritor.com

site/screen.css

site/script.js

FreeBSD-6.2.iso

Page 13: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

13

S3 with AWS::S3

Upload

Download

Page 14: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

14

EC2 - Elastic Compute Cloud

•  Based on XEN virtualization

•  On demand virtual servers - controlled with Web Service API

•  Use your favorite Linux distro (Linux 2.6.16), Amazon Machine Images (AMI) are stored on S3

•  ACLs for hosts/ports access control

Page 15: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

15

EC2 Tools

List availabe images

Start a new instance

Login with SSH

Shutdown instance

Page 16: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

16

amazon-ec2 gem Setup

Usage

Page 17: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

17

And now?

How does this solve my problems?

Page 18: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

18

S3 - Backup

• s3sync.rb

• Brackup

• Jungle Disk

• S3 FUSE

• s3DAV

• Duplicity

• S3Browser

• Firefox S3 Organizer extension

• …

Page 19: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

19

s3sync.rb

Backup

Restore

Page 20: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

20

S3 Asset Host

Page 21: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

21

S3 Asset Host

Setup DNS

Rails configuration

Page 22: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

22

S3 Asset Host

welcome.rhtml template

Output

Page 23: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

23

S3 - Authenticated User Data

Page 24: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

24

attachment_fu Rails plugin

Setup

Page 25: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

25

attachment_fu Rails plugin

Upload

Download

Page 26: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

26

On-Demand Computing with EC2

Time based, e.g. with cron

Page 27: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

27

On-Demand Computing with EC2

Load based, e.g. with Monit

Page 28: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

28

On-Demand Computing with EC2

Page 29: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

29

Availability Zones

Page 30: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

30

Elastic IPs

Page 31: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

31

EC2 for extra capacity

Page 32: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

32

Load Balancer / Proxy

Example mod_proxy_blancer:

• Talks to multiple backend servers (Mongrel)

• Central Proxy/Load-Balancer configuration that has knowledge about nodes

• Typically proxy restart on config change

Page 33: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

33

Swiftiply

Swiftiply Proxy:

• Multiple backend clients have a persistent connection to the backend port

• Proxy listens on cluster port for requests and forwards them

No re-configuration

Page 34: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

34

Swiftiply Proxy

Configuration

Start

Installation

Page 35: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

35

Swiftiplied Mongrel

• Gem plugin that patches Mongrel

• Transforms Mongrel in Swiftiply client

• Experimental

Start

or

Page 36: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

36

EC2 on Demand before Swiftiply

Page 37: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

37

EC2 on Demand with Swiftiply

Page 38: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

38

EC2 on Demand with Swiftiply

Page 39: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

39

Ressources

•  Amazon Web Services http://aws.amazon.com

•  Swiftiply

http://swiftiply.swiftcore.org

•  Attachment_fu http://svn.techno-weenie.net/projects/plugins/attachment_fu/

•  Elastic Rails http://www.elasticrails.com

•  Capazon http://capazon.rubyforge.org

•  Rubber http://rubber.rubyforge.org

•  RightScale

http://www.rightscale.com

Page 40: Rails on AWS - jaoo.dkjaoo.dk/dl/jaoo-ruby-cph-2008/slides/JonathanWeiss_Rails_on_AWS.pdf · Rails on AWS Jonathan Weiss, Peritor Wissensmanagement GmbH RubyFools Copenhagen, 2008

40

Peritor Wissensmanagement GmbH

Lenbachstraße 2 12157 Berlin

Internet: www.peritor.com Email: [email protected]

© Peritor Wissensmanagement GmbH - All Rights Reserved

Telefon: +49 (0)30 69 40 11 94 Telefax: +49 (0)30 69 40 11 95