Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
From 'Legacy' to 'Edge' 2014 edition
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
SHIBATA Hiroshi
April 19, 2014
Technology
6.2k
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.3k
Ruby の開発を支えるエコシステム
hsbt
4
2.4k
Why is building the Ruby environment hard?
hsbt
6
8.6k
開発環境へのこだわり
hsbt
16
12k
OSS ことはじめ
hsbt
5
1.5k
GMO DevNight 05 在宅勤務開始から2ヶ月でやったこと
hsbt
2
600
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
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
640
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
120
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
120
bet_ai_day_2026_session02
agenticsec
1
800
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
3
920
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
1
510
[RSJ26] Building a VLA Model Based on Self-Distilled Classification
keio_smilab
PRO
0
180
分割40%キーボードにスムーズに入門するには
hoto17296
1
230
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
130
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
130
Continuous Delivery! It is not what you think it is
tdpauw
0
180
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
250
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.6k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
450
Build your cross-platform service in a week with App Engine
jlugia
234
19k
My Coaching Mixtape
mlcsv
0
300
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
330
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Color Theory Basics | Prateek | Gurzu
gurzu
0
450
Become a Pro
speakerdeck
PRO
31
6.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
640
Marketing to machines
jonoalderson
1
5.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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