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
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
280
TwitterのList編集しやすいやつ作った
ryonext
0
1.8k
validationについて
ryonext
1
860
AWS Lambda と API GatewayでRails使わずに済んだ話
ryonext
8
4.4k
PumaとUnicornで最近自分が理解したこと
ryonext
13
9.6k
Hubot事例
ryonext
1
1.7k
Redisでバッチ処理を冗長化しつつ排他制御
ryonext
0
2.2k
CircleCIとwercker
ryonext
3
1.3k
rubykaigi 3day interactive white board
ryonext
2
410
Other Decks in Programming
See All in Programming
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
430
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
120
Webの地図
yosuke_furukawa
PRO
5
3.9k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
130
アクセシビリティから考える情報設計
high_g_engineer
0
350
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
520
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
150
AIエージェント時代のコードレビューを設計する
nogu66
6
2.6k
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
320
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
2
270
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
Featured
See All Featured
Designing for Performance
lara
611
70k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
Leo the Paperboy
mayatellez
9
2.3k
Un-Boring Meetings
codingconduct
0
410
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
690
Practical Orchestrator
shlominoach
191
12k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Balancing Empowerment & Direction
lara
6
1.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
210
エンジニアに許された特別な時間の終わり
watany
108
250k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
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 ࠓͬͯΔαʔϏε͕ͨͬͯେنʹͳ͖ͬͯͨΒ࠶ݕ౼ͯ͠Έ·͢ɻ