Deployment Patterns in the Ruby on Rails World
Upcoming SlideShare
Loading in...5
×
 

Deployment Patterns in the Ruby on Rails World

on

  • 8,089 views

Nikhil Mungel and Ajey Gore from ThoughtWorks presented this at DevOpsDays Bangalore 2011.

Nikhil Mungel and Ajey Gore from ThoughtWorks presented this at DevOpsDays Bangalore 2011.

Statistics

Views

Total Views
8,089
Views on SlideShare
6,690
Embed Views
1,399

Actions

Likes
2
Downloads
9
Comments
0

14 Embeds 1,399

http://blog.hyfather.com 842
http://agile.dzone.com 349
http://localhost 106
http://hyfather.posterous.com 44
http://posterous.com 25
https://twitter.com 6
http://www.hanrss.com 5
http://hyfather.github.com 5
http://ruby.dzone.com 4
https://www.google.com 4
http://dandan.nonobo.com 3
http://architects.dzone.com 3
http://www.dzone.com 2
http://172.25.1.38 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Single file instead of managing the entire src code as a folder.Should not contain files like .htaccess or db.yml, but contain symlinks for these.
  • API to provide LATEST, STABLE and so on…
  • API to provide LATEST, STABLE and so on…
  • Even the repo sources are in config mgmt.

Deployment Patterns in the Ruby on Rails World Deployment Patterns in the Ruby on Rails World Presentation Transcript

  • DEPLOYMENT PATTERNSIN THE RUBY on RAILS WORLD
    Devopsdays India
    2011
  • Nikhil Mungel
    Ajey Gore
    @AjeyGore
    @hyfather
  • Rails
    Apache
    Apache
    Apache
    Apache
    Passenger
  • * Ruby on Rails
    /app
    /config
    /db
    /doc
    /lib
    /log
    /public
    /script
    /test
    /tmp
    /vendor
    config.ru
    README
    Rakefile
  • run updated script
    App
    Server
    App
    Server
    Pull
    Pull
    Git
    1
    2
    3
    signal over SSH
    Local Repository
    contains all scripts
  • SCM-aware
    deployments
    fast and effortless
    dev and deployment on ruby
    transfers only delta
    devenv mess can overflow
    admin-hell for IT/Ops
    compiling native gems
  • Git
    Pull
    CI
    Runs
    Tests
    Tests
    Code
    $ deploy 77ef185d7
    $ deploy 77ef185d7
    QA
    Prod.
    Staging
  • Git
    Pull
    Tests
    CI
    Runs
    Tests
    Code
    $ deploy 77ef185d7
    $ deploy 77ef185d7
    QA
    Staging
    Production
  • CI
    Runs
    Tests
  • Git
    Pull
    Unit
    Tests
    CI
    Perf
    Tests
    Functional
    Tests
  • Git
    Pull
    Unit
    Tests
    CI
    Functional
    Tests
    Push a Tag
    tag: mainline-234
    Perf
    Tests
  • Git
    Pull
    Unit
    Tests
    CI
    Functional
    Tests
    Perf
    Tests
  • Git
    CI
    mainline
    unit
    tests
    func
    tests
    perf
    tests
  • mainline
    unit
    tests
    func
    tests
    perf
    tests
    1
    2
    3
    tag
    Git
    on remote
    machine
    on CI
    machine
    deploy
    emit
    consume
    package
  • RPM
    mainline
    unit
    tests
    func
    tests
    perf
    tests
    tarball
    war
    2
    1
    tag
    Git
    rubygem
    deb
    3
    on remote
    machine
    on CI
    machine
    deploy
    emit
    package
    consume
  • tarball
    better than a directory
    extremely simple to setup
    no metadata
  • RPM, deb
    stored in a repository
    standard locations -- /etc
    first-class system service
    effected by chef/puppet
    toolchain expertise
    maintain a repository
    less common
  • rubygem
    tarball with metadata
    effected by chef/puppet
    stored in a repository
    maintain a gem repository
  • mainline
    unit
    tests
    func
    tests
    perf
    tests
    upload to a repo
    2
    expose over
    CI artifact API
    1
    tag
    Git
    3
    on remote
    machine
    on CI
    machine
    deploy
    emit
    package
    consume
  • mainline
    unit
    tests
    func
    tests
    perf
    tests
    2
    1
    tag
    Git
    3
    on remote
    machine
    on CI
    machine
    deploy
    emit
    package
    consume
  • Config Management
    gem install
    yum install
    apt-get install
  • /etc
    my.cnf
    httpd.conf
    ssh_config
  • /etc
    database.yml
    .htaccess
    private keys for external systems
  • /etc/myapp
    First Class
    Linux Application Software
  • bundle install --deployment
    install to vendor/bundle
    bundle install --without test development
    bundle package
    .gem files to vendor/cache
    bundle install --local
  • Thanks!
    @hyfather
    @AjeyGore