Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
From 'Legacy' to 'Edge' 2014 edition
Search
SHIBATA Hiroshi
April 19, 2014
Technology
6.3k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
From 'Legacy' to 'Edge' 2014 edition
SHIBATA Hiroshi
April 19, 2014
More Decks by SHIBATA Hiroshi
See All by SHIBATA Hiroshi
How to make faster release cycle of Ruby?
hsbt
2
6.4k
Ruby の開発を支えるエコシステム
hsbt
4
2.4k
Why is building the Ruby environment hard?
hsbt
6
8.7k
開発環境へのこだわり
hsbt
16
12k
OSS ことはじめ
hsbt
5
1.6k
GMO DevNight 05 在宅勤務開始から2ヶ月でやったこと
hsbt
2
610
Development Environment 2019
hsbt
1
390
How to become the Psychic
hsbt
0
2.1k
Software Development
hsbt
1
6.8k
Other Decks in Technology
See All in Technology
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
320
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
110
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
430
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
280
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
120
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
250
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
170
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.2k
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
130
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
350
12 個 Tool と、 4,096 Token
hlum
0
110
自律型 AI をセキュアに実装!Gemini と MIG で作る動的コード実行環境
recruitengineers
PRO
1
230
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
What's in a price? How to price your products and services
michaelherold
247
13k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
The agentic SEO stack - context over prompts
schlessera
0
970
Visualization
eitanlees
153
17k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
RailsConf 2023
tenderlove
30
1.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Transcript
! From ‘Legacy' to ‘Edge' 2014 edition ! Hiroshi SHIBATA
@hsbt OedoRubyKaigi04
SHIBATA Hiroshi(@hsbt)
asakusa.rb
ruby-lang.org
Rails Girls in Japan
Ruby Committer
None
ϛυϧΣΞͷΞοϓάϨʔυ ࣾ։ൃج൫ͷߏங ౷ܭج൫ͷߏங +409ͷӡ༻උ HJUIVC ηΩϡϦςΟࠪ ίʔυϨϏϡʔ ςετج൫ͷߏங ΞΫηεղੳج൫ͷߏங ։ൃϓϩηε
৽ਓڭҭ ݪߘࣥච ΧϯϑΝϨϯεൃද 044։ൃ αʔόʔߏཧͷ৽ ϦʔϯελʔτΞοϓ +FOLJOT 3VCZ3BJMT 3%#.4 ٕज़ج൫νʔϜ
http://30d.jp
from 2007/5
380,000 users 230,000,000 photos
Our Rails app 46 models 5000 lines in controllers 400
lines in routes.rb 1:1.3 code to test ratio
system architecture
application server
storage server
job server
transaction server
storage is over 450 TB
database size is over 250 GB
Development Culture
จࣈ github workflow
IRC github issue costomer’s contact nagios
DevOps
4 deploy/day
None
How to migrate edge rails from legacy rails?
Ruby 1.8.6 Rails 2.0.2
Ruby 1.8.6 Rails 2.0.2 Ruby 2.1.1 Rails 4.1.0 new!
Why?
None
Ruby on Rails
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0 Slow Fast
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
Rails 2.0 Rails 2.3
Rails 2.0 Rails 2.3 hotfix A migration A
Rails 2.0 Rails 2.3 hotfix A migration A
Rails 2.0 Rails 2.3 hotfix A migration A
จࣈ
Zero Downtime Deploy
cookpad/kage
Kage (kah-geh) is an HTTP shadow proxy server that sits
between clients and your server(s) to enable "shadow requests".
the basic of kage real request
None
_ਓਓ ਓਓ__ਓਓ ਓਓ_! > ಥવͷαʔόʔ࠶ىಈ <! ʉY^Y^Y^YY^Y^Y^YY^Y
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
rails 2.3 with bundler
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'!
require "./config/environment"! ! use Rails::Rack::LogTailer! use Rails::Rack::Static! run ActionController::Dispatcher.new rack
with rails 2.3
30days-front can’t use hyphen can’t use number can’t convert !
application.rb...
Reduce customer frustration.
app1 app2 backgroundrb to dj
จࣈ
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
Use trunk everyday.
จࣈ
จࣈ
Use modern architecture
app1 app2
kyoto tycoon is slower than mysql…
None
1.8 to 2.0
จࣈ
2.0 to 2.1
CPU Usage(%) 0 25 50 75 100 49 69 2.0
2.1
Resp. time(ms) 0 50 100 150 200 250 189 221
2.0 2.1
memory usage(giga byte) 0 1 2 3 4 3.8 3.2
2.0 2.1
จࣈ https://www.ruby-lang.org/en/news/2014/03/10/regression-of-hash-reject-in-ruby-2-1-1/
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0
3.2 4.0
จࣈ
Resp. time(ms) 0 60 120 180 240 300 287 189
3.2 4.0
Ruby 1.9.3 2.0.0 2.1 2.2 Rails 3.0 3.2 ? 4.0
? 4.1 ?
Ruby 1.9.3 2.0.0 2.1 2.2 Rails 3.0 3.2 ? 4.0
? 4.1 ? New!!
จࣈ
1. Flash structure changes 2. Mutator methods called on Relation
จࣈ
Resp. time(ms) 0 60 120 180 240 300 266 287
4.0 4.1
Ruby 1.9.3 2.0.0 2.1 2.2 Rails 3.0 3.2 ? 4.0
? 4.1 ?
class Bar! def bar(foo = foo())! foo! end! ! def
buzz(foo = foo)! foo! end! ! def foo! :buzz! end! end! ! p Bar.new.bar! p Bar.new.buzz
% ruby -v r45272.rb! ruby 2.2.0dev (2014-04-13 trunk 45580) [x86_64-darwin13]!
:buzz! nil! ! % ruby -v r45272.rb! ruby 2.1.2p80 (2014-03-01 revision 45231) [x86_64-darwin13.0]! :buzz! :buzz
จࣈ
conclusion
2. fix gem 4. fix Ruby 3. fix Rails 1.
fix your code