$30 off During Our Annual Pro Sale. View Details »

From 'Legacy' to 'Edge'

From 'Legacy' to 'Edge'

SHIBATA Hiroshi

June 08, 2013
Tweet

More Decks by SHIBATA Hiroshi

Other Decks in Technology

Transcript

  1. ࣲాതࢤ
    SHIBATA Hiroshi
    QBQFSCPZDP
    BTBLVTBSC
    paperboy&co., Inc.
    Continuous Upgrades For Rails Apps.
    ൃද৔ॴ3FE%PU3VCZ$POG 2013-06-08(Sat)
    From 'Legacy'
    to 'Edge'

    View Slide

  2. View Slide

  3. TFMG

    View Slide

  4. SHIBATA Hiroshi(@hsbt)

    View Slide

  5. Rails Girls in Japan

    View Slide

  6. asakusa.rb

    View Slide

  7. asakusa.rb
    takoyaki!

    View Slide

  8. asakusa.rb

    View Slide

  9. Ruby Committer

    View Slide

  10. Great News

    View Slide

  11. ruby/www.ruby-lang.org

    View Slide

  12. Please join us

    View Slide

  13. http://bugs.ruby-lang.org

    View Slide

  14. asakusarb/redmine4ruby-lang

    View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. http://30d.jp

    View Slide

  19. from 2007/5

    View Slide

  20. 280,000 users
    174,000,000 photos

    View Slide

  21. Our Rails app
    44models
    9000lines in controllers
    220lines in routes.rb

    View Slide

  22. system architecture

    View Slide

  23. application server

    View Slide

  24. storage api server

    View Slide

  25. storage server

    View Slide

  26. customer management

    View Slide

  27. storage is over
    400TB

    View Slide

  28. Ruby 1.8.6
    Rails 2.0.2

    View Slide

  29. Rails in Kansas

    View Slide

  30. Rails in Tokyo

    View Slide

  31. Ruby 1.8.6
    Rails 2.0.2
    Ruby 2.0.0
    Rails 3.2.13

    View Slide

  32. Ruby
    Ruby
    Ruby
    Ruby
    1.8.6 1.8.7 1.9 2.0
    Rails
    2.0/2.1
    Rails
    2.3
    Rails
    3.0
    Rails
    3.2

    View Slide

  33. Ruby
    Ruby
    Ruby
    Ruby
    1.8.6 1.8.7 1.9 2.0
    Rails
    2.0/2.1
    Rails
    2.3
    Rails
    3.0
    Rails
    3.2

    View Slide

  34. Ruby
    Ruby
    Ruby
    Ruby
    1.8.6 1.8.7 1.9 2.0
    Rails
    2.0/2.1
    Rails
    2.3
    Rails
    3.0
    Rails
    3.2

    View Slide

  35. How to migrate
    edge rails
    from
    legacy rails?

    View Slide

  36. Test to specify

    View Slide

  37. Continuous Integration

    View Slide

  38. staging environment

    View Slide

  39. puppet

    View Slide

  40. 1-8
    deploy/day

    View Slide

  41. Rails 2.0
    Rails 2.3

    View Slide

  42. Rails 2.0
    Rails 2.3
    hotfix A
    migration A

    View Slide

  43. Rails 2.0
    Rails 2.3
    hotfix A
    migration A

    View Slide

  44. Rails 2.0
    Rails 2.3
    hotfix A
    migration A

    View Slide

  45. offensive
    system
    operation

    View Slide

  46. Zero
    Downtime
    Deploy

    View Slide

  47. app1
    app2

    View Slide

  48. should not
    use slave-read
    in database
    caution

    View Slide

  49. the basic of slave-read

    View Slide

  50. View Slide

  51. cookpad/kage

    View Slide

  52. Kage (kah-geh) is an HTTP shadow
    proxy server that sits between
    clients and your server(s) to
    enable "shadow requests".

    View Slide

  53. the basic of kage
    real request

    View Slide

  54. Kage::ProxyServer.start do |server|
    config = YAML.load_file(File.expand_path("../config.yml",
    __FILE__))[ENV['RAILS_ENV']]
    server.port = 8090
    server.host = config[:host]
    server.debug = false
    # backends can share the same host/port
    server.add_master_backend(:production, config[:production], 8080)
    server.add_backend(:sandbox, config[:sandbox], 80)
    server.client_timeout = 15
    server.backend_timeout = 10
    # Dispatch all GET requests to multiple backends, otherwise
    only :production
    server.on_select_backends do |request, headers|
    if request[:method] == 'GET' && rand(9) == 0
    [:production, :sandbox]
    else
    [:production]
    end
    end
    end

    View Slide

  55. hsbt/puppet-kage

    View Slide

  56. View Slide

  57. app1
    app2

    View Slide

  58. monitoring
    and
    alerting

    View Slide

  59. newrelic

    View Slide

  60. nagios

    View Slide

  61. exception_notification

    View Slide

  62. IRC
    github issue
    costomer’s
    contact
    nagios

    View Slide

  63. munin

    View Slide

  64. people

    View Slide

  65. newcomer bootcamp
    sergeant
    sergeant
    sergeant

    View Slide

  66. github and github:e

    View Slide

  67. webistrano

    View Slide

  68. View Slide

  69. confusion of programmer
    is
    causes of low productivity

    View Slide

  70. Ruby
    Ruby
    Ruby
    Ruby
    1.8.6 1.8.7 1.9 2.0
    Rails
    2.0/2.1
    Rails
    2.3
    Rails
    3.0
    Rails
    3.2
    always on the edge
    is
    motivating

    View Slide

  71. Ruby 1.8.7
    Rails 2.3.18
    Ruby 1.8.7
    Rails 3.0.20

    View Slide

  72. rails 2.3 with bundler

    View Slide

  73. source 'https://rubygems.org'
    gem 'rails', '~> 2.3.18'
    gem 'rake', '~> 0.9.2'
    gem 'rdoc'
    gem 'rake-confirm'
    gem 'mysql'
    gem "mysql_retry_lost_connection"
    gem 'acts_as_paranoid', :github => 'paperboy-30days/acts_as_paranoid'
    gem 'passenger', '~> 3.0'
    gem 'memcache-client', :require => 'memcache'
    gem 'system_timer'
    gem 'yajl-ruby', :require => 'yajl'
    gem 'will_paginate', '~> 2.3'
    gem 'mail'
    gem 'sass'
    gem 'compass-rails'
    gem 'osaipo_client', :git => '[email protected]:paperboy-all/
    osaipo_client.git', :branch => 'legacy'
    gem 'jugem_client', :git => '[email protected]:paperboy-all/
    jugem_client.git'
    gem 'ppb_footer', :github => 'paperboy-all/ppb_footer'

    View Slide

  74. require "./config/environment"
    use Rails::Rack::LogTailer
    use Rails::Rack::Static
    run ActionController::Dispatcher.new
    rack with rails 2.3

    View Slide

  75. rails_upgrade plugin

    View Slide

  76. 30days-front
    can’t use
    hyphen
    can’t use
    number
    can’t convert
    application.rb...

    View Slide

  77. conclusion

    View Slide

  78. Ruby
    Ruby
    Ruby
    Ruby
    1.8.6 1.8.7 1.9 2.0
    Rails
    2.0/2.1
    Rails
    2.3
    Rails
    3.0
    Rails
    3.2

    View Slide

  79. high productivity

    View Slide

  80. Let’s enjoy
    around
    legacy system!!

    View Slide