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.5k
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
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
670
Adversary Infrastructure Hunting101
disconinja
0
180
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
150
LLMの知識とAIエージェント
happysamurai294
0
130
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
1
520
生き様としてのSRE
hokkai7go
0
140
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
4
610
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
130
今から始めるAWS環境の暗号移行 - ポスト量子時代に備える
sato4mi
0
130
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
240
Lint の層を組み直した話
bengo4com
2
250
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
360
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
460
Statistics for Hackers
jakevdp
799
230k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
290
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Faster Mobile Websites
deanohume
310
32k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.5k
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