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
capistrano-bundle_rsync使ったらオートスケールが高速化した話
Search
ryonext
June 17, 2015
Programming
2.6k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
capistrano-bundle_rsync使ったらオートスケールが高速化した話
ryonext
June 17, 2015
More Decks by ryonext
See All by ryonext
AWS Lambda の Ruby 対応
ryonext
0
270
TwitterのList編集しやすいやつ作った
ryonext
0
1.8k
validationについて
ryonext
1
850
AWS Lambda と API GatewayでRails使わずに済んだ話
ryonext
8
4.4k
PumaとUnicornで最近自分が理解したこと
ryonext
13
9.6k
Hubot事例
ryonext
1
1.7k
Redisでバッチ処理を冗長化しつつ排他制御
ryonext
0
2.1k
CircleCIとwercker
ryonext
3
1.3k
rubykaigi 3day interactive white board
ryonext
2
400
Other Decks in Programming
See All in Programming
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
350
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
250
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
110
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
170
New "Type" system on PicoRuby
pocke
1
920
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
140
さぁV100、メモリをお食べ・・・
nilpe
0
140
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
3
470
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
10
4.1k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
670
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
My Coaching Mixtape
mlcsv
0
150
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Agile that works and the tools we love
rasmusluckow
331
21k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Technical Leadership for Architectural Decision Making
baasie
3
410
Transcript
$BQJTUSBOPCVOEMF@STZOD ͬͨΒΦʔτεέʔϧ͕ߴ Խͨ͠
ࣗݾհ w Ϣχίϯͱ͍͏ϕϯνϟʔͰ3BJMTॻ͍ͯ·͢ w ΠΧJESZPOFYU
࣍ w DBQJTUSBOPCVOEMF@STZODͱ w ๊͍͑ͯͨ՝ w ղܾͨ͠ํ๏ͱखॱ w ݁Ռ
DBQJTUSBOPCVOEMF@STZODͱ w %F/"ͷ!TPOPUT͞Μ͕࡞ͬͨɺ֤ϊʔυʹ STZODͰσϓϩΠͰ͖Δ(FN w IUUQTHJUIVCDPNTPOPUTDBQJTUSBOP CVOEMF@STZOD
Կ͕͍͍ͷ͔ʁ w ௨ৗͷDBQJTUSBOPͰɺ֤ϊʔυʹTTI͠ɺ֤ ϊʔυͰෛՙͷֻ͔ΔCVOEMFJOTUBMMΛߦ͏ɻ w ͜ͷ(FNɺσϓϩΠ༻ͷαʔόͰCVOEMF JOTUBMMΛߦ͍ɺσϓϩΠޙͷʮՌʯΛ࡞ͬͨ ͋ͱͰɺ֤ϊʔυʹSTZODͰ͢Δ
ಈ࡞Πϝʔδ DBQJTUSBOP࣮ߦαʔό σϓϩΠରαʔό σϓϩΠରαʔό σϓϩΠରαʔό/ TTI ֤αʔόͰCVOEMFJOTUBMM͕ߦΘΕΔ
ಈ࡞Πϝʔδ DBQJTUSBOP࣮ߦαʔό σϓϩΠରαʔό σϓϩΠରαʔό σϓϩΠରαʔό/ DBQJTUSBOP࣮ߦαʔόͰ CVOEMFJOTUBMMͨ͠ͷΛ STZODͰ͢Δ σϓϩΠର
͜ΕʹΑΓ w ֤ϊʔυͰDQVෛՙͷ͔͔Δ࡞ۀ͕ߦΘΕͳ͍ ͷͰϦιʔεʹ͍͞͠ w ͕૿͖͑ͯͨͱ͖ɺ͕͘ͳΓʹ͍͘
ͦͷଞͷϝϦοτ w ҰσϓϩΠͨ͠όʔδϣϯσϓϩΠαʔό ʹอଘ͞Ε͍ͯΔͨΊɺಉ͡όʔδϣϯͷσϓ ϩΠ͕ૣ͍ w ͜Ε͕Φʔτεέʔϧʹޮ͘
๊͍͑ͯͨ՝ w ࣍ͷΑ͏ͳΈͰΦʔτεέʔϧΛઃఆ͍ͯ͠ ·ͨ͠
ΦʔτεέʔϦϯά༻".*Λ࡞ ΦʔτεέʔϦϯ ά༻".* ΠϯελϯεΛ৽ن࡞͠ɺΞϓϦಈ࡞ʹඞཁͳϛυϧΣ Ξʢ3VCZ/HJOYͳͲʣΛೖΕͨͷΛ".*Խ ΞϓϦ༻ͷ "OTJCMF
ىಈ࣌ʹ6TFS%BUBͰҎԼͷॲ ཧΛ࣮ߦ ΦʔτεέʔϦϯ ά༻".*͔Β্ཱͪ ͕ͬͨΠϯελϯε (JU)VC͔ΒΞϓϦͷϦϙδτϦΛऔಘ औಘͨ͠ϦϙδτϦ͔Βɺࣗʹରͯ͠DBQEFQMPZΛ࣮ߦ
w ϝϦοτ w ؆୯ w σϝϦοτ w ճCVOEMFJOTUBMM͕ΔͷͰ͍ w ͱݴ͏͔ճͰ͍
͜ΕʹΑΓ w ฏۉͯ͠ڧͷ͕͔͔͍࣌ؒͬͯͨ
w ࠷৽ͷBQQαʔό͔Β".*Λ࡞ͬͯɺىಈͯ͠ 6OJDPSOΛ্ཱͪ͛Δɺͱ͍͏Γํ͋Δ͚ Ͳ w ".*ࠩ͠ସ͑ BVUPTDBMJOHHSPVQࠩ͠ସ͑· ͰɺσϓϩΠͱηοτͰΔͷϋʔυϧߴ͍ ʢҰԠࣗಈԽͰ͖Δ͔ʣ
ղܾͨ͠ํ๏ͱखॱ
͜͏ߟ͑ͨ w σϓϩΠ͞Ε͍ͯΔͷNBTUFSΛอ͓ͬͯΓɺ ඞͣDBQJTUSBOPͰσϓϩΠ͍ͯ͠ΔͷͰ w BVUPTDBMFͰىಈ࣌ʹɺDBQJTUSBOP CVOEMF@STZODͰσϓϩΠ͢ΕɺࠓNBTUFSʹ ͋ΔͷΛSTZOD͢Δ͚ͩͳͷͰૣ͍ͷͰʁ
͜͏͍͏ߏʹ σϓϩΠαʔό $JSDMF$* "QQαʔό "QQαʔό BVUPTDBMF ࣌ʣ σϓϩΠґཔ ݱࡏՔಇதͷ"QQαʔόʹσϓϩΠ ࣗʹσϓϩΠґཔ
σϓϩΠ
$JSDMF$*͔ΒσϓϩΠ͠ͳ ͍ཧ༝ w ࡞ऀͷ!TPOPUT͞Μͷϒϩάʹهड़͞Ε͍ͯ ·͕͢ɺσϓϩΠαʔόͱ"QQαʔόͷΞʔΩ ςΫνϟ͕ಉ͡Ͱ͋Δඞཁ͕͋ΔͨΊɻ w σϓϩΠαʔόͰCVOEMFJOTUBMM͔ͯ͠Β STZODͰSVCZΞϓϦΛࢃ͘DBQJTUSBOP֦ு ࡞ͬͨTPOPUTCMPHIUUQCMPHMJWFEPPSKQ
TPOPUTBSDIJWFTIUNM
௨ৗσϓϩΠ࣌ͷεΫϦϓτ 15 production: 16 branch: master 17 commands: 18 -
ssh {Ϣʔβ}@{σϓϩΠαʔό} 'source ~/.bash_profile; branch=master stage=production sh' < deploy.sh DJSDMFZNM
௨ৗσϓϩΠ࣌ͷεΫϦϓτ 1 #!/bin/sh 2 3 mkdir -p deploy/{app_name} 4 5
if [ ! -d ./deploy/{app_name}/$branch ] ; then 6 git clone
[email protected]
:{github_user}/{github_repo} ~/deploy/ {app_name}/$branch 7 fi 8 cd /home/ubuntu/deploy/{app_name}/$branch 9 git fetch 10 git checkout -f origin/$branch 11 bundle 12 bundle exec cap $stage deploy EFQMPZTI
௨ৗσϓϩΠ࣌ͷεΫϦϓτ 1 set :stage, :production 2 set :branch, ENV['BRANCH_NAME'] ||
'master' 3 set :rails_env, 'production' 4 5 require 'aws-sdk' 6 7 AWS.config( 8 access_key_id: ENV['AWS_ACCESS_KEY_ID'], 9 secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 10 region: ‘{region}’ 11 ) 12 13 instances = AWS.ec2.instances.with_tag(:Name, ‘{instance_name}’).select{|i| i.status == :running}.map(&:dns_name) 14 15 role :app, instances, user: 'ubuntu' 16 role :web, instances, user: 'ubuntu' 17 role :db, instances.first, user: 'ubuntu' DPOpHEFQMPZQSPEVDUJPOSC
Φʔτεέʔϧ࣌ 1 #!/bin/bash 2 sudo su - {Ϣʔβ} -c "ssh
{Ϣʔβ}@{σϓϩΠαʔό} -o StrictHostKeyChecking=no 'source ~/.bash_profile; HOST=`hostname` branch=master stage=autoscale sh /home/ubuntu/deploy/{app_name}/ master/deploy.sh’” >> /tmp/autoscale.log 6TFS%BUB
Φʔτεέʔϧ࣌ DPOpHEFQMPZBVUPTDBMFSC 1 set :stage :production 2 set :rails_env, 'production'
3 set :host, ENV['HOST'] 4 5 server fetch(:host), user: 'ubuntu', roles: %w{app web db}
݁Ռ w ΦʔτεέʔϧͰֻ͔Δ࣌ؒʢ"84Ͱ "VUP4DBMJOH(SPVQΛ ͨ͠ͱ͜Ζ͔Βɺ&-#Ͱ αʔϏεΠϯ͢Δ·Ͱͷ࣌ؒʣ w #FGPSF w ඵ
w "GUFS w ඵ
͜͏͔͙ͭΜͩʂ w ࣮࣭ɺΦʔτεέʔϧͰ૿͔ͯ͠Βɺ࣮ࡍ ʹαʔό͕ಈ͘Α͏ʹͳΔ·Ͱʹ͔͔Δͷ ͰɺσϓϩΠ࡞ۀࣗମҎͰऴΘ͍ͬͯΔ ͜ͱʹɻ
·ͱΊ w ճCVOEMFJOTUBMM͢Δࠓ·ͰͷΓํ͕ѱ͔ͬ ͨͱ͍͏ͷ͋Γ·͕͢ɺͦΕͰઈେͳޮՌ Λൃش͢Δ͜ͱʹɻ
ಉ͡Α͏ͳ͜ͱ͕Ͱ͖Δϓϩ μΫτ w TʹΞοϓϩʔυͯ͠ɺσϓϩΠ࣌ʹQVMMͯ͘͠Δͱ͍͏ͷ w IUUQTHJUIVCDPNTPSBINBNJZB w IUUQTHJUIVCDPNGVKJXBSBTUSFUDIFS w ͜Ε!TPOPUT͞Μʹհͯ͠ΒͬͨͷͰ͕͢ɺDFSGDPOTVM͕ඞཁͩͬͨͷͰɺ·ͣ
DBQJTUSBOP͚ͩͰͰ͖Δຊ(FNͰͬͯΈ·ͨ͠ɻ w ࠓͬͯΔαʔϏε͕ͨͬͯେنʹͳ͖ͬͯͨΒ࠶ݕ౼ͯ͠Έ·͢ɻ