Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
RailsClub 2016
Kir Shatrov
October 22, 2016
Programming
2
280
RailsClub 2016
Kir Shatrov
October 22, 2016
Tweet
Share
More Decks by Kir Shatrov
See All by Kir Shatrov
Running Jobs at Scale
kirs
0
170
Operating Rails in Kubernetes
kirs
2
350
Performance regressions in Ruby on Rails Core
kirs
0
180
Building a toolkit to detect performance regressions in Ruby on Rails core
kirs
3
4.3k
Развертывание веб-приложений и фреймворк Capistrano
kirs
1
240
Capistrano 3
kirs
4
2.3k
Other Decks in Programming
See All in Programming
Java アプリとAWS の良い関係 - AWS でJava アプリを実行する一番簡単な方法教えます / AWS for Javarista
kanamasa
2
1.3k
パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう / Java 18 pattern matching
ihcomega56
3
420
実践エクストリームプログラミング / Extreme Programming in Practice
enk
1
560
Haskellでオブジェクト指向プログラミング
koheisakata
0
130
GoogleI/O2022 LT報告会資料
shinsukefujita1126
0
390
無限スクロールビューライブラリ 二つの設計思想比較
harumak
0
260
【Scrum Fest Osaka 2022】スクラムチームに放り込まれた若手エンジニアの皆さん、どのように技術のキャッチアップをしていくかイメージはついていますか?
miiiki
0
120
設計ナイト2022 トランザクションスクリプト
shinpeim
11
2.1k
io22 extended What's new in app performance
veronikapj
0
350
git on intellij
hiroto_kitamura
0
170
Deep Dive Into Google Zanzibar and its Concepts for Authorization Scenarios
dschenkelman
1
140
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
0
860
Featured
See All Featured
Three Pipe Problems
jasonvnalue
89
8.7k
Designing for humans not robots
tammielis
241
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Product Roadmaps are Hard
iamctodd
34
6.5k
BBQ
matthewcrist
74
7.9k
Code Review Best Practice
trishagee
43
9.3k
Atom: Resistance is Futile
akmur
255
20k
Support Driven Design
roundedbygravity
86
8.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
920
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
10
3.4k
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
Transcript
Monolithic Rails: deal with it Railsclub 2016 Kir Shatrov
Kir Shatrov Developer acceleration @ Shopify " Rails, Capistrano, RubyBench
None
Developer acceleration team
Rails Ruby Developer Tools
None
git clone … brew install postgres brew install redis bundle
install rake db:create
git clone … brew install postgres brew install redis bundle
install rake db:create где-то тут ломается nokogiri
git clone … brew install postgres brew install redis rake
db:create vagrant up
VM creation is slow VM has to be updated every
week from Chef Development in VM is slower VM file system has limitations for frontend stuff
None
The xhyve hypervisor is a port of bhyve to OS
X. It is built on top of Hypervisor.framework in OS X 10.10 Yosemite and higher, runs entirely in userspace, and has no other dependencies.
None
install Homebrew packages provision language and dependencies ruby, node, go
create and prepare database setup Git hooks
git clone … brew install postgres brew install redis rake
db:create dev up
None
Detect dangerous patterns ☠
Detect dangerous patterns changing existing migrations adding new gems changing
application configuration
None
⚓ CI ⚓
50 000
None
None
None
None
None
None
⚰ Rails upgrade
1. Make your application boot (fix gem conflicts) 2. Setup
two Gemfiles and two CI statuses 3. Fix failings tests 4. Deploy to 10% of nodes
None
None
None
1. Make your application boot (fix gem conflicts) 2. Setup
two Gemfiles and two CI statuses 3. Fix failings tests 4. Deploy to 10% of nodes
None
1. Make your application boot (fix gem conflicts) 2. Setup
two Gemfiles and two CI statuses 3. Fix failings tests 4. Gradually deploy
⏱ Application boot ⏱
$ rails new railsclub --skip-spring $ time bundle exec rails
runner "puts 1+1" 2 0.64s user 0.09s system 24% cpu 2.969 total
require 'activerecord' require '/Users/kir/Projects/shopify/vendor/bundle/gems/ activerecord-4.2.7.1/lib/activerecord.rb'
github.com/byroot/bootscale
Rails hacks
block any external calls from inside database transaction instrument Net::HTTP
by host lint database migrations circuit breaker
continuous improvements share as many tools as possible make people
happy
shopify.com/careers
@kirs @kirshatrov Спасибо!